Schematron验证多个元素

时间:2015-10-25 15:39:38

标签: xml xpath xquery schematron

假设我有一个XML文档定义:

<people>

  <person>
    <city>London</city>
  </person>
  <person>
    <city>Paris</city>
  </person>

</people>

我想要一个检查每个人住在伦敦的图示器。

我试过了:

<sch:rule context="people">
            <sch:assert test="person/city = 'London'">Everybody must live in London!</sch:assert>
 </sch:rule>

但是,只要有一个人居住在伦敦,这将会恢复正常。有没有办法告诉schematron将测试应用于匹配XPathcondition人/城市的每个元素?

2 个答案:

答案 0 :(得分:6)

&#34;没有人可以住在伦敦以外的地方&#34;:

gl.finish

答案 1 :(得分:3)

这有许多不同的解决方案。示例解决方案1,报告是否有人不住在伦敦:

<sch:rule context="people">
  <sch:report test="person/city != 'London'">Everybody must live in London!</sch:report>
</sch:rule>

示例解决方案2,断言每个人都必须住在伦敦,请注意,这会将每个不在伦敦的人报告为错误,而不是仅报告节点people

<sch:rule context="people/person">
    <sch:assert test="city = 'London'">This person should be living in london</sch:assert>
</sch:rule>