Схематрон проверки нескольких элементов

Предположим, у меня есть 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 ответа

Решение

Как насчет "никто не может жить за пределами Лондона":

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

Это имеет много разных решений. Пример решения 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>
Другие вопросы по тегам