Can anyone explain why this happens?
--- in.xml ---
<root>
<value name="A">
<other name="B"/>
</value>
<value name="C">
<other name="D"/>
<other name="D"/>
<other name="D"/>
<other name="B"/>
</value>
<value name="C"/>
<value name="C"/>
<value name="C"/>
<value name="A"/>
<value name="A"/>
<value name="A"/>
</root>
--------------
--- strange1.xsl ---
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:variable name="list" select="/root/value | /root/value/other"/>
<xsl:template match="/root">
<xsl:for-each select="$list">
<xsl:variable name="i" select="@name"/>
<xsl:variable name="j" select="$list[(_at_)name=$i]/@name"/>
<xsl:value-of select="$list[(_at_)name=$i]/@name"/><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:transform>
-------------------
--- strange2.xsl ---
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:variable name="list" select="/root/value | /root/value/other"/>
<xsl:template match="/root">
<xsl:for-each select="$list">
<xsl:variable name="i" select="@name"/>
<xsl:variable name="j" select="$list[(_at_)name=$i]/@name"/>
<xsl:value-of select="$j"/><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:transform>
-------------------
While transforming in.xml with strange1.xsl will a singular "A", in.xml
transformed with strange2.xsl will reproduce the entire list of letters from
in.xml.
This was executed using Xalan version 2.4.1.
Carl
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list