|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: XPath predicate test and parameter problem
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: 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








