File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
<AAA>
<BBB>
<CCC>A</CCC>
</BBB>
<BBB/>
<BBB/>
</AAA>
<AAA>
<BBB/>
<BBB>
<CCC>B</CCC>
<CCC>C</CCC>
<CCC>D</CCC>
<CCC>E</CCC>
</BBB>
</AAA>
</data>
File: Transform.xslt
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<TABLE border="1">
<TR>
<td>Position</TH>
<td>Last</TH>
<td>Name</TH>
</TR>
<xsl:for-each select="//AAA[last()]//CCC">
<TR>
<TD>
<xsl:value-of select="position()"/>
</TD>
<TD>
<xsl:value-of select="last()"/>
</TD>
<TD>
<xsl:value-of select="text()"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
<TABLE border="1">
<TR>
<td>Position</TH>
<td>Last</TH>
<td>Name</TH>
</TR>
<xsl:for-each select="//AAA[last()]//CCC">
<xsl:sort order="ascending" select="text()"/>
<TR>
<TD>
<xsl:value-of select="position()"/>
</TD>
<TD>
<xsl:value-of select="last()"/>
</TD>
<TD>
<xsl:value-of select="text()"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><TABLE border="1"><TR><td>Position</TH><td>Last</TH><td>Name</TH></TR><TR><TD>1</TD><TD>4</TD><TD>B</TD></TR><TR><TD>2</TD><TD>4</TD><TD>C</TD></TR><TR><TD>3</TD><TD>4</TD><TD>D</TD></TR><TR><TD>4</TD><TD>4</TD><TD>E</TD></TR></TABLE><TABLE border="1"><TR><td>Position</TH><td>Last</TH><td>Name</TH></TR><TR><TD>1</TD><TD>4</TD><TD>E</TD></TR><TR><TD>2</TD><TD>4</TD><TD>C</TD></TR><TR><TD>3</TD><TD>4</TD><TD>B</TD></TR><TR><TD>4</TD><TD>4</TD><TD>D</TD></TR></TABLE>
|