Schematron для проверки для тестирования узла, если содержимое другого узла соответствует значению - PullRequest
0 голосов
/ 12 января 2019

У меня есть набор записей, которые мне нужно проверить, чтобы убедиться, что узел существует, но только если запись не относится к определенному типу. Например:

<record>
  <type>Audio</type>
</record>
<record>
  <type>Video</type>
</record>
<record>
  <type>Text</type>
  <preview>https://website.com/preview.jpg</preview>
</record>

Я хочу сказать, что запись недействительна, если у нее нет поля <preview>, если только это не аудио- или видеофайл, в этом случае без поля <preview> хорошо.

Но как-то так не работает:

<pattern>
    <rule context="record/type !='Audio' and record/type !='Video'">
        <assert test="record/preview">Needs preview image</assert>
    </rule>
</pattern>

Есть ли способ сделать проверку одного узла условной по значению другого узла?

1 Ответ

0 голосов
/ 12 января 2019

Вы можете написать правило

<rule context="record[not(type = ('Audio', 'Video'))]">
  <assert test="preview">Needs preview image</assert>
</rule>
...