This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: key with restricting the scope of use attribute
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] key with restricting the scope of use attribute
- From: Dan Diebolt <dandiebolt at yahoo dot com>
- Date: Fri, 11 May 2001 06:48:35 -0700 (PDT)
- Reply-To: xsl-list at lists dot mulberrytech dot com
Using my original XML, consider just two nodes in the
traversal: root/a[1]/b[1] and root/c/a[1]/b[1]. Now
compare the difference between using two different keys:
MyKey1 is built from just @x:@y and MyKey2 is built from
generate-id():@x:@y. If while at each of these two nodes
I determine I need to retreive all nodes matching @x:@y='1:1'
then, the second key returns some "out-of-context" nodes
that happen to have @x:@y='1:1'. Maybe my working is inartful,
but does this help clarify what I am trying to do? The procedure
does work, but as you can see it is complicated and that is why
I am asking for advice.
Dan
MyKey1:@id=1
------------------------
MyKey2:@id=1
MyKey2:@id=4
MyKey2:@id=6
MyKey2:@id=7
MyKey2:@id=9
MyKey2:@id=17
MyKey2:@id=18
MyKey2:@id=21
------------------------
------------------------
MyKey1:@id=9
------------------------
MyKey2:@id=1
MyKey2:@id=4
MyKey2:@id=6
MyKey2:@id=7
MyKey2:@id=9
MyKey2:@id=17
MyKey2:@id=18
MyKey2:@id=21
Regards,
Dan
----------------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="MyKey1" match="a/b" use="concat(generate-id(),':',@x,':',@y)"/>
<xsl:key name="MyKey2" match="a/b" use="concat(@x,':',@y)"/>
<xsl:template match="/">
<xsl:apply-templates select="/root/a[1]/b[1]"/>
<hr/><hr/>
<xsl:apply-templates select="/root/c/a[1]/b[1]"/>
</xsl:template>
<xsl:template match="a/b">
<xsl:for-each select="key('MyKey1',concat(generate-id(),':','1:1'))">
MyKey1:@id=<xsl:value-of select="@id"/><br/>
</xsl:for-each>
<hr/>
<xsl:for-each select="key('MyKey2','1:1')">
MyKey2:@id=<xsl:value-of select="@id"/><br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list