This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
for-each -- strange multiplication effects
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: [xsl] for-each -- strange multiplication effects
- From: mario dot jeckle at daimlerchrysler dot com
- Date: Tue, 16 Jan 2001 14:12:43 +0100
- Cc: <elke dot e dot meier at daimlerchrysler dot com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hello,
discovered some strange effect using for-each.
When the predicate is true for one element that matches the node set (say
"//x") specified by the select attribute of for-each it it repeated count(//x)
times even when the predicate is false.
Stylesheet:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:template match="test">
<xsl:for-each select="//test[@x]">
this should only happen once!
<xsl:value-of select="@x"/>
</xsl:for-each>
</xsl:template>
</xsl:transform>
Input:
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<test/>
<test x="42"/>
<test y="99"/>
<test/>
</doc>
Output:
<?xml version="1.0" encoding="UTF-8"?>
this should only happen once!
42
this should only happen once!
42
this should only happen once!
42
this should only happen once!
42
Am I misinterpreting XPaths node set expression here?
IMHO the body of for-each should only be executed for all nodes which adhere to
the specified select pattern including its predicate.
Mario
-----------------------
Mario Jeckle
mario.jeckle@daimlerchrysler.com
DaimlerChrysler Corporate Research
DaimlerChrysler Forschungszentrum Ulm
URL: http://www.jeckle.de
XML Resource Center:
-----------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list