Need sequence number based on the nesting of the element. In below example all the reference elements which is not child of any reference element will have sequence number, any nested reference element should have parent sequence number + decimal + position of current reference element.
Input.xml
<root>
<front>
<reference1 type="ref" href="a.xml">
<reference1 type="ref" href="x.xml"/>
<reference1 type="ref" href="z.xml"/>
</reference>
</front>
<reference2 type="ref" href="b.xml"/>
<reference2 type="ref" href="c.xml">
<reference2 type="ref" href="d.xml">
<reference2 type="ref" href="y.xml"/>
</reference>
</reference>
<back>
<reference3 type="ref" href="e.xml"/>
</back>
</root>
Output.xml
<root>
<reference href="a.xml" sequence="1"/>
<reference href="x.xml" sequence="1.1"/>
<reference href="z.xml" sequence="1.2"/>
<reference href="b.xml" sequence="2"/>
<reference href="c.xml" sequence="3"/>
<reference href="d.xml" sequence="3.1"/>
<reference href="y.xml" sequence="3.1.1"/>
<reference href="e.xml" sequence="4"/>
</root>
I am trying this but not able to get the logic:
<xsl:template match="/">
<root>
<xsl:for-each select="//reference">
<reference>
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:if test="not(child::reference)">
<xsl:attribute name="sequence">
<xsl:value-of select="position()"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="child::reference">
<!-- something to be done here -->
</xsl:if>
</reference>
</xsl:for-each>
</root>
Thanks