Schematron验证多个元素

MrD*_*MrD 1 xml xpath xquery schematron

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

<people>

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

</people>
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

<sch:rule context="people">
            <sch:assert test="person/city = 'London'">Everybody must live in London!</sch:assert>
 </sch:rule>
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*lak 6

怎么样"没有人可以住在伦敦以外":

<sch:rule context="people">
    <sch:assert test="not(person[city != 'London'])">Everybody must live in London!</sch:assert>
</sch:rule>
Run Code Online (Sandbox Code Playgroud)

  • 我不这么认为.如果你想为`person`元素做出断言,不要在`people`上下文中进行断言.(当然,除非您希望它们仅适用于`<people>`元素内的人,在这种情况下,您可以将上下文设置为`people/person`,并将断言设置为`city ='London'`.) (2认同)