Can any one help me to get right Xpath for appropriate transformation through xslt??
As I am attempting to transform the input.xml using xslt through xpath (document(input.xml)//track) to get the desire output as noted below.
input xml: as noted below
<mergingTracksBreakdownStructure>
<track id="10">
<mergedTrack id="10"/>
<mergedTrack id="11"/>
<mergedTrack id="12"/>
<track id="13">
<mergedTrack id="13"/>
<mergedTrack id="14"/>
<track id="15">
<mergedTrack id="15"/>
<mergedTrack id="16"/>
</track>
</track>
</track>
<track id="27">
<mergedTrack id="27"/>
</track>
<track id="30">
<mergedTrack id="30"/>
</track>
</mergingTracksBreakdownStructure>
ouput xml needed: as noted below
<mergingTracksBreakdownStructure>
<track id="10">
<mergedTrack id="10"/>
<mergedTrack id="11"/>
<mergedTrack id="12"/>
</track>
<track id="13">
<mergedTrack id="13"/>
<mergedTrack id="14"/>
</track>
<track id="15">
<mergedTrack id="15"/>
<mergedTrack id="16"/>
</track>
<track id="27">
<mergedTrack id="27"/>
</track>
<track id="30">
<mergedTrack id="30"/>
</track>
</mergingTracksBreakdownStructure>
XSLT used for transormation:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:result-document href="output.xml" method="xml">
<xsl:apply-templates select="document('input.xml')//track"/>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
The requested output can be achieved quite easily by applying the following stylesheet to the input XML: