[Home] [By Thread] [By Date] [Recent Entries]
Hi all,
Is it possible to get the name of an attribute in the same way, as with the name() function for elements? Problem: When merging to files - in my case RelaxNG with some proprietary extensions residing in a seperate file - I use a key function to retrieve the content of an element node of the extension file: <xsl:key name="insert.template.elem" match="*" use="name()"/> and applying it this way: <xsl:template match="@* |node()" mode="copy.rng" > <xsl:choose> <xsl:when test="name()='element' "> <xsl:element name="{name()}"> <xsl:variable name="elem.name" select="@name"/> <xsl:attribute name="name"><xsl:value-of select="$elem.name"/> </xsl:attribute> <sm:map> <sm:item table="kennungen"> <xsl:attribute name="field"> <xsl:for-each select="$insertTemplate"><xsl:value-of select="key('insert.template.elem',$elem.name)"/></xsl:for-each> </xsl:attribute> </sm:item> </sm:map> <xsl:apply-templates mode="copy.rng"/> </xsl:element> </xsl:when> ... But there is also information stored in attributes I need to retrieve in a similar way. How can this be accomplished? I'm imagining something like the following: <xsl:key name="insert.template.attr" match="@*" use="attr-name()"/>
^^^^ ^^^^
something like this!
and then applying it again this way:... <xsl:when test="name()='attribute' "> <xsl:element name="{name()}"> <xsl:variable name="attr.name" select="@name"/> <xsl:attribute name="name"><xsl:value-of select="$attr.name"/> </xsl:attribute> <sm:map> <sm:item table="kennungen"> <xsl:attribute name="field"> <xsl:for-each select="$insertTemplate"><xsl:value-of select="key('insert.template.attr',$attr.name)"/></xsl:for-each> </xsl:attribute> </sm:item> </sm:map> <xsl:apply-templates mode="copy.rng"/> </xsl:element> </xsl:when> ...
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|

Cart



