RE: [xsl] key definition

Subject: RE: [xsl] key definition
From: "Steve Renshaw" <renshaw_steve@xxxxxxxxxxx>
Date: Sun, 28 Oct 2001 22:18:27 +0000
I tried that key definition and it didn't work all the time.
Consider two test cases:

1) select all <item>'s whose data element has @id=1 and text()='alpha'.

expect first and second <item>'s

2) select all <item>'s whose data element has @id=2 and text()='gamma'.

expect first and third <item>'s

Only the first test case works as intended. Enclosed is XML and XSLT.
This is what I expect to see from XSLT:

 alpha, gamma
 alpha, delta
 -------------
 alpha, gamma
 beta, gamma

What is wrong?

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="GroupingKeyQuestion.xsl"?>
<items>
<item>
 <data id="1">alpha</data>
 <data id="2">gamma</data>
</item>
<item>
 <data id="1">alpha</data>
 <data id="2">delta</data>
</item>
<item>
 <data id="1">beta</data>
 <data id="2">gamma</data>
</item>
</items>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:key name="MyKey" match="/items/item"
use="concat(data/@id,data/text())" />


<xsl:template match="/">
 <xsl:for-each select="key('MyKey',concat('1','alpha'))">
  <xsl:value-of select="data[@id='1']"/>,
  <xsl:value-of select="data[@id='2']"/><br/>
 </xsl:for-each>
 <hr/>
 <xsl:for-each select="key('MyKey',concat('2','gamma'))">
  <xsl:value-of select="data[@id='1']"/>,
  <xsl:value-of select="data[@id='2']"/><br/>
 </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread