|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Keys
On Wed, 8 Sep 2004 22:43:07 -0700, Karl J. Stubsjoen
<karl@xxxxxxxxxxxxxxxxxxxx> wrote:
> How do you manage this sort of key:
> <xsl:key name="attType"
> match="/root/*/xml/s:Schema/s:ElementType/s:AttributeType"
> use="/root/*[@name()]"/>
>
> I am trying to create a "USE" on a specific node who's name can very so:
>
> root/class
> root/house
> root/bird
>
> This select works great:
> <xsl:for-each
> select="/root/*[name()=$TABLE_NAME]/xml/s:Schema/s:ElementType/s:AttributeTy
> pe">
>
> Where $TABLE_NAME is a variable.
This can be done in a straight way and no variable reference is needed
in the xsl:key instruction.
Use:
<xsl:key name="kAtt" match="attributeType"
use="name(../../../..)"/>
and
key('kAtt', '$vSomeName')
For example (namespaces from your example stripped intentionally):
This transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="kAtt" match="attributeType"
use="name(../../../..)"/>
<xsl:template match="/">
<keyResults>
<xsl:copy-of select="key('kAtt', 'a')"/>
<xsl:copy-of select="key('kAtt', 'b')"/>
<xsl:copy-of select="key('kAtt', 'c')"/>
</keyResults>
</xsl:template>
</xsl:stylesheet>
when applied on this source.xml:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="kAtt" match="attributeType"
use="name(../../../..)"/>
<xsl:template match="/">
<keyResults>
<xsl:copy-of select="key('kAtt', 'a')"/>
<xsl:copy-of select="key('kAtt', 'b')"/>
<xsl:copy-of select="key('kAtt', 'c')"/>
</keyResults>
</xsl:template>
</xsl:stylesheet>
produces the wanted result:
<keyResults>
<attributeType>attA-1</attributeType>
<attributeType>attA-2</attributeType>
<attributeType>attB-1</attributeType>
<attributeType>attB-2</attributeType>
<attributeType>attC-1</attributeType>
</keyResults>
Cheers,
Dimitre Novatchev.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








