[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Trying to figure out the child::item[position()=1]
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: 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
|
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
|