This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Enumerating template matches


Either

<xsl:template match="B">
   <xsl:apply-templates select="C">
     <xsl:with-param name="match_number" select="position()"/>
   </xsl:apply-templates>
</xsl:template>

<xsl:template match="C">
   <xsl:param name="match_number"/>
   <xsl:value-of select="$match_number"/>
</xsl:template>

or

<xsl:template match="C">
   <xsl:value-of select="count(../preceding-sibling::B) + 1"/>
</xsl:template>

Regards,

Joerg


Morten wrote:

> 
> Hi list. I'm in the process of transforming some XML into a format
> edible by my RDBMS. Given the structure:
> 
> <A>
>   <B><C/><C/>...<C/></B>
>   <B><C/><C/>...<C/></B>
>    .
>    .
> </A>
> 
> Is there a way I can enumerate the template matches for B and pass
> that value to the template match for C? Ie. the first matching B
> element gets a value 1, and passes that on to the template match for
> C (as a parameter or by having C read it from its parent).
> 
> I was thinking something like using
> 
> <template match="A">
>   <!-- Pseudo: declare a "variable" match_number here -->
>   <for-each select="B">
>     <call-template name="C"><with-param name="match_number"> ..
>   <!-- Pseudo: increase value of match_number by one -->
>   </for-each>
> </template>
> 
> But I know that I cannot reassign the value of a "variable" in XSLT, so
> I need some other way to "increment" (or keep track of) match_number.
> 
> Thanks,
> 
> Morten


-- 

System Development
VIRBUS AG
Fon  +49(0)341-979-7411
Fax  +49(0)341-979-7409
joerg.heinicke@virbus.de
www.virbus.de


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]