|
Subject: Re: [xsl] Keys From: Dimtre Novatchev <dnovatchev@xxxxxxxxx> Date: Thu, 9 Sep 2004 21:21:49 +1000 |
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.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Keys, Michael Kay | Thread | Re: [xsl] Keys, Dimtre Novatchev |
| [xsl] XSLT - Multiple Level Groupin, Arun Sinha | Date | RE: [xsl] Parent, Vasu Chakkera |
| Month |