If you remove the single quotes in the predicate, like this,
<xsl:value-of select="row[state=$st]/city" />
you get,
<?xml version="1.0" encoding="UTF-8"?>Milwaukee
-----Original Message-----
From: cknell(_at_)onebox(_dot_)com [mailto:cknell(_at_)onebox(_dot_)com]
Sent: Tuesday, September 30, 2003 9:42 AM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XPath predicate test and parameter problem
This is making me crazy. I can't figure out where I'm failing.
Given this data document:
<?xml version="1.0" encoding="UTF-8" ?>
<rowset>
<row>
<city>Des Moines</city>
<state>IA</state>
</row>
<row>
<city>Pittsburgh</city>
<state>PA</state>
</row>
<row>
<city>Milwaukee</city>
<state>WI</state>
</row>
</rowset>
Why does this stylesheet produce the output "Milwaukee",
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<xsl:apply-templates select="rowset">
<xsl:with-param name="st" select="'WI'" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="rowset">
<xsl:param name="st" />
<xsl:value-of select="row[state='WI']/city" />
</xsl:template>
</xsl:stylesheet>
and this one, only '<?xml version="1.0" encoding="UTF-8" ?>',
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<xsl:apply-templates select="rowset">
<xsl:with-param name="st" select="'WI'" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="rowset">
<xsl:param name="st" />
<xsl:value-of select="row[state='$st']/city" />
</xsl:template>
</xsl:stylesheet>
To save you the trouble of minutely examining the two, the difference is
that in the one that doesn't work the way I think it should, I use the value
of the parameter to test the content of the "state" element, where in the
one that produces the output I want, I use the literal string 'WI'.
Thanks.
--
Charles Knell
cknell(_at_)onebox(_dot_)com - email
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list