Subject: Re: [xsl] Iterating over values in a table of data From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Wed, 7 Jun 2006 15:10:16 +0530 |
<xsl:template match="/input"> <output> <xsl:for-each select="data/item"> <xsl:apply-templates select="../following-sibling::repeat"> <xsl:with-param name="item" select="." /> <xsl:with-param name="position" select="position()" /> </xsl:apply-templates> </xsl:for-each> </output> </xsl:template>
<xsl:template match="repeat"> <xsl:param name="item"/> <xsl:param name="position"/>
<item> <xsl:for-each select="node()"> <xsl:choose> <xsl:when test="local-name() = 'value-of'"> <xsl:value-of select="$item/value" /> </xsl:when> <xsl:when test="local-name() = 'position-of'"> <xsl:value-of select="$position" /> </xsl:when> <xsl:otherwise> <xsl:copy-of select="." /> </xsl:otherwise> </xsl:choose> </xsl:for-each> </item>
Regards, Mukul
I'm trying to transform some XML which is supposed to act as an iterator/repeat statement without much success at the moment. I was wondering if anyone had some advice about the best way to approach this sort of problem. For example, my source XML looks a bit like the following:
<input> <!-- This is a table of lookup values. --> <data> <item> <value>one</value> </item> <item> <value>two</value> </item> <item> <value>three</value> </item> </data> <!-- This node needs to be repeatedly transformed for each input data item --> <repeat> Item <value-of name="value"/> is in position <position-of name="value"/> </repeat> </input>
The desired output is of the following format:
<output> <item>Item one is in position 1</item> <item>Item two is in position 2</item> <item>Item three is in position 3</item> </output>
The intention is that when a <repeat> node is transformed it will look up the value of the next item in the data table and output its value and also its position in the data table. This will need to be repeated for each data item.
I don't have a restriction on me regarding the version of XSLT I can use, so an XSLT 2.0 specific would be ok, although I would prefer a solution that does not use any processor specific extensions.
Has anyone got any advice on or solutions for this class of problem? Thanks.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Iterating over values in , Wendell Piez | Thread | [xsl] Plain Text Handling in XSLT O, Georg Hohmann |
Re: [xsl] Iterating over values in , andrew welch | Date | [xsl] Plain Text Handling in XSLT O, Georg Hohmann |
Month |