Subject: RE: [xsl] Trying to figure out the child::item[position()=1] syntax From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 10 Jul 2006 22:02:23 +0100 |
Your path expression: menuItems[child::menuItem[position()=1]/pageID = $pageID] can be simplified to menuItems[menuItem[1]/pageID = $pageID] to be a bit more idiomatic. The path expression selects a set of nodes (probably a set consisting either of a single menuItems node, or nothing). When you use the path expression in an xsl:if instruction, the node-set is converted to a boolean: true if there is at least one node, otherwise false. When you use the path expression in an xsl:value-of instruction, the node-set is converted to a string: if the node-set is empty, the result is ""; if the node-set contains a single element, the result is the string-value of that element, which is the concatenation of all its descendant text nodes. Hope that makes it clearer. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Austin, Darrel [mailto:Darrel.Austin@xxxxxxxxxxxxxxxxxx] > Sent: 10 July 2006 21:52 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Trying to figure out the > child::item[position()=1] syntax > > I use XSL sporadically and, as such, haven't quite figured > out all the syntax yet. > > Here's a snippet of my XML: > > <menuItems> > <menuItem> > <pageID>1</pageID> > </menuItem> > <menuItem> > <pageID>2</pageID> > </menuItem> > </menuItems> > > In my XSL, I want to determine if the 'pageID' value of the > first menuItem (and ONLY the first menuItem) matches a > particular value that I am passing into the XSL file. > > From what I can tell, I need to use the > child::item[position()=1] syntax. Is that correct? > > This is what I've come up with: > > <xsl:if test="menuItems[child::menuItem[position()=1]/pageID > = $pageID]"> > > That seems to work. BUT, what I am a bit confused of is if I > write the above as a value-of: > > <xsl:value-of > select="menuItems[child::menuItem[position()=1]/pageID = $pageID]"/> > > If the node doesn't exist, I get nothing (I assume a 'false' > value in the IF comparison). If it does exist, I get the > entire contents of the XML file. Is that normal? I guess my > confusion is why does the if statement appear to return a > true/false while the value-of statement returns nothing or > the entire XML file? > > -Darrel
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Trying to figure out the chil, Austin, Darrel | Thread | [xsl] XML->HTML tables with blank c, Carmen Pancerella |
RE: [xsl] Obtaining Graphic File W, Michael Kay | Date | Re: [xsl] Obtaining Graphic File W, Frans Englich |
Month |