Xml XSLT包含错误
很抱歉,我的解释很粗糙,我对xml和xslt相当陌生。谢谢你的耐心 这是挑战,我正在尝试构建一个到csv的转换,为员工福利登记的每个实例创建一个新行。因此,如果他们在两个计划中注册,则会为每个计划创建一行。他们的受抚养人也是如此。Xml XSLT包含错误,xml,xslt,foreach,contains,Xml,Xslt,Foreach,Contains,很抱歉,我的解释很粗糙,我对xml和xslt相当陌生。谢谢你的耐心 这是挑战,我正在尝试构建一个到csv的转换,为员工福利登记的每个实例创建一个新行。因此,如果他们在两个计划中注册,则会为每个计划创建一行。他们的受抚养人也是如此。 使用xml,我如何循环不同的节点并选择正确的数据 在尝试确保不为未参加福利的受抚养人设置行时,我遇到了以下错误: 描述:XPTY0004:包含多个项的序列不允许作为contains()的第一个参数(“系统ID”、“依赖ID”、…) 我看到一个依赖元素中有不止一种ID类
使用xml,我如何循环不同的节点并选择正确的数据 在尝试确保不为未参加福利的受抚养人设置行时,我遇到了以下错误: 描述:XPTY0004:包含多个项的序列不允许作为contains()的第一个参数(“系统ID”、“依赖ID”、…) 我看到一个依赖元素中有不止一种ID类型,但我不想指定使用哪一种,因为我需要扫描这两种类型 以下是我的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>
111111
艾伦
艾米
意外事故
员工+家庭
AAAAA
111111
121212
hcp01
bbbbbb
22222
ffffff
44444
危重病
$10,000
$10,000
AAAAA
111111
SSSS
icpchild
bbbbbb
22222
危重病
$15,000
$15,000
AAAAA
111111
tttttt
ICPShouse
ffffff
44444
危重病
$30,000
$30,000
AAAAA
111111
乌乌
ICP雇员
俏皮话
艾伦
小孩
bbbbbb
22222
上下快速移动
艾伦
配偶
0
ffffff
44444
以下是我的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>
如果没有所需输出的示例,很难准确地说出您想要做什么(您提到转换为CSV,但您的XSLT正在输出XML) 但是,您应该能够将
contains()
移动到xsl:if
测试中的ID
元素中
<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>
...
你说得对,我没有包括csv转换部分来尝试简化。谢谢如果有人能为我解释下一个难题,那就太好了。现在我可以得到这个值了,每个人在元素中得到4个值。每个节点一个。我如何确保每个人都有两份记录,一份是事故记录,另一份是相应的严重疾病记录?