Re: [xsl] Accessing specific repetitive node

Subject: Re: [xsl] Accessing specific repetitive node
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 05 Mar 2004 07:15:58 -0500
At 2004-03-05 11:47 +0000, Mark Williams wrote:
The XML looks like this

<DATA>
    <Table ID="2">
        <Data>
            <Code>1</Code>
            <Code>2</Code>
            <Code>3</Code>
            <Code>4</Code>
            <Code>5</Code>
           </Data>
    </Table>
</DATA>

I need to access the first 1, 3 and 5 items.

Is it that you need to return all odd-numbered items? Or do you need just the first, third and fifth items of all sets?


I have tried it in the
following ways:

 <xsl:value-of select="DATA/Table[@ID='2']/Data/Code[1]" />  //this works
okay
 <xsl:value-of select="DATA/Table[@ID='2']/Data/Code[position()=1]" />
//this also works okay

Those two are equivalent: the first is the abbreviation of the second.


<xsl:value-of> returns only a single item so you cannot use it to return multiple items.

To access every odd item in the list you could use modulus arithmetic:

  <xsl:for-each select="DATA/Table[@ID='2']/Data/Code[position() mod 2 = 1]">
    <xsl:if test="position() > 1">, </xsl:if>
    <xsl:value-of select="."/>
  </xsl:for-each>

I hope this helps.

............................... Ken

--
US XSL training: Washington,DC March 15; San Francisco,CA March 22
World-wide on-site corporate, government & user group XML training
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc


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



Current Thread