The output xml doesn't sort as expected when I use the xsl:sort.
As you can see in the result section the 1.1.1.10, 2.10, 2.11, 2.12 are not correctly sorted.
I would expect the sorted lists to be as shown in the expected result xml.
Am I doing something wrong here? Please help.
Input XML
<children>
<child name="1.1.1.1 BDR Enter Customer" prefix="1.1.1.1"/>
<child name="1.1.1.10 BDR for Tax Office" prefix="1.1.1.10"/>
<child name="1.1.1.2 BDR Enter Customs" prefix="1.1.1.2"/>
<child name="1.1.1.3 BDR Enter Employee" prefix="1.1.1.3"/>
<child name="1.1.1.4 BDR Enter Forwarder" prefix="1.1.1.4"/>
<child name="1.1.1.5 BDR Enter Manufacturer" prefix="1.1.1.5"/>
<child name="1.1.1.6 BDR Enter Owner" prefix="1.1.1.6"/>
<child name="1.1.1.7 BDR Enter Person" prefix="1.1.1.7"/>
<child name="1.1.1.8 BDR Enter Resource" prefix="1.1.1.8"/>
<child name="1.1.1.9 BDR Enter Supplier" prefix="1.1.1.9"/>
<child name="1.1 Define System Basics" prefix="1.1"/>
<child name="2.9 Set Up Basic Data Accounting Rules" prefix="2.9"/>
<child name="2.2 Budget Management" prefix="2.2"/>
<child name="2.10 Customer Bill of Exchange Payment" prefix="2.10"/>
<child name="2.5 Depreciation Plan" prefix="2.5"/>
<child name="2.12 Supplier Credit Invoice" prefix="2.12"/>
<child name="2.11 AP/AR Nettings" prefix="2.11"/>
<child name="2.3 Arrival Entry Supplier Invoice" prefix="2.3"/>
<child name="2.1 Archive Data, Internal Ledger" prefix="2.1"/>
</children>
My XSL
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="children">
<children>
<xsl:for-each select="child">
<xsl:sort select="@prefix"/>
<child>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:attribute name="prefix">
<xsl:value-of select="@prefix"/>
</xsl:attribute>
</child>
</xsl:for-each>
</children>
</xsl:template>
</xsl:stylesheet>
Result
<?xml version="1.0" encoding="utf-8"?>
<children>
<child name="1.1 Define System Basics" prefix="1.1"/>
<child name="1.1.1.1 BDR Enter Customer" prefix="1.1.1.1"/>
<child name="1.1.1.10 BDR for Tax Office" prefix="1.1.1.10"/>
<child name="1.1.1.2 BDR Enter Customs" prefix="1.1.1.2"/>
<child name="1.1.1.3 BDR Enter Employee" prefix="1.1.1.3"/>
<child name="1.1.1.4 BDR Enter Forwarder" prefix="1.1.1.4"/>
<child name="1.1.1.5 BDR Enter Manufacturer" prefix="1.1.1.5"/>
<child name="1.1.1.6 BDR Enter Owner" prefix="1.1.1.6"/>
<child name="1.1.1.7 BDR Enter Person" prefix="1.1.1.7"/>
<child name="1.1.1.8 BDR Enter Resource" prefix="1.1.1.8"/>
<child name="1.1.1.9 BDR Enter Supplier" prefix="1.1.1.9"/>
<child name="2.1 Archive Data, Internal Ledger" prefix="2.1"/>
<child name="2.10 Customer Bill of Exchange Payment" prefix="2.10"/>
<child name="2.11 AP/AR Nettings" prefix="2.11"/>
<child name="2.12 Supplier Credit Invoice" prefix="2.12"/>
<child name="2.2 Budget Management" prefix="2.2"/>
<child name="2.3 Arrival Entry Supplier Invoice" prefix="2.3"/>
<child name="2.5 Depreciation Plan" prefix="2.5"/>
<child name="2.9 Set Up Basic Data Accounting Rules" prefix="2.9"/>
</children>
Expected Result
<?xml version="1.0" encoding="utf-8"?>
<children>
<child name="1.1 Define System Basics" prefix="1.1"/>
<child name="1.1.1.1 BDR Enter Customer" prefix="1.1.1.1"/>
<child name="1.1.1.2 BDR Enter Customs" prefix="1.1.1.2"/>
<child name="1.1.1.3 BDR Enter Employee" prefix="1.1.1.3"/>
<child name="1.1.1.4 BDR Enter Forwarder" prefix="1.1.1.4"/>
<child name="1.1.1.5 BDR Enter Manufacturer" prefix="1.1.1.5"/>
<child name="1.1.1.6 BDR Enter Owner" prefix="1.1.1.6"/>
<child name="1.1.1.7 BDR Enter Person" prefix="1.1.1.7"/>
<child name="1.1.1.8 BDR Enter Resource" prefix="1.1.1.8"/>
<child name="1.1.1.9 BDR Enter Supplier" prefix="1.1.1.9"/>
<child name="1.1.1.10 BDR for Tax Office" prefix="1.1.1.10"/>
<child name="2.1 Archive Data, Internal Ledger" prefix="2.1"/>
<child name="2.2 Budget Management" prefix="2.2"/>
<child name="2.3 Arrival Entry Supplier Invoice" prefix="2.3"/>
<child name="2.5 Depreciation Plan" prefix="2.5"/>
<child name="2.9 Set Up Basic Data Accounting Rules" prefix="2.9"/>
<child name="2.10 Customer Bill of Exchange Payment" prefix="2.10"/>
<child name="2.11 AP/AR Nettings" prefix="2.11"/>
<child name="2.12 Supplier Credit Invoice" prefix="2.12"/>
</children>