Workday XSLT 06- Basic XSLT Examples (Format Dates and Numbers)

Workday XSLT 06- Basic XSLT Examples (Format Dates and Numbers)

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>&#xa;</xsl:text>
        <xsl:for-each select="Root/ab:Row">
            <xsl:value-of select="ab:Employee_ID"/>
            <xsl:text>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</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>&#xa;</xsl:text>

            <xsl:text>&#xa;</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>&#xa;</xsl:text>
        <xsl:for-each select="Root/ab:Row">
            <xsl:value-of select="ab:Employee_ID"/>
            <xsl:text>&#xa;</xsl:text>

            <xsl:text>----- Number Format: '#'                                :</xsl:text>
            <xsl:value-of select="format-number(ab:Salary,'#')"/>
            <xsl:text>&#xa;</xsl:text>

            <xsl:text>----- Number Format: '#.##'                             :</xsl:text>
            <xsl:value-of select="format-number(ab:Salary,'#.##')"/>
            <xsl:text>&#xa;</xsl:text>

            <xsl:text>----- Number Format: '#.###'                            :</xsl:text>
            <xsl:value-of select="format-number(ab:Salary,'#.###')"/>
            <xsl:text>&#xa;</xsl:text>

            <xsl:text>----- Number Format: '###,###.##'                       :</xsl:text>
            <xsl:value-of select="format-number(ab:Salary,'###,###.##')"/>
            <xsl:text>&#xa;</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>&#xa;</xsl:text>

            <xsl:text>&#xa;</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