Мое требование - для работника 11226, поскольку работник зарегистрировал два плана страхования: жизнь супруга и дополнительная жизнь, мне нужно вывести соответствующие суммы в один ряд. С помощью приведенного ниже кода xslt я смог собрать оба плана в одну строку, но не смог извлечь соответствующие суммы. Подскажите, пожалуйста, как мне получить соответствующие суммы плана?
<wd:Report_Data
xmlns:wd="urn:com.workday.report/RPT_EOI_INT016">
<wd:Report_Entry>
<wd:WORKER_GROUP>
<wd:W_Employee_ID>11464</wd:W_Employee_ID>
</wd:WORKER_GROUP>
<wd:EOI_BPLAN wd:Descriptor="Supplemental Life - Symetra (Employee)">
<wd:ID wd:type="WID">542f6c2d0e4101ac20ce49dbb22146e7</wd:ID>
<wd:ID wd:type="Insurance_Coverage_Plan_ID">Supplemental Life - Symetra (Employee)</wd:ID>
</wd:EOI_BPLAN>
<wd:AMOUNT_APPLIED wd:Descriptor="$220,000">
<wd:ID wd:type="WID">542f6c2d0e41017b8dfbf6c4b1219f02</wd:ID>
<wd:ID wd:type="Currency_Coverage_Master_Amount_ID">220000</wd:ID>
</wd:AMOUNT_APPLIED>
<wd:EOI_EVENT wd:Descriptor="Marital Status - Marriage / Domestic Partnership">
<wd:ID wd:type="WID">542f6c2d0e4101b7156c09beb221f0be</wd:ID>
<wd:ID wd:type="Benefit_Event_Type_ID">Marital_Status_-_Marriage</wd:ID>
<wd:ID wd:type="Benefit_Life_Event_Type_ID">Marital_Status_-_Marriage</wd:ID>
</wd:EOI_EVENT>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:WORKER_GROUP>
<wd:W_Employee_ID>11226</wd:W_Employee_ID>
</wd:WORKER_GROUP>
<wd:EOI_BPLAN wd:Descriptor="Supplemental Life - Symetra (Employee)">
<wd:ID wd:type="WID">542f6c2d0e4101ac20ce49dbb22146e7</wd:ID>
<wd:ID wd:type="Insurance_Coverage_Plan_ID">Supplemental Life - Symetra
(Employee)</wd:ID>
</wd:EOI_BPLAN>
<wd:INFORCE_AMOUNT wd:Descriptor="$140,000">
<wd:ID wd:type="WID">542f6c2d0e410197b9e2f5c4b1218f02</wd:ID>
<wd:ID wd:type="Currency_Coverage_Master_Amount_ID">140000</wd:ID>
</wd:INFORCE_AMOUNT>
<wd:AMOUNT_APPLIED wd:Descriptor="$750,000">
<wd:ID wd:type="WID">542f6c2d0e41017cc8d4fcc4b121f002</wd:ID>
<wd:ID wd:type="Currency_Coverage_Master_Amount_ID">750000</wd:ID>
</wd:AMOUNT_APPLIED>
<wd:EOI_EVENT wd:Descriptor="Employee or Dependent Gains/Loses Other Coverage">
<wd:ID wd:type="WID">542f6c2d0e4101e697a909beb221f1be</wd:ID>
<wd:ID wd:type="Benefit_Event_Type_ID">Employee_or_Dependent_Gains/Loses_Other_Coverage</wd:ID>
<wd:ID wd:type="Benefit_Life_Event_Type_ID">Employee_or_Dependent_Gains/Loses_Other_Coverage</wd:ID>
</wd:EOI_EVENT>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:WORKER_GROUP>
<wd:W_Employee_ID>11226</wd:W_Employee_ID>
</wd:WORKER_GROUP>
<wd:EOI_BPLAN wd:Descriptor="Spouse Life - Symetra (Spouse/Domestic Partner)">
<wd:ID wd:type="WID">542f6c2d0e41015be90a63dbb221afe7</wd:ID>
<wd:ID wd:type="Insurance_Coverage_Plan_ID">Spouse Life - Symetra (Spouse/Domestic
Partner)</wd:ID>
</wd:EOI_BPLAN>
<wd:AMOUNT_APPLIED wd:Descriptor="$250,000">
<wd:ID wd:type="WID">542f6c2d0e4101c1a255f7c4b121a502</wd:ID>
<wd:ID wd:type="Currency_Coverage_Master_Amount_ID">250000</wd:ID>
</wd:AMOUNT_APPLIED>
<wd:EOI_EVENT wd:Descriptor="Employee or Dependent Gains/Loses Other Coverage">
<wd:ID wd:type="WID">542f6c2d0e4101e697a909beb221f1be</wd:ID>
<wd:ID wd:type="Benefit_Event_Type_ID">Employee_or_Dependent_Gains/Loses_Other_Coverage</wd:ID>
<wd:ID wd:type="Benefit_Life_Event_Type_ID">Employee_or_Dependent_Gains/Loses_Other_Coverage</wd:ID>
</wd:EOI_EVENT>
</wd:Report_Entry>
</wd:Report_Data>
Вот мой код xslt, который я использовал
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xsl" version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:this="this.file/eib" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wd="urn:com.workday.report/RPT_EOI_INT016">
<xsl:output method="text" encoding="Windows-1252"/>
<xsl:variable name="linefeed" select="'
'"/>
<xsl:variable name="separator" select='","'/>
<xsl:template match="/">
<!-- Header -->
<xsl:text>EE ID,EE Supp Life In-force Amount,EE Supp Life Total Applied,EE Supp Life Event,Spouse Life In-force Amount,Spouse Life Total Applied,Spouse Life Event</xsl:text>
<xsl:value-of select="$linefeed"/>
<xsl:for-each-group select="/wd:Report_Data/wd:Report_Entry"
group-by="wd:WORKER_GROUP/wd:W_Employee_ID">
<xsl:value-of select="wd:WORKER_GROUP/wd:W_Employee_ID"/>
<xsl:value-of select="$separator"/>
<xsl:for-each select="current-group()">
<xsl:choose>
<xsl:when test="wd:EOI_BPLAN/wd:ID[@wd:type = 'Insurance_Coverage_Plan_ID'] = 'Supplemental Life - Symetra (Employee)'">
<xsl:value-of select="wd:AMOUNT_APPLIED/@wd:Descriptor[/wd:EOI_BPLAN/wd:ID[@wd:type = 'Insurance_Coverage_Plan_ID'] = 'Supplemental Life - Symetra (Employee)']"/>
</xsl:when>
<xsl:when test="wd:EOI_BPLAN/wd:ID[@wd:type = 'Insurance_Coverage_Plan_ID'] = 'Spouse Life - Symetra (Spouse/Domestic Partner)'">
<xsl:value-of select="wd:AMOUNT_APPLIED/wd:ID[@wd:type = 'Currency_Coverage_Master_Amount_ID']"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'VALIDATE'"/>
</xsl:otherwise>
</xsl:choose>
<xsl:value-of select="$separator"/>
</xsl:for-each>
<xsl:value-of select="$linefeed"/>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
Ожидаемый результат:
EE ID,EE Supp Life In-force Amount,EE Supp Life Total Applied,EE Supp Life Event,Spouse Life In-force Amount,Spouse Life Total Applied, Spouse Life Event
11464,,220000,Marital_Status_-_Marriage,,,
11226,140000,750000,Employee_or_Dependent_Gains/Loses_Other_Coverage,,250000,Employee_or_Dependent_Gains/Loses_Other_Coverage
Фактический результат:
11464,,
11226,,250000,
Две глобальные переменные:
- имя переменной = "linefeed" select = "''"
- имя переменной = " разделитель "select = '", "