This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
using position() with XPath
- To: XSL-List at lists dot mulberrytech dot com
- Subject: [xsl] using position() with XPath
- From: Michael Sobczak <msobczak at yahoo dot com>
- Date: Tue, 11 Sep 2001 06:05:23 -0700 (PDT)
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi,
I need to use position() to get the position of
an ancestor to the current <childMenu> node.
Using the following xml:
<?xml version="1.0" encoding="UTF-8"?>
<menus>
<parentMenu type="upper" title="Main Menu">
<childMenus>
<childMenu title="News"/>
<childMenu title="Discussions"/>
</childMenus>
</parentMenu>
<parentMenu type="lower" title="International
Menu">
<childMenus>
<childMenu title="Distribution"/>
<childMenu title="World Headquarters"/>
</childMenus>
</parentMenu>
</menus>
I created the the following template for the
<childMenu> node:
<xsl:template match="childMenu[@title]">
<LI><xsl:value-of
select="position(ancestor::parentMenu)"/>_<xsl:value-of
select="position()"/>. <xsl:value-of
select="@title"/></LI>
<xsl:apply-templates/>
</xsl:template>
However, both of the position() calls return the
same value, like so:
1. Main Menu
1_1. News
2_2. Discussions
2. International Menu
1_1. Distribution
2_2. World Headquarters
When I change the first value-of in the template
to use "1 +
count(parent::*/preceding-sibling::*)" as
described in the FAQs, I get this:
1. Main Menu
1_1. News
1_2. Discussions
2. International Menu
1_1. Distribution
1_2. World Headquarters
What do I need to do to determine the position of
the current node's ancestor?
Thank you for your help,
- Mike.
__________________________________________________
Do You Yahoo!?
Get email alerts & NEW webcam video instant messaging with Yahoo! Messenger
http://im.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list