Let's learn XSLT through examples. This is the continuation of the previous article Workday XSLT 05- Basic XSLT Examples (Traverse Up and Down)
YouTube Video
Online XSLT Editor
https://www.freeformatter.com/xsl-transformer.html
XSLT - Date format, Date Time format
XML
<?xml version="1.0" encoding="UTF-8"?> <Root xmlns:ab="http://www.w3.org/TR/html4/"> <ab:Row> <ab:Employee_ID>1001</ab:Employee_ID> <ab:Name Type="Full Name">Emma Dylan</ab:Name> <ab:Hire_Date>2020-01-03</ab:Hire_Date> <ab:Company>GMS USA</ab:Company> <ab:Entry_Date_Time>2022-10-01T09:05:25</ab:Entry_Date_Time> </ab:Row> <ab:Row> <ab:Employee_ID>1002</ab:Employee_ID> <ab:Name Type="Full Name">James Tyler</ab:Name> <ab:Hire_Date>2020-12-20</ab:Hire_Date> <ab:Company>GMS UK</ab:Company> <ab:Entry_Date_Time>2022-10-01T10:12:24</ab:Entry_Date_Time> </ab:Row> <ab:Row> <ab:Employee_ID>1003</ab:Employee_ID> <ab:Name Type="Full Name">Oliver Parton</ab:Name> <ab:Hire_Date>2019-02-14</ab:Hire_Date> <ab:Company>GMS Germany</ab:Company> <ab:Entry_Date_Time>2022-10-01T08:05:02</ab:Entry_Date_Time> </ab:Row> </Root>
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ab="http://www.w3.org/TR/html4/" version="2.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:text>Employee ID,Name,Text</xsl:text> <xsl:text>
</xsl:text> <xsl:for-each select="Root/ab:Row"> <xsl:value-of select="ab:Employee_ID"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'd Month y' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D1] [MNn] [Y1]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd Month yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01] [MNn] [Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd MONTH yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01] [MN] [Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd month yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01] [Mn] [Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd m yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01] [M1] [Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd/mm/yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01]/[M01]/[Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Format: 'dd-mm-yyyy' :</xsl:text> <xsl:value-of select="format-date(ab:Hire_Date,'[D01]-[M01]-[Y0001]')"/> <xsl:text>
</xsl:text> <xsl:text>----- Date Time Format: 'dd mm yyyy hh mm:ss' :</xsl:text> <xsl:value-of select="format-dateTime(ab:Entry_Date_Time,'[D01] [M01] [Y0001] [H01] [m01]:[s01]')"/> <xsl:text>
</xsl:text> <xsl:text>
</xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Output
Employee ID,Name,Text 1001 ----- Date Format: 'd Month y' :3 January 2020 ----- Date Format: 'dd Month yyyy' :03 January 2020 ----- Date Format: 'dd MONTH yyyy' :03 JANUARY 2020 ----- Date Format: 'dd month yyyy' :03 january 2020 ----- Date Format: 'dd m yyyy' :03 1 2020 ----- Date Format: 'dd/mm/yyyy' :03/01/2020 ----- Date Format: 'dd-mm-yyyy' :03-01-2020 ----- Date Time Format: 'dd mm yyyy hh mm:ss' :01 10 2022 09 05:25 1002 ----- Date Format: 'd Month y' :20 December 2020 ----- Date Format: 'dd Month yyyy' :20 December 2020 ----- Date Format: 'dd MONTH yyyy' :20 DECEMBER 2020 ----- Date Format: 'dd month yyyy' :20 december 2020 ----- Date Format: 'dd m yyyy' :20 12 2020 ----- Date Format: 'dd/mm/yyyy' :20/12/2020 ----- Date Format: 'dd-mm-yyyy' :20-12-2020 ----- Date Time Format: 'dd mm yyyy hh mm:ss' :01 10 2022 10 12:24 1003 ----- Date Format: 'd Month y' :14 February 2019 ----- Date Format: 'dd Month yyyy' :14 February 2019 ----- Date Format: 'dd MONTH yyyy' :14 FEBRUARY 2019 ----- Date Format: 'dd month yyyy' :14 february 2019 ----- Date Format: 'dd m yyyy' :14 2 2019 ----- Date Format: 'dd/mm/yyyy' :14/02/2019 ----- Date Format: 'dd-mm-yyyy' :14-02-2019 ----- Date Time Format: 'dd mm yyyy hh mm:ss' :01 10 2022 08 05:02
XSLT - Number format
XML
<?xml version="1.0" encoding="UTF-8"?> <Root xmlns:ab="http://www.w3.org/TR/html4/"> <ab:Row> <ab:Employee_ID>1001</ab:Employee_ID> <ab:Name Type="Full Name">Emma Dylan</ab:Name> <ab:Hire_Date>2020-01-03</ab:Hire_Date> <ab:Company>GMS USA</ab:Company> <ab:Salary>89321.3245</ab:Salary> </ab:Row> <ab:Row> <ab:Employee_ID>1002</ab:Employee_ID> <ab:Name Type="Full Name">James Tyler</ab:Name> <ab:Hire_Date>2020-12-20</ab:Hire_Date> <ab:Company>GMS UK</ab:Company> <ab:Salary>107185.5894</ab:Salary> </ab:Row> <ab:Row> <ab:Employee_ID>1003</ab:Employee_ID> <ab:Name Type="Full Name">Oliver Parton</ab:Name> <ab:Hire_Date>2019-02-14</ab:Hire_Date> <ab:Company>GMS Germany</ab:Company> <ab:Salary>71457.0596</ab:Salary> </ab:Row> </Root>
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ab="http://www.w3.org/TR/html4/" version="2.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:text>Employee ID,Name,Text</xsl:text> <xsl:text>
</xsl:text> <xsl:for-each select="Root/ab:Row"> <xsl:value-of select="ab:Employee_ID"/> <xsl:text>
</xsl:text> <xsl:text>----- Number Format: '#' :</xsl:text> <xsl:value-of select="format-number(ab:Salary,'#')"/> <xsl:text>
</xsl:text> <xsl:text>----- Number Format: '#.##' :</xsl:text> <xsl:value-of select="format-number(ab:Salary,'#.##')"/> <xsl:text>
</xsl:text> <xsl:text>----- Number Format: '#.###' :</xsl:text> <xsl:value-of select="format-number(ab:Salary,'#.###')"/> <xsl:text>
</xsl:text> <xsl:text>----- Number Format: '###,###.##' :</xsl:text> <xsl:value-of select="format-number(ab:Salary,'###,###.##')"/> <xsl:text>
</xsl:text> <xsl:text>----- Number Format with leading zeros: '000000000.00' :</xsl:text> <xsl:value-of select="format-number(ab:Salary,'000000000.00')"/> <xsl:text>
</xsl:text> <xsl:text>
</xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Output
Employee ID,Name,Text 1001 ----- Number Format: '#' :89321 ----- Number Format: '#.##' :89321.32 ----- Number Format: '#.###' :89321.324 ----- Number Format: '###,###.##' :89,321.32 ----- Number Format with leading zeros: '000000000.00' :000089321.32 1002 ----- Number Format: '#' :107186 ----- Number Format: '#.##' :107185.59 ----- Number Format: '#.###' :107185.589 ----- Number Format: '###,###.##' :107,185.59 ----- Number Format with leading zeros: '000000000.00' :000107185.59 1003 ----- Number Format: '#' :71457 ----- Number Format: '#.##' :71457.06 ----- Number Format: '#.###' :71457.06 ----- Number Format: '###,###.##' :71,457.06 ----- Number Format with leading zeros: '000000000.00' :000071457.06