打我的墙在这里...XSLT 2.0。循环里面一个函数
我有以下数据,主要员工可能有多个家属。我需要创建一个函数来匹配员工的SSN(ab:SSN)和Dependent_SSN,并确定他们中的一个是否为'配偶'。如果是这样,那么我们将返回'配偶'的Dependent_SSN。 如果不是,我们将继续并返回下一个非'Spouse'Dependent_SSN。
我想创建一个函数,因为我认为我会多次需要这个函数。代码片段位于正在执行其他循环功能的现有模板中。
我已经试过,但氧气返回一个错误:
<xsl:function name="ab:PQB">
<xsl:param name="EE_SSN">
</xsl:param>
<xsl:for-each select="/ab:Report_Data/ab:Report_Entry[ab:Employee_ID=$EE_SSN]/ab:Report_Data/ab:Report_Entry[ab:Employee_ID=$EE_SSN]ab:dependents/ab:Dependent_SSN">
</xsl:for-each>
返回的错误是:
“引擎名称:撒克逊PE 9.3.0.5 严重性:致命 描述:意外令牌名称“wd:依赖人”超越表达式结尾“
我知道我需要测试更高级别的SSN,以防止通过家属循环,但就像我说的”我对我的墙“:)
数据是在这里:
<ab:Report_Entry>
<ab:SSN>888881006</ab:SSN>
<ab:Last_Name>Smith</ab:Last_Name>
<ab:First_Name>Kimberly</ab:First_Name>
<ab:dependents>
<ab:Dependent_SSN>888881009</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Spouse">
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881004</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Child">
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881003</ab:Dependent_SSN>
<ab:Relation ab:Descriptor="Child">
<ab:ID ab:type="Related_Person_Relationship_ID">Child</ab:ID>
</ab:Relation>
</ab:dependents>
<ab:dependents>
<ab:Dependent_SSN>888881001</ab:Dependent_SSN>
<ab:Dependent_ID>1032D-4</ab:Dependent_ID>
<ab:Relation ab:Descriptor="Child">
<ab:ID ab:type="Related_Person_Relationship_ID">Child</ab:ID>
</ab:Relation>
</ab:dependents>
</ab:Report_Entry>
谢谢任何意见!
Martin,谢谢。我确定如何处理输入函数的输入,但我可以研究那个输入函数。 我想你的建议,但收到以下错误: **引擎名称:撒克逊PE 9.3.0.5 严重性:致命 说明:“/”开头不能选择包含上下文项树的根节点:在上下文项未定义** –
路径本身不再是错误,但是当您尝试在函数内部使用它时,它会导致您现在看到的错误。您必须将节点作为参数传递给您的函数,并写入相对于该节点的路径,例如 xsl:param name =“EE_SSN”as =“xs:string”/> XSL:功能>'。再次,这是一个概念性修复,而不是尝试修复该功能。 –