Subject: RE: [xsl] what index is the current item in a list? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 2 Aug 2005 21:19:16 +0100 |
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@xxxxxxxxxxxxxxxxxxx] > Sent: 02 August 2005 20:20 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] what index is the current ite, Lee Breisacher | Thread | RE: [xsl] what index is the current, Lee Breisacher |
[xsl] Keeping fo:block with the pag, Frank Lorenz | Date | RE: [xsl] Standard Date/Time Public, Bruso, John |
Month |