xsl-list
[Top] [All Lists]

Re: Finding position of a node relative to the root instead of the parent node

2003-12-22 18:17:48
You may try the following XSL --

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>
<xsl:template match="/nr">
<xsl:variable name="result">
  <xsl:for-each select="featured/movie">
    <a/>
  </xsl:for-each>
  <xsl:for-each select="also_new/movie">
    <a/>
  </xsl:for-each>
</xsl:variable>

<xsl:for-each select="msxsl:node-set($result)/a">
   <xsl:value-of select="position()"/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul

--- Cynthia DeLaria <cdelaria(_at_)quris(_dot_)com> wrote:
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() &lt;=
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() &gt;
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
ve:  http://www.mulberrytech.com/xsl/xsl-list



__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list