xml - XSLT contains error -


i apologize crude explanation, i'm new xml , xslt. patience.

here's challange, i'm trying build transformation csv creates new line each instance of employee's benefit enrollments. so, if they're enrolled in 2 plans, line gets created each plan. same being done thier dependents.
xml, how loop through different nodes , pick right data?

while trying make sure don't make lines dependents aren't enrolled in benefit, came across error:

description: xpty0004: sequence of more 1 item not allowed first argument of contains() ("system_id", "dependent_id", ...)

i see there more 1 id type in dependent element, don't want specifiy 1 use because need scan both of them.

here's xml:

<report>     <employee_id>111111</employee_id>     <last_name>allen</last_name>     <first_name>amy</first_name>     <benefit_elections>         <benefit_type>accident</benefit_type>         <coverage>employee + family</coverage>         <enrolled_worker descriptor="amy allen (111111)">             <id type="system_id">aaaaaa</id>             <id type="employee_id">111111</id>         </enrolled_worker>         <benefit_plan descriptor="accident">             <id type="system_id">121212</id>             <id type="health_care_id">hcp01</id>         </benefit_plan>         <covered_dependents descriptor="sally allen">             <id type="system_id">bbbbbb</id>             <id type="dependent_id">22222</id>         </covered_dependents>         <covered_dependents descriptor="bob allen">             <id type="system_id">ffffff</id>             <id type="dependent_id">44444</id>         </covered_dependents>     </benefit_elections>     <benefit_elections>         <benefit_type>critical illness</benefit_type>         <coverage>$10,000</coverage>         <calculated_coverage>$10,000</calculated_coverage>         <enrolled_worker descriptor="amy allen (111111)">             <id type="system_id">aaaaaa</id>             <id type="employee_id">111111</id>         </enrolled_worker>         <benefit_plan             descriptor="critical illness (child)">             <id type="system_id">ssssss</id>             <id type="insurance_coverage_plan_id">icpchild</id>         </benefit_plan>         <covered_dependents descriptor="sally allen">             <id type="system_id">bbbbbb</id>             <id type="dependent_id">22222</id>         </covered_dependents>     </benefit_elections>     <benefit_elections>         <benefit_type>critical illness</benefit_type>         <coverage>$15,000</coverage>         <calculated_coverage>$15,000</calculated_coverage>         <enrolled_worker descriptor="amy allen (111111)">             <id type="system_id">aaaaaa</id>             <id type="employee_id">111111</id>         </enrolled_worker>         <benefit_plan             descriptor="critical illness (spouse)">             <id type="system_id">tttttt</id>             <id type="insurance_coverage_plan_id">icpspouse</id>         </benefit_plan>         <covered_dependents descriptor="bob allen">             <id type="system_id">ffffff</id>             <id type="dependent_id">44444</id>         </covered_dependents>     </benefit_elections>     <benefit_elections>         <benefit_type>critical illness</benefit_type>         <coverage>$30,000</coverage>         <calculated_coverage>$30,000</calculated_coverage>         <enrolled_worker descriptor="amy allen (111111)">             <id type="system_id">aaaaaa</id>             <id type="employee_id">111111</id>         </enrolled_worker>         <benefit_plan             descriptor="critical illness (employee)">             <id type="system_id">uuuuuu</id>             <id type="insurance_coverage_plan_id">icpemployee</id>         </benefit_plan>     </benefit_elections>     <dependents>         <first_name>sally</first_name>         <last_name>allen</last_name>         <relationship descriptor="child">             <id type="related_person_relationship_id">child</id>         </relationship>         <dependent_id descriptor="sally allen">             <id type="system_id">bbbbbb</id>             <id type="dependent_id">22222</id>         </dependent_id>     </dependents>     <dependents>         <first_name>bob</first_name>         <last_name>allen</last_name>         <relationship descriptor="spouse">             <id type="related_person_relationship_id">spouse</id>         </relationship>         <uses_tobacco>0</uses_tobacco>         <dependent_id descriptor="bob allen">             <id type="system_id">ffffff</id>             <id type="dependent_id">44444</id>         </dependent_id>     </dependents> </report> 

here's xslt:

<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform"     xmlns:xs="http://www.w3.org/2001/xmlschema"     exclude-result-prefixes="xs"     version="2.0">     <xsl:template match="/">             <xsl:for-each select="report">                 <record>                     <xsl:call-template name="employeedata"/>                     <xsl:for-each select="dependents">                         <xsl:call-template name="print_dependents">                             <xsl:with-param name="benefitsextractemployeenode" select=".."/>                         </xsl:call-template>                     </xsl:for-each>                 </record>             </xsl:for-each>     </xsl:template>     <xsl:template name="employeedata">      <first_name><xsl:value-of select="first_name"/></first_name>            <last_name><xsl:value-of select="last_name"/></last_name>         <benefit_type><xsl:value-of select="benefit_elections/benefit_type"/></benefit_type>         <coverage><xsl:value-of select="benefit_elections/coverage"/></coverage>         <calculated_coverage><xsl:value-of select="benefit_elections/calculated_coverage"/></calculated_coverage>      </xsl:template>     <xsl:template name="print_dependents">         <xsl:param name="benefitsextractemployeenode"/>         <xsl:if test="contains($benefitsextractemployeenode/benefit_elections/covered_dependents[id/@type ='dependent_id']/id/@type,              dependents/dependent_id[id/@type='dependent_id']/id/@type)">        <dependent>            <first_name><xsl:value-of select="dependents/first_name"/></first_name>               <last_name><xsl:value-of select="dependents/last_name"/></last_name>            <benefit_type><xsl:value-of select="$benefitsextractemployeenode/benefit_elections/benefit_type"/></benefit_type>            <coverage><xsl:value-of select="$benefitsextractemployeenode/benefit_elections/coverage"/></coverage>            <calculated_coverage><xsl:value-of select="$benefitsextractemployeenode/benefit_elections/calculated_coverage"/></calculated_coverage>        </dependent>              </xsl:if>     </xsl:template>  </xsl:stylesheet> 

it's hard tell you're trying (you mention transforming csv, xslt outputting xml) without example of desired output.

however, should able move contains() id element in xsl:if test...

    <xsl:if test="$benefitsextractemployeenode/benefit_elections/covered_dependents[         id/@type ='dependent_id']/id[contains(@type,          dependents/dependent_id[id/@type='dependent_id']/id/@type)]">         ...     </xsl:if> 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -