hot to retrieve and format a start and end date for multiple LOA on one person

32 Views Asked by At

I am trying to write XSLT for finding the start and end date of a persons Leave of absence then formatting it. The persons xml I'm using has two different LOA sections. I am having trouble getting the oldest of the start dates and the most recent leave end date and then formatting them. Getting errors like to many arguments. I'm sure it's something simple but I can't seem to get it.


<LOA_Start_Date xtt:fixedLength="8">
    <xsl:if test="ws:Status/ws:Employee_Status = 'On_Leave'">
        <xsl:value-of select="ws:Leave_of_Absence = ws:On_Leave['true']"/>
    </xsl:if>  
    <xsl:then>
        <xsl:value-of select="format-date(min(ws:Leave_Start_Date, '[Y0001][M01][D01]'))"/>
    </xsl:then>
</LOA_Start_Date>



<LOA_End_Date xtt:fixedLength="8">
    <xsl:if test="ws:Status/ws:Employee_Status = 'Return_From_Leave'">
        <xsl:value-of select="ws:Leave_of_Absence = ws:On_Leave['false']"/>
    </xsl:if>  
    <xsl:then>
        <xsl:value-of select="format-date(max(ws:Leave_End_Date, '[Y0001][M01][D01]'))"/>
    </xsl:then>
</LOA_End_Date>


XML section:
<ws:Leave_of_Absence>
            <ws:On_Leave>true</ws:On_Leave>
            <ws:Leave_Start_Date>2022-10-27</ws:Leave_Start_Date>         
        </ws:Leave_of_Absence>
        <ws:Leave_of_Absence>
            <ws:On_Leave>false</ws:On_Leave>
            <ws:Leave_Start_Date>2022-10-24</ws:Leave_Start_Date>
            <ws:Leave_End_Date>2022-10-27</ws:Leave_End_Date>
        </ws:Leave_of_Absence>
1

There are 1 best solutions below

0
On

Call max on a sequence of xs:date values e.g. max(.//ws:Leave_End_Date/xs:date(.)). You can pass the max value at the format-date function.