Subject: RE: RE: [xsl] XPath predicate test and parameter problem From: cknell@xxxxxxxxxx Date: Tue, 30 Sep 2003 13:27:22 -0400 |
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: [xsl] 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: [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 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XPath predicate test and , bryan . s . schnabel | Thread | [xsl] Selecting First Letter, Jeffrey Winter |
[xsl] java - standard implementatio, Robert Koberg | Date | [xsl] Selecting First Letter, Jeffrey Winter |
Month |