xsl-list
[Top] [All Lists]

[xsl] Trying to figure out the child::item[position()=1] syntax

2006-07-10 13:52:05
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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>