xsl-list
[Top] [All Lists]

RE: what index is the current item in a list?

2005-08-02 13:19:16
In XSLT 2.0:

<xsl:number select="parent::Item" count="*[Type='type2']"/>

In 1.0:

<xsl:for-each select="parent::Item">
  <xsl:number count="*[Type='type2']"/>
</xsl:for-each>

Or if you prefer:

count(parent::Item/preceding-sibling::*[Type='type2'])

Michael Kay
http://www.saxonica.com/ 



-----Original Message-----
From: Lee Breisacher [mailto:LBreisacher(_at_)seagullsoftware(_dot_)com] 
Sent: 02 August 2005 20:20
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] what index is the current item in a list?

I want to do something that seems like it should be easy, but I cannot
figure it out.

I have a list of items like this in the input XML:
 
<Item>
   <Type>type1</Type>
   .. Other elements here..
</Item>
<Item>
   <Type>type2</Type>
   .. Other elements here..
</Item>
<Item>
   <Type>type1</Type>
   .. Other elements here..
</Item>
<Item>
   <Type>type3</Type>
   .. Other elements here..
</Item>
<Item>
   <Type>type2</Type>
   .. Other elements here..
</Item>

Each "Type" is handled differently, so the templates look like this:

<xsl:template match="*[Type = 'type1']">
      .. Do type1 stuff here..
</xsl:template>

<xsl:template match="*[Type = 'type2']">
      .. Do type2 stuff here..
</xsl:template>

<xsl:template match="*[Type = 'type3']">
      .. Do type3 stuff here..
</xsl:template>


Now, further down in the input XML is another list of items 
related to,
say, type2 Items, in the same order as in the Item list, like this:

<Type2Info>
    .. Elements related to the first type2 item is here..
</Type2Info>
<Type2Info>
    .. Elements related to the second type2 item is here..
</Type2Info>


So, I'm inside the second match template above and I want to 
get at the
proper Type2Info element. Logically, what I want to do is this:  "Get
the Nth Type2Info node where N is the ordinal number of the type2 Item
within the list of type2 Items."

I can make a list of just the type2 Items, that's easy. And I 
can access
the Nth Type2Info item, that's easy. I can even find the current type2
Item within the list of type2 Items, but I can't see how to determine
what N is. I've studied position() and xml:number and 
count(), etc. but
nothing seems quite what I need.

Help!

Thanks,

Lee









--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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