Project

Profile

Help

Support #6376 » simplified-m-tbw-map-GboMappingFull-T4.xslt

fouad MOUTASSIM, 2024-03-27 16:00

 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"
xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:err="http://www.w3.org/2005/xqt-errors"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fwkmapping="http://www.loreal.com/hip/fwk/mapping/FwkMapping"
xmlns:document="http://www.loreal.com/hip/fwk/mapping/Document"
xmlns:invocationContext="http://www.loreal.com/hip/fwk/mapping/InvocationContext"
xmlns:property="http://www.loreal.com/hip/fwk/common/Property"
xmlns:header="http://www.loreal.com/hip/fwk/mapping/Header" xmlns:csv="http://www.loreal.com/hip/fwk/xsl/csv"
xmlns:cf="http://www.loreal.com/hip/fwk/mapping/customfunctions"
xmlns:saxon="http://saxon.sf.net/" exclude-result-prefixes="csv fn xs xsl cf saxon">
<xsl:output method="xml" encoding="UTF-8" byte-order-mark="no"
indent="yes" />
<!-- [Document] -->
<xsl:param name="input-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="input-data-csv-field-separator" select="''"
as="xs:string" />
<xsl:param name="input-data-csv-line-separator" select="''"
as="xs:string" />
<xsl:param name="output-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="output-data-csv-field-separator" select="''"
as="xs:string" />
<xsl:param name="output-data-csv-line-separator" select="''"
as="xs:string" />
<!-- [Transient] -->
<xsl:param name="input-transient-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="input-transient-data-csv-field-separator"
select="''" as="xs:string" />
<xsl:param name="input-transient-data-csv-line-separator"
select="''" as="xs:string" />
<xsl:param name="output-transient-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="output-transient-data-csv-field-separator"
select="''" as="xs:string" />
<xsl:param name="output-transient-data-csv-line-separator"
select="''" as="xs:string" />
<!-- [InvocationRequest] -->
<xsl:param name="input-invocation-request-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="input-invocation-request-data-csv-field-separator"
select="''" as="xs:string" />
<xsl:param name="input-invocation-request-data-csv-line-separator"
select="''" as="xs:string" />
<xsl:param name="output-invocation-request-data-type" select="'xml'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="output-invocation-request-data-csv-field-separator"
select="''"
as="xs:string" />
<xsl:param name="output-invocation-request-data-csv-line-separator"
select="''" as="xs:string" />
<!-- [InvocationResponse] -->
<xsl:param name="input-invocation-response-data-type" select="'json'"
as="xs:string" />
<!-- csv, json or xml -->
<xsl:param name="input-invocation-response-data-csv-field-separator"
select="''"
as="xs:string" />
<xsl:param name="input-invocation-response-data-csv-line-separator"
select="''" as="xs:string" />
<xsl:param name="output-invocation-response-data-type"
select="'json'" as="xs:string" />
<!--
csv, json or xml -->
<xsl:param name="output-invocation-response-data-csv-field-separator"
select="''"
as="xs:string" />
<xsl:param name="output-invocation-response-data-csv-line-separator"
select="''"
as="xs:string" />
<!-- [Common] -->
<xsl:param name="input-csv-field-separator" select="';'"
as="xs:string" />
<xsl:param name="input-csv-line-separator" select="'\r\n?|\n\r?'"
as="xs:string" />
<xsl:param name="output-csv-field-separator" select="','"
as="xs:string" />
<xsl:param name="output-csv-line-separator" select="'&#xa;'"
as="xs:string" />
<xsl:param name="input-csv-quote" select="'&quot;'" as="xs:string" />
<xsl:param name="output-csv-quote" select="'&quot;'" as="xs:string" />
<!-- [MF] use-csv false -->
<!-- [Template match="/" ] [Start] -->
<!-- [Template match="/" ] [End] -->
<!-- [Inject data] [Start] -->
<xsl:template match="/" priority="9">
<fwkmapping:fwkMappingOut>
<fwkmapping:fwkMapping>
<xsl:copy-of copy-namespaces="no" select="fwkmapping:fwkMappingIn/fwkmapping:fwkMapping/fwkmapping:header" />
<xsl:for-each select="fwkmapping:fwkMappingIn/fwkmapping:fwkMapping/fwkmapping:mappingData">
<!-- <xsl:try> -->
<!-- [File handling] [Start] -->
<!-- ###[Transient Data]### -->
<!-- ###[Invocation Response]### -->
<xsl:variable name="InvocationResponse-data">
<xsl:choose>
<xsl:when
test="string-length(fwkmapping:invocation/invocationContext:response/document:filename)>0 and string-length(fwkmapping:invocation/invocationContext:response/document:content/document:text)=0">
<xsl:copy-of
select="unparsed-text(concat('file:///',fwkmapping:invocation/invocationContext:response/document:filename))" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of
select="fwkmapping:invocation/invocationContext:response/document:content/document:text" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- ###[Payload Data]### -->
<xsl:variable name="payload-data">
<xsl:choose>
<xsl:when
test="string-length(fwkmapping:document/document:filename)>0 and string-length(fwkmapping:document/document:content/document:text)=0">
<xsl:copy-of
select="unparsed-text(concat('file:///',fwkmapping:document/document:filename))" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of
select="fwkmapping:document/document:content/document:text" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- [File handling] [End] -->

<!-- Parse Invocation Response -->
<xsl:variable name="invocation-Response">
<xsl:if test="string-length($InvocationResponse-data)>0">
<xsl:choose>
<!-- [MF] use-csv false -->
<xsl:when test="$input-invocation-response-data-type='json'">
<xsl:copy-of select="fn:json-to-xml($InvocationResponse-data)" />

</xsl:when>
<xsl:when test="$input-invocation-response-data-type='xml'">
<xsl:copy-of select="parse-xml($InvocationResponse-data)" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$InvocationResponse-data" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:variable>
<!-- Parse Document input -->
<xsl:variable name="data">
<xsl:if test="string-length($payload-data)>0">
<xsl:choose>
<!-- [MF] use-csv false -->
<xsl:when test="$input-data-type='json'">
<!-- <xsl:copy-of select="fn:json-to-xml($payload-data)" /> -->
<xsl:copy-of select="fn:parse-json($payload-data)" />
</xsl:when>
<xsl:when test="$input-data-type='xml'">
<xsl:copy-of select="parse-xml($payload-data)" />
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$payload-data" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:variable>
<!-- [call-template name="mapWrapper"] -->
<xsl:variable name="resultVar">
<xsl:call-template name="mapWrapper">
<xsl:with-param name="wrapperHeaderVar" select="fwkmapping:fwkMappingIn/fwkmapping:fwkMapping/fwkmapping:header" />
<!-- Add New -->
<xsl:with-param name="wrapperobjectTypeVar"
select="./fwkmapping:objectType" />
<xsl:with-param name="wrapperfileNameVar"
select="./fwkmapping:fileName" />
<xsl:with-param name="wrapperFunctionalKeysVar"
select="./fwkmapping:functionalKeys" />
<!-- Add New -->
<xsl:with-param name="wrapperParametersVar"
select="./fwkmapping:parameters" />
<xsl:with-param name="wrapperInvocationRespVar"
select="$invocation-Response" />
<xsl:with-param name="wrapperInvocationRespFileVar"
select="fwkmapping:invocation/invocationContext:response/document:filename" />
<xsl:with-param name="wrapperDataVar" select="$data" />
<xsl:with-param name="wrapperDataFileVar"
select="fwkmapping:document/document:filename" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="finalResultVar">
<!-- Invokes business map -->
<xsl:apply-templates select="$resultVar" mode="tibco" />
</xsl:variable>
<xsl:for-each
select="$finalResultVar/fwkmapping:fwkMappingOut/fwkmapping:fwkMapping/fwkmapping:mappingData">
<fwkmapping:mappingData>
<!-- Add New -->
<!-- [FunctionalKeys](Start] -->
<!-- [FunctionalKeys](End] -->
<!-- Add New -->
<!-- [Parameters](Start] -->
<!-- [Parameters](End] -->
<!-- [Transient][Start] -->
<!-- [Transient][End] -->
<!-- [Invocation][Start] -->
<!-- Build output -->
<!-- [Document][Start] -->
<fwkmapping:document>
<document:content>
<document:text>
<xsl:copy-of select="fwkmapping:document/document:content/document:xml/*"
copy-namespaces="no" />
<!-- <xsl:copy-of select="serialize(fwkmapping:document/document:content/document:xml/*)"
copy-namespaces="no" /> -->
</document:text>
</document:content>
<document:filename>
<xsl:value-of select="fwkmapping:document/document:filename" />
</document:filename>
<document:size>
<xsl:value-of select="xs:int(string-length(' '))" />
</document:size>
</fwkmapping:document>
<!-- [Document][End] -->
</fwkmapping:mappingData>
</xsl:for-each>
</xsl:for-each>
</fwkmapping:fwkMapping>
</fwkmapping:fwkMappingOut>
</xsl:template>
<!-- [Inject data] [End] -->
<!-- [mapWrapper][Start] -->
<xsl:template name="mapWrapper">
<xsl:param name="wrapperHeaderVar" />
<!-- Add New -->
<xsl:param name="wrapperobjectTypeVar" />
<xsl:param name="wrapperfileNameVar" />
<xsl:param name="wrapperFunctionalKeysVar" />
<!-- Add New -->
<xsl:param name="wrapperParametersVar" />
<xsl:param name="wrapperInvocationRespVar" />
<xsl:param name="wrapperInvocationRespFileVar" />
<xsl:param name="wrapperDataVar" />
<xsl:param name="wrapperDataFileVar" />
<!-- [Add fwkMappingIn] -->
<fwkmapping:fwkMappingIn>
<!-- [Add fwkMappingIn] -->
<fwkmapping:fwkMapping>
<xsl:copy-of copy-namespaces="no" select="$wrapperHeaderVar" />
<fwkmapping:mappingData>
<!-- Add New -->
<xsl:copy-of copy-namespaces="no" select="$wrapperobjectTypeVar" />
<xsl:copy-of copy-namespaces="no" select="$wrapperfileNameVar" />
<xsl:copy-of copy-namespaces="no"
select="$wrapperFunctionalKeysVar" />
<!-- Add New -->
<xsl:copy-of copy-namespaces="no" select="$wrapperParametersVar" />
<!-- Invocation -->
<fwkmapping:invocation>
<invocationContext:response>
<document:content>
<document:xml>
<xsl:copy-of copy-namespaces="no"
select="$wrapperInvocationRespVar" />
</document:xml>
</document:content>
<document:filename>
<xsl:value-of select="$wrapperInvocationRespFileVar" />
</document:filename>
<document:size>
<xsl:value-of select="xs:int(string-length($wrapperInvocationRespVar))" />
</document:size>
</invocationContext:response>
</fwkmapping:invocation>
<!-- Document -->
<fwkmapping:document>
<document:content>
<document:xml>
<xsl:copy-of copy-namespaces="no" select="$wrapperDataVar" />
</document:xml>
</document:content>
<document:filename>
<xsl:value-of select="$wrapperDataFileVar" />
</document:filename>
<document:size>
<xsl:value-of select="xs:int(string-length($wrapperDataVar))" />
</document:size>
</fwkmapping:document>
</fwkmapping:mappingData>
</fwkmapping:fwkMapping>
<!-- [Add fwkMappingIn] -->
<fwkmapping:output-data-type>
<xsl:value-of select="$output-data-type" />
</fwkmapping:output-data-type>
</fwkmapping:fwkMappingIn>
<!-- [Add fwkMappingIn] -->
</xsl:template>
<!-- [mapWrapper][End] -->
<!-- [CSV Render][Start] -->
<!-- [Write Files] [Start] -->

<!--[TIBCO_TEMPLATE] -->
<xsl:template name="Mapper-input" match="/" mode="tibco" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tns="http://www.loreal.com/hip/fwk/mapping/FwkMapping" xmlns:ns="http://www.loreal.com/hip/fwk/mapping/Document" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.w3.org/2005/xpath-functions" xmlns:ns4="http://www.loreal.com/hip/fwk/common/Property" xmlns:tns3="http://www.example.org/xml" >
<!-- TIBCO parameters are converted to variables -->
<xsl:variable name="Start" select="tns:fwkMappingIn" />
<xsl:variable name="ParseInvocationResponseJSON" select="$Start/tns:fwkMapping/tns:mappingData/tns:invocation/invocationContext:response/ns:content/ns:xml/*" />
<xsl:variable name="ParseXML" select="$Start/tns:fwkMapping/tns:mappingData/tns:document/ns:content/ns:xml/*" />
<!-- TIBCO map -->
<tns:fwkMappingOut>
<tns:fwkMapping>
<xsl:copy-of select="$Start/tns:fwkMapping/tns:header"/>
<tns:mappingData>
<!--/!\ The functional keys must be mapped /!\-->
<tns:functionalKeys>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'first']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'first']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'replay']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'replay']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'interface']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'interface']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'skiptoken']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="substring-after($ParseInvocationResponseJSON/ns1:map[@key='d']/ns1:string[@key='__next'],'skiptoken=')"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'selecturl']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'selecturl']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'expandurl']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'expandurl']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'target']/ns4:name"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'target']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
<xsl:choose>
<xsl:when test="string-length($ParseInvocationResponseJSON/ns1:map[@key='d']/ns1:string[@key='__next']) > 0">
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="'loop'"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="'continue'"/>
</ns4:value>
</tns:functionalKey>
</xsl:when>
<xsl:otherwise>
<tns:functionalKey>
<ns4:name>
<xsl:value-of select="'loop'"/>
</ns4:name>
<ns4:value>
<xsl:value-of select="$Start/tns:fwkMapping/tns:mappingData/tns:functionalKeys/tns:functionalKey[ns4:name eq 'target']/ns4:value"/>
</ns4:value>
</tns:functionalKey>
</xsl:otherwise>
</xsl:choose>
</tns:functionalKeys>
<!--/!\ The parameters must be mapped /!\-->
<xsl:copy-of select="$Start/tns:fwkMapping/tns:mappingData[1]/tns:parameters"/>
<xsl:copy-of select="$Start/tns:fwkMapping/tns:mappingData/tns:transient"/>
<xsl:copy-of select="$Start/tns:fwkMapping/tns:mappingData/tns:invocation"/>
<tns:document>
<ns:content>
<ns:xml>
<tns:output>
<GBOEmployeeList>
<xsl:for-each select="$ParseInvocationResponseJSON/ns1:map[@key='d']/ns1:array[@key='results']/ns1:map[string-length(ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId'])>0]">
<xsl:variable name="TerminatedSFDateValue" select="ns1:string[@key='endDate']"/>
<xsl:variable name="TerminatedDate" select="if(string-length($TerminatedSFDateValue)>0) then( if( xsd:long(substring-before(substring-after($TerminatedSFDateValue, '('),')/')) &lt;0)then (xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after($TerminatedSFDateValue, '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))) else ((xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') +xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after($TerminatedSFDateValue, '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;)))))else ''"/>
<xsl:variable name="Terminationconsider" select="if (string-length(xsd:string($TerminatedDate))=0) then 'YES' else (if (xsd:date(format-date(xsd:date($TerminatedDate),'[Y0001]-[M01]-[D01]')) >= (xsd:date(format-date(current-date(),'[Y0001]-[M01]-[D01]'))- xsd:dayTimeDuration('P60D'))) then 'YES' else 'NO')"/>
<xsl:if test="not(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='company'] ='US11')and $Terminationconsider='YES'">
<GBOEmployee>
<xsl:variable name="PayGroup" select="ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payGroup']"/>
<xsl:variable name="Company" select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='company']"/>
<xsl:variable name="Shift" select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='shiftCodeNav']/ns1:string['externalCode']"/>
<Employee>
<xsl:variable name="VantagePayGroup1" select="if ($Company=&quot;474&quot; and $PayGroup=&quot;B&quot;) then &quot;Z2L&quot; else if ($Company=&quot;474&quot; and $PayGroup=&quot;B2&quot;) then &quot;UBJ&quot; else if ($Company=&quot;474&quot; and $PayGroup=&quot;M&quot;) then &quot;V2Y&quot; else if ($Company=&quot;BAI&quot; and $PayGroup=&quot;B&quot;) then &quot;X6V&quot; else if ($Company=&quot;BAI&quot; and $PayGroup=&quot;B2&quot;) then &quot;YTZ&quot; else if ($Company=&quot;BY8&quot; and $PayGroup=&quot;M&quot;) then &quot;VM8&quot; else if ($Company=&quot;CP1&quot; and $PayGroup=&quot;B&quot;) then &quot;W3W&quot; else if ($Company=&quot;CP1&quot; and $PayGroup=&quot;B2&quot;) then &quot;V3M&quot; else if ($Company=&quot;CP1&quot; and $PayGroup=&quot;M&quot;) then &quot;HW1&quot; else if ($Company=&quot;CRB&quot; and $PayGroup=&quot;B&quot;) then &quot;VVY&quot; else if ($Company=&quot;DG3&quot; and $PayGroup=&quot;B&quot;) then &quot;JM3&quot; else if ($Company=&quot;DG3&quot; and $PayGroup=&quot;B2&quot;) then &quot;WZR&quot; else if ($Company=&quot;DG3&quot; and $PayGroup=&quot;M&quot;) then &quot;VMX&quot; else if ($Company=&quot;DG3&quot; and $PayGroup=&quot;W2&quot;) then &quot;WZS&quot; else if ($Company=&quot;PR1&quot; and $PayGroup=&quot;B&quot;) then &quot;YU4&quot; else if ($Company=&quot;Y85&quot; and $PayGroup=&quot;B&quot;) then &quot;VVX&quot; else if ($Company=&quot;Y85&quot; and $PayGroup=&quot;B2&quot;) then &quot;WRR&quot; else &quot; &quot;"/>
<xsl:for-each select="ns1:map[@key='userNav']/ns1:map[@key='userIdOfEmployeeTimeNav']/ns1:array[@key='results']/ns1:map">
<TimeEmp>
<xsl:if test="string-length(ns1:string[@key='startDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) &lt; 0">
<TimeStartDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</TimeStartDate>
</xsl:when>
<xsl:otherwise>
<TimeStartDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</TimeStartDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='endDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '('),')/')) &lt; 0">
<TimeEndDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</TimeEndDate>
</xsl:when>
<xsl:otherwise>
<TimeEndDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</TimeEndDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='timeType'])>0">
<xsl:if test="ns1:string[@key='timeType']">
<TimeType>
<xsl:value-of select="ns1:string[@key='timeType']"/>
</TimeType>
</xsl:if>
</xsl:if>
</TimeEmp>
</xsl:for-each>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='suffixNav']/ns1:string[@key='localeLabel'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='suffixNav']/ns1:string[@key='localeLabel']">
<suffix_label>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='suffixNav']/ns1:string[@key='localeLabel']"/>
</suffix_label>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerEmploymentNav']/ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']">
<manager-title>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerEmploymentNav']/ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']"/>
</manager-title>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString12']">
<HostDesignation>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString12']"/>
</HostDesignation>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString27']">
<benefit-program>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString27']"/>
</benefit-program>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='timeTypeProfileCode']">
<timeTypeProfileCode>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='timeTypeProfileCode']"/>
</timeTypeProfileCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString7']">
<specialCode>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString7']"/>
</specialCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString32']">
<local-pay-grade>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString32']"/>
</local-pay-grade>
</xsl:if>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='nativePreferredLangNav']/ns1:string[@key='externalCode']">
<languageCode>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='nativePreferredLangNav']/ns1:string[@key='externalCode']"/>
</languageCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='customString3']">
<StoreNumberUS>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='customString3']"/>
</StoreNumberUS>
</xsl:if>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']">
<KeyPlayerStatus>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']"/>
</KeyPlayerStatus>
</xsl:if>
<xsl:if test="ns1:map[@key='userNav']/ns1:string[@key='username']">
<username>
<xsl:value-of select="ns1:map[@key='userNav']/ns1:string[@key='username']"/>
</username>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='userId'])>0">
<xsl:if test="ns1:string[@key='userId']">
<value>
<xsl:value-of select="ns1:string[@key='userId']"/>
</value>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='userNav']/ns1:string[@key='loginMethod']">
<loginMethod>
<xsl:value-of select="ns1:map[@key='userNav']/ns1:string[@key='loginMethod']"/>
</loginMethod>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='preferredName'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='preferredName']">
<preferred-name>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='preferredName']"/>
</preferred-name>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='firstName'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='firstName']">
<first-name>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='firstName']"/>
</first-name>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='middleName'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='middleName']">
<middle-name>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='middleName']"/>
</middle-name>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastName'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastName']">
<last-name>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastName']"/>
</last-name>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='firstName'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='firstName']">
<first-name-alt2>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='firstName']"/>
</first-name-alt2>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='lastName'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='lastName']">
<last-name-alt2>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='lastName']"/>
</last-name-alt2>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='userNav']/ns1:string[@key='salutation']">
<title>
<xsl:value-of select="ns1:map[@key='userNav']/ns1:string[@key='salutation']"/>
</title>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='gender'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='gender']">
<gender>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='gender']"/>
</gender>
</xsl:if>
</xsl:when>
</xsl:choose>
<address>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='countryNav']/ns1:string[@key='territoryName'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='countryNav']/ns1:string[@key='territoryName']">
<territoryName>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='countryNav']/ns1:string[@key='territoryName']"/>
</territoryName>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address1'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address1']">
<line>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address1']"/>
</line>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address2']">
<extendedLines>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address2']"/>
</extendedLines>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='country'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='country']">
<countryCode>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='country']"/>
</countryCode>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address3']">
<address3>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='address3']"/>
</address3>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='stateNav']/ns1:string[@key='externalCode'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='stateNav']/ns1:string[@key='externalCode']">
<countrySubDivisions>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:map[@key='stateNav']/ns1:string[@key='externalCode']"/>
</countrySubDivisions>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='city'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='city']">
<city>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='city']"/>
</city>
</xsl:if>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='zipCode'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='zipCode']">
<postalCode>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='homeAddressNavDEFLT']/ns1:array[@key='results']/ns1:map[ns1:string[@key='addressType']=&quot;home&quot;]/ns1:string[@key='zipCode']"/>
</postalCode>
</xsl:if>
</xsl:if>
</address>
<xsl:for-each select="ns1:map[@key='personNav']/ns1:map[@key='phoneNav']/ns1:array[@key='results']/ns1:map">
<phone>
<xsl:if test="ns1:map[@key='customString1Nav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='cust_dialcode']">
<countryDialingCode>
<xsl:value-of select="ns1:map[@key='customString1Nav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='cust_dialcode']"/>
</countryDialingCode>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='phoneNumber'])>0">
<xsl:if test="ns1:string[@key='phoneNumber']">
<phone-number>
<xsl:value-of select="ns1:string[@key='phoneNumber']"/>
</phone-number>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:map[@key='phoneTypeNav']/ns1:string[@key='externalCode'])>0">
<xsl:if test="ns1:map[@key='phoneTypeNav']/ns1:string[@key='externalCode']">
<phone-type>
<xsl:value-of select="ns1:map[@key='phoneTypeNav']/ns1:string[@key='externalCode']"/>
</phone-type>
</xsl:if>
</xsl:if>
</phone>
</xsl:for-each>
<xsl:for-each select="ns1:map[@key='personNav']/ns1:map[@key='emailNav']/ns1:array[@key='results']/ns1:map">
<email>
<xsl:if test="string-length(ns1:string[@key='emailAddress'])>0">
<xsl:if test="ns1:string[@key='emailAddress']">
<email-address>
<xsl:value-of select="ns1:string[@key='emailAddress']"/>
</email-address>
</xsl:if>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='emailTypeNav']/ns1:string[@key='externalCode'])>0">
<xsl:if test="ns1:map[@key='emailTypeNav']/ns1:string[@key='externalCode']">
<email-type>
<xsl:value-of select="ns1:map[@key='emailTypeNav']/ns1:string[@key='externalCode']"/>
</email-type>
</xsl:if>
</xsl:if>
</email>
</xsl:for-each>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key=&quot;localNavUSA&quot;]/ns1:map[@key=&quot;customString13Nav&quot;]/ns1:string[@key=&quot;externalCode&quot;]">
<ethnic-code>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key=&quot;localNavUSA&quot;]/ns1:map[@key=&quot;customString13Nav&quot;]/ns1:string[@key=&quot;externalCode&quot;]"/>
</ethnic-code>
</xsl:if>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key=&quot;localNavUSA&quot;]/ns1:map[@key=&quot;customString13Nav&quot;]/ns1:string[@key=&quot;localeLabel&quot;]">
<ethnic-description>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key=&quot;localNavUSA&quot;]/ns1:map[@key=&quot;customString13Nav&quot;]/ns1:string[@key=&quot;localeLabel&quot;]"/>
</ethnic-description>
</xsl:if>
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='maritalStatusNav']/ns1:string[@key='externalCode']">
<marital-status>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='personalInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='maritalStatusNav']/ns1:string[@key='externalCode']"/>
</marital-status>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='personNav']/ns1:map[@key='nationalIdNav']/ns1:array[@key='results']/ns1:map[ns1:string[@key='country']=&quot;USA&quot;]/ns1:string[@key='nationalId'])>0">
<xsl:if test="ns1:map[@key='personNav']/ns1:map[@key='nationalIdNav']/ns1:array[@key='results']/ns1:map[ns1:string[@key='country']=&quot;USA&quot;]/ns1:string[@key='nationalId']">
<national-id>
<xsl:value-of select="ns1:map[@key='personNav']/ns1:map[@key='nationalIdNav']/ns1:array[@key='results']/ns1:map[ns1:string[@key='country']=&quot;USA&quot;]/ns1:string[@key='nationalId']"/>
</national-id>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:map[@key='personNav']/ns1:string[@key='dateOfBirth'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:map[@key='personNav']/ns1:string[@key='dateOfBirth'], '('),')/')) &lt; 0">
<date-of-birth>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='personNav']/ns1:string[@key='dateOfBirth'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</date-of-birth>
</xsl:when>
<xsl:otherwise>
<date-of-birth>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='personNav']/ns1:string[@key='dateOfBirth'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</date-of-birth>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='customDate6'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate6'], '('),')/')) &lt; 0">
<deathDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate6'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</deathDate>
</xsl:when>
<xsl:otherwise>
<deathDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate6'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</deathDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='payrollEndDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='payrollEndDate'], '('),')/')) &lt; 0">
<PayrollEndDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='payrollEndDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</PayrollEndDate>
</xsl:when>
<xsl:otherwise>
<PayrollEndDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='payrollEndDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</PayrollEndDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='emplStatusNav']/ns1:string[@key='externalCode'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='emplStatusNav']/ns1:string[@key='externalCode']">
<Status>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='emplStatusNav']/ns1:string[@key='externalCode']"/>
</Status>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='emplStatusNav']/ns1:string[@key='localeLabel']">
<DetailedStatus>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='emplStatusNav']/ns1:string[@key='localeLabel']"/>
</DetailedStatus>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='companyNav']/ns1:string[@key='name_defaultValue'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='companyNav']/ns1:string[@key='name_defaultValue']">
<company_descr>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='companyNav']/ns1:string[@key='name_defaultValue']"/>
</company_descr>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString35Nav']/ns1:map[@key='cust_EEOJobGroupNav']/ns1:string[@key='label_defaultValue'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString35Nav']/ns1:map[@key='cust_EEOJobGroupNav']/ns1:string[@key='label_defaultValue']">
<employee-type>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString35Nav']/ns1:map[@key='cust_EEOJobGroupNav']/ns1:string[@key='label_defaultValue']"/>
</employee-type>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString4'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString4']">
<employee-class>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString4']"/>
</employee-class>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31']">
<employment-type>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31']"/>
</employment-type>
</xsl:if>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString6']">
<prof-code>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString6']"/>
</prof-code>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='customDate1'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) &lt; 0">
<Grp-SeniorityDt>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</Grp-SeniorityDt>
</xsl:when>
<xsl:otherwise>
<Grp-SeniorityDt>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</Grp-SeniorityDt>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="ns1:string[@key='assignmentClass'] eq 'GA'">
<xsl:for-each select="ns1:map[@key='personNav']/ns1:map[@key='employmentNav']/ns1:array[@key='results']/ns1:map[string-length(ns1:string[@key='customDate1'])>0]">
<serviceDateMap>
<xsl:if test="string-length(ns1:string[@key='customDate1'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) &lt; 0">
<serviceDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</serviceDate>
</xsl:when>
<xsl:otherwise>
<serviceDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</serviceDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</serviceDateMap>
</xsl:for-each>
<xsl:for-each select="ns1:map[@key='personNav']/ns1:map[@key='employmentNav']/ns1:array[@key='results']/ns1:map[string-length(ns1:string[@key='customDate2'])>0]">
<orighireDateMap>
<xsl:if test="string-length(ns1:string[@key='customDate2'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) &lt; 0">
<orighireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</orighireDate>
</xsl:when>
<xsl:otherwise>
<orighireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</orighireDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</orighireDateMap>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:if test="string-length(ns1:string[@key='customDate1'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) &lt; 0">
<serviceDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</serviceDate>
</xsl:when>
<xsl:otherwise>
<serviceDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate1'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</serviceDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='customDate2'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) &lt; 0">
<orighireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</orighireDate>
</xsl:when>
<xsl:otherwise>
<orighireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</orighireDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='customDate2'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) &lt; 0">
<GrpSeniorDt>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</GrpSeniorDt>
</xsl:when>
<xsl:otherwise>
<GrpSeniorDt>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='customDate2'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</GrpSeniorDt>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastModifiedOn'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastModifiedOn'], '('),')/')) &lt; 0">
<latest-effdt-change>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastModifiedOn'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</latest-effdt-change>
</xsl:when>
<xsl:otherwise>
<latest-effdt-change>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='lastModifiedOn'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</latest-effdt-change>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='positionEntryDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='positionEntryDate'], '('),')/')) &lt; 0">
<EntryDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='positionEntryDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</EntryDate>
</xsl:when>
<xsl:otherwise>
<EntryDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='positionEntryDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</EntryDate>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='startDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='startDate'], '('),')/')) &lt; 0">
<EffectiveStart>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='startDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</EffectiveStart>
</xsl:when>
<xsl:otherwise>
<EffectiveStart>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='startDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</EffectiveStart>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:string[@key='startDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) &lt; 0">
<hireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</hireDate>
</xsl:when>
<xsl:otherwise>
<hireDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</hireDate>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='companyEntryDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='companyEntryDate'], '('),')/')) &lt; 0">
<StartDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='companyEntryDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</StartDate>
</xsl:when>
<xsl:otherwise>
<StartDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='companyEntryDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</StartDate>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='seniorityDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='seniorityDate'], '('),')/')) &lt; 0">
<seniorityDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='seniorityDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</seniorityDate>
</xsl:when>
<xsl:otherwise>
<seniorityDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='seniorityDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</seniorityDate>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:string[@key='endDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '('),')/')) &lt; 0">
<contract-end-date>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</contract-end-date>
</xsl:when>
<xsl:otherwise>
<contract-end-date>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='endDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</contract-end-date>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='lastDateWorked'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='lastDateWorked'], '('),')/')) &lt; 0">
<lastDateWorked>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='lastDateWorked'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</lastDateWorked>
</xsl:when>
<xsl:otherwise>
<lastDateWorked>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='lastDateWorked'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</lastDateWorked>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='jobCode'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='jobCode']">
<job-code>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='jobCode']"/>
</job-code>
</xsl:if>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString35']">
<job-code-US>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString35']"/>
</job-code-US>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']">
<job-title>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString2']"/>
</job-title>
</xsl:if>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='jobCodeNav']/ns1:string[@key='name_defaultValue'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='jobCodeNav']/ns1:string[@key='name_defaultValue']">
<local-job-title>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='jobCodeNav']/ns1:string[@key='name_defaultValue']"/>
</local-job-title>
</xsl:if>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString6'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString6']">
<ProfessionalField-Code>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString6']"/>
</ProfessionalField-Code>
</xsl:if>
</xsl:if>
<xsl:if test="string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString6Nav']/ns1:string[@key='name_defaultValue'])>0">
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString6Nav']/ns1:string[@key='name_defaultValue']">
<ProfessionalField-Label>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString6Nav']/ns1:string[@key='name_defaultValue']"/>
</ProfessionalField-Label>
</xsl:if>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString35Nav']/ns1:string[@key='cust_localpaygrade']">
<pay-grade-US>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString35Nav']/ns1:string[@key='cust_localpaygrade']"/>
</pay-grade-US>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payGrade']">
<pay-grade>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payGrade']"/>
</pay-grade>
</xsl:if>
<xsl:choose>
<xsl:when test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='standardHours']=&quot;&quot; or ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='standardHours']=&quot; &quot;">
<standard-hours>
<xsl:value-of select="0"/>
</standard-hours>
</xsl:when>
<xsl:otherwise>
<standard-hours>
<xsl:value-of select="xsd:double(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='standardHours'])"/>
</standard-hours>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="xsd:boolean(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='isFulltimeEmployee']) eq false() or ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='isFulltimeEmployee'] eq false()">
<is-fulltime-employee>
<xsl:value-of select="&quot;P&quot;"/>
</is-fulltime-employee>
</xsl:when>
<xsl:otherwise>
<is-fulltime-employee>
<xsl:value-of select="&quot;F&quot;"/>
</is-fulltime-employee>
</xsl:otherwise>
</xsl:choose>
<FTE>
<xsl:value-of select="if(substring(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31'],string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31']),1) = (&quot;1&quot;,&quot;2&quot;,&quot;5&quot;,&quot;8&quot;)) then 'P' else if(substring(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31'],string-length(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString31']),1) = (&quot;3&quot;,&quot;4&quot;,&quot;7&quot;,&quot;9&quot;)) then 'F' else ' '"/>
</FTE>
<FTEHYP>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='fte']"/>
</FTEHYP>
<xsl:if test="$ParseInvocationResponseJSON/ns1:map[ns1:string[@key='EmployeeId'] = current()/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId']]/ns1:string[@key='Custom3']">
<Floor>
<xsl:value-of select="$ParseInvocationResponseJSON/ns1:map[ns1:string[@key='EmployeeId'] = current()/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId']]/ns1:string[@key='Custom3']"/>
</Floor>
</xsl:if>
<xsl:if test="$ParseInvocationResponseJSON/ns1:map[ns1:string[@key='EmployeeId'] = current()/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId']]/ns1:string[@key='Custom4']">
<Seat>
<xsl:value-of select="$ParseInvocationResponseJSON/ns1:map[ns1:string[@key='EmployeeId'] = current()/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId']]/ns1:string[@key='Custom4']"/>
</Seat>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='shiftCodeNav']/ns1:string['externalCode']">
<shift-code>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='shiftCodeNav']/ns1:string['externalCode']"/>
</shift-code>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString4Nav']/ns1:string[@key='externalName_defaultValue']">
<supervisor-level>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString4Nav']/ns1:string[@key='externalName_defaultValue']"/>
</supervisor-level>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='eventReason']">
<change-reason>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='eventReason']"/>
</change-reason>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='eventNav']/ns1:string['externalCode']">
<change-reason-external>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='eventNav']/ns1:string['externalCode']"/>
</change-reason-external>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='company']">
<company>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='company']"/>
</company>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:string[@key='geozoneFlx']">
<GeographicZone>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:string[@key='geozoneFlx']"/>
</GeographicZone>
</xsl:if>
<xsl:if test="ns1:string[@key='customString35']">
<business-unit>
<xsl:value-of select="ns1:string[@key='customString35']"/>
</business-unit>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='businessUnit']">
<businessUnitName>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='businessUnit']"/>
</businessUnitName>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='businessUnitNav']/ns1:string[@key='name_defaultValue']">
<typeOfBusinessUnit2>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='businessUnitNav']/ns1:string[@key='name_defaultValue']"/>
</typeOfBusinessUnit2>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='costCenterNav']/ns1:string[@key='name_defaultValue']">
<Area>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='costCenterNav']/ns1:string[@key='name_defaultValue']"/>
</Area>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='division']">
<division>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='division']"/>
</division>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='divisionNav']/ns1:string[@key='name_defaultValue']">
<divisionName>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='divisionNav']/ns1:string[@key='name_defaultValue']"/>
</divisionName>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString5']">
<brandCode>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='customString5']"/>
</brandCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='department']">
<department>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='department']"/>
</department>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='departmentNav']/ns1:string[@key='name_defaultValue']">
<departmentName>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='departmentNav']/ns1:string[@key='name_defaultValue']"/>
</departmentName>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='location']">
<locationId>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='location']"/>
</locationId>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:string[@key='name']">
<locationName>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:string[@key='name']"/>
</locationName>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='country']">
<countryCode>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='country']"/>
</countryCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:map[@key='stateNav']/ns1:string[@key='externalCode']">
<countrySubDivisions>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:map[@key='stateNav']/ns1:string[@key='externalCode']"/>
</countrySubDivisions>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='city']">
<city>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='city']"/>
</city>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='county']">
<county>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='county']"/>
</county>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='zipCode']">
<postalCode>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='locationNav']/ns1:map[@key='addressNavDEFLT']/ns1:string[@key='zipCode']"/>
</postalCode>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='timezone']">
<timezone>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='timezone']"/>
</timezone>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='costCenter']">
<cost-center>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='costCenter']"/>
</cost-center>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerEmploymentNav']/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string['payrollId']">
<rel-user-id>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerEmploymentNav']/ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string['payrollId']"/>
</rel-user-id>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='defaultFullName']">
<manager-fullname>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='managerUserNav']/ns1:string[@key='defaultFullName']"/>
</manager-fullname>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString34Nav']/ns1:string[@key='localeLabel']">
<ROW_STATE>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString34Nav']/ns1:string[@key='localeLabel']"/>
</ROW_STATE>
</xsl:if>
<xsl:if test="ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payGroup']">
<pay-group>
<xsl:value-of select="ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payGroup']"/>
</pay-group>
</xsl:if>
<xsl:choose>
<xsl:when test="$VantagePayGroup1=&quot;W3W&quot; and ($Shift=&quot;4&quot; or $Shift=&quot;5&quot; or $Shift=&quot;6&quot; or $Shift=&quot;7&quot;)">
<vantage-pay-group>
<xsl:value-of select="&quot;WXR&quot;"/>
</vantage-pay-group>
</xsl:when>
<xsl:when test="$VantagePayGroup1=&quot;V3M&quot; and ($Shift=&quot;4&quot; or $Shift=&quot;5&quot;)">
<vantage-pay-group>
<xsl:value-of select="&quot;WXQ&quot;"/>
</vantage-pay-group>
</xsl:when>
<xsl:otherwise>
<vantage-pay-group>
<xsl:value-of select="$VantagePayGroup1"/>
</vantage-pay-group>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId']">
<payroll-id>
<xsl:value-of select="substring(ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:string[@key='payrollId'],1,6)"/>
</payroll-id>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='flsaStatusNav']/ns1:string[@key='externalCode']">
<flsa-status>
<xsl:value-of select="if(ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='flsaStatusNav']/ns1:string[@key='externalCode']= 'E') then 'X' else 'N'"/>
</flsa-status>
</xsl:if>
<xsl:for-each select="ns1:map[@key='compInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='empPayCompRecurringNav']/ns1:array[@key='results']/ns1:map">
<Pay_Component_Recurring>
<xsl:if test="ns1:string[@key='payComponent']">
<pay-component>
<xsl:value-of select="ns1:string[@key='payComponent']"/>
</pay-component>
</xsl:if>
<xsl:choose>
<xsl:when test="ns1:string[@key='paycompvalue']=&quot;&quot; or ns1:string[@key='paycompvalue']=&quot; &quot;">
<paycompvalue>
<xsl:value-of select="0.0"/>
</paycompvalue>
</xsl:when>
<xsl:otherwise>
<xsl:if test="ns1:string[@key='paycompvalue']">
<paycompvalue>
<xsl:value-of select="ns1:string[@key='paycompvalue']"/>
</paycompvalue>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="ns1:string[@key='frequency']">
<frequency>
<xsl:value-of select="ns1:string[@key='frequency']"/>
</frequency>
</xsl:if>
<xsl:if test="string-length(ns1:string[@key='startDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) &lt; 0">
<startDate-PayComp>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</startDate-PayComp>
</xsl:when>
<xsl:otherwise>
<startDate-PayComp>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='startDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</startDate-PayComp>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</Pay_Component_Recurring>
</xsl:for-each>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString27Nav']/ns1:string[@key='externalCode']">
<is-eligible-for-benefit>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString27Nav']/ns1:string[@key='externalCode']"/>
</is-eligible-for-benefit>
</xsl:if>
<xsl:if test="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString42Nav']/ns1:string[@key='externalCode']">
<LOA_custom>
<xsl:value-of select="ns1:map[@key='jobInfoNav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='customString42Nav']/ns1:string[@key='externalCode']"/>
</LOA_custom>
</xsl:if>
<xsl:for-each select="ns1:map[@key='userNav']/ns1:map[@key='externalCodeOfcust_parentLocalLTINav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='cust_LocalLTIHistory']/ns1:array[@key='results']/ns1:map">
<localLTI>
<xsl:if test="ns1:string[@key='cust_PlanCode']">
<planCode>
<xsl:value-of select="ns1:string[@key='cust_PlanCode']"/>
</planCode>
</xsl:if>
<xsl:if test="ns1:string[@key='externalName']">
<sharePrice>
<xsl:value-of select="ns1:string[@key='externalName']"/>
</sharePrice>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_ShareValue']">
<shareValue>
<xsl:value-of select="ns1:string[@key='cust_ShareValue']"/>
</shareValue>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_NbShares']">
<numShares>
<xsl:value-of select="ns1:string[@key='cust_NbShares']"/>
</numShares>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_CurrencyCode']">
<currencyCode>
<xsl:value-of select="ns1:string[@key='cust_CurrencyCode']"/>
</currencyCode>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='cust_ShareGrantDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '('),')/')) &lt; 0">
<grantDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</grantDate>
</xsl:when>
<xsl:otherwise>
<grantDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</grantDate>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</localLTI>
</xsl:for-each>
<xsl:for-each select="ns1:map[@key='userNav']/ns1:map[@key='externalCodeOfcust_parentGlobalLTINav']/ns1:array[@key='results']/ns1:map[1]/ns1:map[@key='cust_GlobalLTIHistory']/ns1:array[@key='results']/ns1:map">
<localLTI>
<xsl:if test="ns1:string[@key='cust_PlanCode']">
<planCode>
<xsl:value-of select="ns1:string[@key='cust_PlanCode']"/>
</planCode>
</xsl:if>
<xsl:if test="ns1:string[@key='externalName']">
<sharePrice>
<xsl:value-of select="ns1:string[@key='externalName']"/>
</sharePrice>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_ShareValue']">
<shareValue>
<xsl:value-of select="ns1:string[@key='cust_ShareValue']"/>
</shareValue>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_NbShares']">
<numShares>
<xsl:value-of select="ns1:string[@key='cust_NbShares']"/>
</numShares>
</xsl:if>
<xsl:if test="ns1:string[@key='cust_CurrencyCode']">
<currencyCode>
<xsl:value-of select="ns1:string[@key='cust_CurrencyCode']"/>
</currencyCode>
</xsl:if>
<xsl:choose>
<xsl:when test="string-length(ns1:string[@key='cust_ShareGrantDate'])>0">
<xsl:choose>
<xsl:when test="xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '('),')/')) &lt; 0">
<grantDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') - xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '(-'),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</grantDate>
</xsl:when>
<xsl:otherwise>
<grantDate>
<xsl:value-of select="xsd:date(format-dateTime(xsd:dateTime('1970-01-01T00:00:00') + xsd:dayTimeDuration(concat('P', xsd:string(floor(xsd:long(substring-before(substring-after(ns1:string[@key='cust_ShareGrantDate'], '('),')/')) div 86400000)),'D')), &quot;[Y0001]-[M01]-[D01]&quot;))"/>
</grantDate>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</localLTI>
</xsl:for-each>
<xsl:for-each select="ns1:map[@key='empPayCompNonRecurringNav']/ns1:array[@key='results']/ns1:map">
<Pay_Component_NonRecurring>
<xsl:if test="ns1:string[@key='payComponentCode']">
<pay-component>
<xsl:value-of select="ns1:string[@key='payComponentCode']"/>
</pay-component>
</xsl:if>
<xsl:choose>
<xsl:when test="ns1:string[@key='value']=&quot;&quot; or ns1:string[@key='value']=&quot; &quot;">
<paycompvalue>
<xsl:value-of select="0.0"/>
</paycompvalue>
</xsl:when>
<xsl:otherwise>
<xsl:if test="ns1:string[@key='value']">
<paycompvalue>
<xsl:value-of select="ns1:string[@key='value']"/>
</paycompvalue>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="string-length(substring-before(substring-after(ns1:string[@key='payDate'], '('),')/'))>0">
<startDate-PayComp>
<xsl:value-of select="substring-before(substring-after(ns1:string[@key='payDate'], '('),')/')"/>
</startDate-PayComp>
</xsl:if>
</Pay_Component_NonRecurring>
</xsl:for-each>
</Employee>
</GBOEmployee>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="$ParseXML/GBOEmployee">
<GBOEmployee>
<xsl:copy-of select="Employee"/>
</GBOEmployee>
</xsl:for-each>
</GBOEmployeeList>
</tns:output>
</ns:xml>
</ns:content>
<ns:size>
<xsl:value-of select="0"/>
</ns:size>
</tns:document>
</tns:mappingData>
</tns:fwkMapping>
</tns:fwkMappingOut>
</xsl:template>
</xsl:stylesheet>
(3-3/3)