Input :
Enter XML
<Root>
<Number>1</Number>
<Reference>100</Reference>
<Number>2</Number>
<Reference>101</Reference>
<Number>3</Number>
<Reference>100</Reference>
<Number>4</Number>
<Reference>102</Reference>
<Number>5</Number>
<Reference>100</Reference>
</Root>
Expected Output :
<Root>
<Number>1</Number>
<Reference>100</Reference>
<RefNumber>1</RefNumber>
<Number>2</Number>
<Reference>101</Reference>
<RefNumber>1</RefNumber>
<Number>3</Number>
<Reference>100</Reference>
<RefNumber>2</RefNumber>
<Number>4</Number>
<Reference>102</Reference>
<RefNumber>1</RefNumber>
<Number>5</Number>
<Reference>100</Reference>
<RefNumber>3</RefNumber>
</Root>
How to do Grouping based on Root/Reference and add sequential number to RefNumber in output in xslt 1.0?
Thanks in Advance
One way to do this is use xsl:number. Whenever you match a Reference element, copy the element, and add a RefNumber element with the number of Reference elements with the same value:
Here is the full XSLT
When applied to your sample XML, the following is output:
Do note the use of the identity transform template to copy other existing nodes.