Subject: RE: [xsl] XPath predicate test and parameter problem From: "Michael Kay" <mhk@xxxxxxxxx> Date: Tue, 30 Sep 2003 18:10:35 +0100 |
because you don't have any states called '$st'. Try removing the quotes. select="row[state=$st]/city" (Perhaps you are imagining that variables in XPath are macros, implemented using textual substitution? They aren't: they are regular values: you can use a variable reference anywhere you can use an expression, and nowhere else). Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > cknell@xxxxxxxxxx > Sent: 30 September 2003 17:42 > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > 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@xxxxxxxxxx - 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XPath predicate test and para, cknell | Thread | [xsl] Re: XPath predicate test and , Dimitre Novatchev |
RE: [xsl] XPath predicate test and , bryan . s . schnabel | Date | [xsl] Re: XPath predicate test and , Dimitre Novatchev |
Month |