【发布时间】:2018-09-01 11:52:22
【问题描述】:
我有一个问题,我需要检查我的 xml 中是否存在特定值。如果该值存在,则该记录不应映射到目标模式。 xml 和 xsd 相当大,所以我会尽量简化它,它看起来像这样。
简化的xml:
<ns0:Root xmlns:ns0="http://Schema1">
<Person>
<Employment>
<EmploymentPeriod>
<lart code="0674" />
</EmploymentPeriod>
<EmploymentPeriod>
<lart code="2222" />
</EmploymentPeriod>
</Employment>
<Employment>
<EmploymentPeriod>
<lart code="0198" />
</EmploymentPeriod>
</Employment>
</Person>
<Person>
<Employment>
<EmploymentPeriod>
<lart code="0133" />
</EmploymentPeriod>
</Employment>
</Person>
</ns0:Root>
基本上,一个 Person 可以包含多个就业期的就业元素。我需要检查记录 lart 及其代码属性的值是否为 0198,如果是这样,则该人不应映射到目标架构。
<xsl:if test="ns0:Employment/ns0:EmploymentPeriod/ns0:lart[@code=0198]">
移除大部分人,但有些人会通过。我尝试了许多不同的方法,但 xslt 不是我的强项。
会不会是xslt代码只检查第一条Employment记录中的值?
非常感谢任何帮助。
【问题讨论】:
-
您需要向我们展示两件事:(a) 一个可以复制问题的简化但完整的 XSLT 样式表; (b) 包含 XSLT 未能 过滤掉的条目的示例 XML。