[xsl] strange for-each/list behavior

Subject: [xsl] strange for-each/list behavior
From: Carl Yu <carl.yu@xxxxxxxxxxxx>
Date: Wed, 3 Sep 2003 14:33:30 -0700 (PDT)
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[@name=$i]/@name"/>
<xsl:value-of select="$list[@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[@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


Current Thread