Sort by substring : Sort « XSLT stylesheet « XML






Sort by substring


File: Data.xml


<employees>

  <employee hireDate="04/23/1999">
    <last>A</last>
    <first>B</first>
    <salary>100000</salary>
  </employee>

  <employee hireDate="09/01/1998">
    <last>C</last>
    <first>D</first>
    <salary>95000</salary>
  </employee>

  <employee hireDate="08/20/2000">
    <last>E</last>
    <first>F</first>
    <salary>89000</salary>
  </employee>

</employees>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:output method="text" />
  <xsl:template match="employees">
    <xsl:apply-templates>
      <xsl:sort select="substring(@hireDate,7,4)" />
      <!-- year  -->
      <xsl:sort select="substring(@hireDate,1,2)" />
      <!-- month -->
      <xsl:sort select="substring(@hireDate,3,2)" />
      <!-- day   -->
    </xsl:apply-templates>
  </xsl:template>
  

  <xsl:template match="employee">
    Last:
    <xsl:apply-templates select="last" />
    First:
    <xsl:apply-templates select="first" />
    Salary:
    <xsl:apply-templates select="salary" />
    Hire Date:
    <xsl:apply-templates select="@hireDate" />
  </xsl:template>

</xsl:stylesheet>

Output:



  

  

  


    Last:
    C
    First:
    D
    Salary:
    95000
    Hire Date:
    09/01/1998
    Last:
    A
    First:
    B
    Salary:
    100000
    Hire Date:
    04/23/1999
    Last:
    E
    First:
    F
    Salary:
    89000
    Hire Date:
    08/20/2000

 








Related examples in the same category

1.Sort value first then output
2.sort select="salary" data-type="number" order="descending"
3.Sort by two columns
4.Sort by attribute value
5.sort by different level of node
6.sort element by data type
7.for each sort descending
8.sort with current-grouping-key() function
9.sort by attribute
10.Sort by element text
11.Set sort order as ascending
12.sorts in text
13.sorts in numeric mode.
14.sorts upercase letters first
15.sorts lowercase letters first