This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: key definition


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]