Subject: Re: [xsl] conditional increment under XSL for-each loop From: "anil an.kumar" <anil.an.kumar@xxxxxxxxxx> Date: Wed, 10 Feb 2010 16:38:38 +0530 |
iam using XSL version 1, and i got the required out put by applying the below logic..
<xsl:for-each select="G_REP_TRX_DETAIL_INFO/C_TAX_REPORTING_NAME"> <mezo eazon="{format-number((position()+1) idiv 2,'000')}X{((position()+1) mod 2) + 1}A"> <xsl:value-of select="."/> </mezo> </xsl:for-each>
anil an.kumar wrote:
I have a requirment which should show the xml o/p like below
<instance> <mezo eazon="001X1A">abc</mezo> <mezo eazon="001X2A">def</mezo> <mezo eazon="002X1A">xyz</mezo> <mezo eazon="002X2A">abc</mezo> <mezo eazon="003X1A">def</mezo> <mezo eazon="003X2A">xyz</mezo> <mezo eazon="004X1A">aaa</mezo> <mezo eazon="004X2A">bbb</mezo> <mezo eazon="005X1A">ccc</mezo> <mezo eazon="005X2A">xyz</mezo> </instance>
The tag "001X1A" should frame in such a way that,
POINT1 : The number appearing before 'A' should reset after every two records
POINT2 : The number appearing before 'X' should be same and need to increment by 1 for every two records.
like 001,001 then 002,002 then 003....
Here is an XSLT 2.0 stylesheet that produces above output:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<instance>
<xsl:for-each-group select="//C_TAX_REPORTING_NAME" group-by="(position() - 1) idiv 2">
<mezo eazon="{format-number(current-grouping-key() + 1, '000')}X1A">
<xsl:value-of select="current-group()[1]"/>
</mezo>
<mezo eazon="{format-number(current-grouping-key() + 1, '000')}X2A">
<xsl:value-of select="current-group()[2]"/>
</mezo>
</xsl:for-each-group>
</instance>
</xsl:template>
</xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] conditional increment und, Martin Honnen | Thread | Re: [xsl] conditional increment und, Martin Honnen |
Re: [xsl] Question about template p, David Carlisle | Date | Re: [xsl] conditional increment und, Martin Honnen |
Month |