need to Extract Values from all levels of Recursive XML structure.The structurte in all levels is same
<regPackagingHierarchyList>
<RegistrationPackagingHierarchy>
<recordId>Level0</recordId>
<regParentPackagingHierarchy>
<RegistrationPackagingHierarchy>
<recordId>level5</recordId>
<regParentPackagingHierarchy>
<RegistrationPackagingHierarchy>
<recordId>level4</recordId>
<regParentPackagingHierarchy>
<RegistrationPackagingHierarchy>
<recordId>level3</recordId>
<regParentPackagingHierarchy>
<RegistrationPackagingHierarchy>
<recordId>level2</recordId>
<regParentPackagingHierarchy>
<RegistrationPackagingHierarchy>
<recordId>level1</recordId>
</RegistrationPackagingHierarchy>
</regParentPackagingHierarchy>
</RegistrationPackagingHierarchy>
</regParentPackagingHierarchy>
</RegistrationPackagingHierarchy>
</regParentPackagingHierarchy>
</RegistrationPackagingHierarchy>
</regParentPackagingHierarchy>
</RegistrationPackagingHierarchy>
</regParentPackagingHierarchy>
</RegistrationPackagingHierarchy>
</regPackagingHierarchyList>
Expected Result should be in the follwing format Level1,Level2,Level3,level4,Level5
One way in 1.0 can be:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<xsl:for-each select="//regParentPackagingHierarchy//recordId">
<xsl:sort select="position()" order="descending" />
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
http://xsltfiddle.liberty-development.net/pPzifpv
Edit:
<xsl:value-of select="concat('Count(regPackagingHierarchyList) = ', count(//regPackagingHierarchyList))"/>
<xsl:value-of select="concat('Count(RegistrationPackagingHierarchy) = ', count(//RegistrationPackagingHierarchy))"/>
Edit 2: