Я пытаюсь написать несколько правил Schematron, и одно из них должно проверить, являются ли элементы уникальными в области действия родительского элемента. Итак, у меня есть пример структуры XML:
<abc>
<elem id="qw0">
<a>1</a>
<a>2</a>
<a>3</a>
</elem>
<elem id="qw1">
<a>1</a>
<a>2</a>
<a>3</a>
<a>3</a>
</elem>
</abc>
Мое правило должно проверять, является ли каждый из элементов "a" элемента уникальным. В этом конкретном примере для elem с id = "qw1" есть два элемента "a" со значением "3". Это не должно быть разрешено.
Пока я пришел к такому правилу:
<iso:pattern id="doc.abc">
<iso:title>checking ABC</iso:title>
<iso:rule context="elem">
<iso:assert test="count(a[. = current()]) = 1">TACs should be unique.</iso:assert>
</iso:rule>
</iso:pattern>
Но это не работает, так как просматривает весь документ, а не только прямые дочерние элементы elem .