xsl-list
[Top] [All Lists]

RE: FOR-EACH based on criteria and number output

2004-02-18 21:30:10
you need to locate all ITEM nodes
-- //ITEM

then check the very preceding TITLE node 
-- [preceding::TITLE[1] != $title1

finally, use position() to give you the numbers


Good luck.




<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:msxsl="urn:schemas-microsoft-com:xslt">

<xsl:variable name="title1" select="'Raging River'"/>


<xsl:template match="/">
        <xsl:for-each select="//ITEM[preceding::TITLE[1] != $title1]">
                <xsl:value-of select="concat(position(), '. ', .)"/><br/>
        </xsl:for-each>
</xsl:template>




</xsl:stylesheet>
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
tsterlin(_at_)email(_dot_)arizona(_dot_)edu
Sent: Wednesday, February 18, 2004 10:28 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: 

Hello,
   I'm attempting to produce an HTML document from an XML one using XSLT.  I
need to make a numbered list of a certain tag's(<ITEM>) info contained
within
the XML document.  This challenge here is that I only want certain <ITEM>s
to
be contained in my list while others should be omitted, however all <ITEM>s
have the same ancestry.  The only distinguishing element is a sibling tag
known
as <TITLE> with different literal values stored in them.  It is the value
stored in this <TITLE> that needs to determine the <ITEM>'s inclusion to or
exclusion from the list:

<GROUP>
  <PARA0>
    <TITLE>Magic Mountains</TITLE>
    <STEP1>
      <ITEM>This is the first item.</ITEM>
    </STEP1>
    <STEP1>
      <ITEM>This is the second item.</ITEM>
    </STEP1>
  </PARA0>
  <PARA0>
    <TITLE>Raging River</TITLE>
    <STEP1>
      <ITEM>I don't want this item.</ITEM>
    </STEP1>
    <STEP1>
      <ITEM>I don't want this item either.</ITEM>
    </STEP>
  </PARA0>
  <PARA0>
    <TITLE>Spectacular Sky</TITLE>
    <STEP1>
      <ITEM>This is the third item.</ITEM>
    </STEP1>
    <STEP1>
      <ITEM>This is the fourth item.</ITEM>
    </STEP1>
  </PARA0>
</GROUP>

---------------The HTML output should be as follows:
             1.  This is the first item.
             2.  This is the second item.
             3.  This is the third item.
             4.  This is the fouth item.

Any ideas?







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



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



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