Perhaps a more straight forward way to get the position relative to the nr
element might be to use the descendant axis.
Just changing your code a bit. . .
So this:
descendant::movie[position() <= $thisMany]
instead of this:
//movie[position() <=number($thisMany)]
and this:
descendant::movie[position() >number($thisMany)]
instead of this:
//*[name()='movie'][position() >number($thisMany)]
gets you something like this:
<tr>
<td>
<br>
<b><i>Charlie's Angles: Full Throttle</i></b>
<br>
<b><i>28 Days Later</i></b>
<br>
<b><i>The Santa Clause 2</i></b>
</td>
<td>
<br>
<b><i>Northfork</i></b>
<br>
<b><i>Rudy: The Rudy Giuliani Story</i></b>
<br>
<b><i>Russian Ark</i></b>
</td>
</tr>
-----Original Message-----
From: Cynthia DeLaria [mailto:cdelaria(_at_)quris(_dot_)com]
Sent: Monday, December 22, 2003 1:12 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Cc: btusdin(_at_)mulberrytech(_dot_)com
Subject: [xsl] Finding position of a node relative to the root instead of
the parent node
Good Day,
I have searched the xsl list unsuccessfully for an answer to this
question, although I'm sure something like this has been addressed. I
think I'm just not sure what to search on to find it.
I have the following xml snippet:
<nr>
<featured>
<movie title="Charlie's Angles: Full
Throttle">Description</movie>
<movie title="28 Days Later">Description</movie>
<movie title="The Santa Clause 2">Description</movie>
</featured>
<also_new>
<movie title="Northfork" />
<movie title="Rudy: The Rudy Giuliani Story" />
<movie title="Russian Ark" />
</also_new>
</nr>
Basically, in the fully-flushed out version of the XML, the <featured>
movies have images and full descriptions, while the <also_new> movies
have only a title and rating. What I need to do is find a way to find
the position of each <movie> node relative to the root, as I need to
create a "print the new releases" page that lists all new releases in
two columns. This is what I tried, but it gives me the position based on
the parent (i.e. <also_new> or <featured>) not relative to the root.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" />
<xsl:template match="/nr">
<html>
<head>
<title>New Releases E-Newsletter</title>
<head>
<body bgcolor="#ffffff" text="#000000" link="#023f7e" alink="#ff0000"
vlink="#023f7e">
Just print out this list.<br />
<table width="100%">
<xsl:variable name="thisMany"><xsl:value-of
select="(count(//*[name()='movie']) div 2)" /></xsl:variable>
<tr>
<td valign="top" width="50%" class="body2">
<br />
<xsl:for-each select="//movie[position() <=
number($thisMany)]">
<b><i><xsl:value-of select="./@title" /></i></b><br />
</xsl:for-each>
<br />
</td>
<td valign="top" width="50%" class="body2">
<br />
<xsl:for-each select="//*[name()='movie'][position() >
number($thisMany)]">
<b><i><xsl:value-of select="./@title" /></i></b><br />
</xsl:for-each>
<br />
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Is it possible to get the position relative to the root node? It seems
like this should be very simple, but all of the things I have tried have
not worked to produce the intended outcome.
Thank you!
Cynthia
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list