[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: RE: XPath predicate test and parameter problem
Thank you Bryan, Dimitre, and Michael. Did you hear that? It was me administering a dope slap to myself. No, Michael, I wasn't imagining that variables in XPath are macros. I just wasn't thinking too clearly. -- Charles Knell cknell@xxxxxxxxxx - email -----Original Message----- From: bryan.s.schnabel@xxxxxxxxxxxxxx Sent: Tue, 30 Sep 2003 10:09:52 -0700 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: XPath predicate test and parameter problem 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@xxxxxxxxxx [mailto:cknell@xxxxxxxxxx] Sent: Tuesday, September 30, 2003 9:42 AM 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 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
|