いくつかの Schematron ルールを作成しようとしていますが、そのうちの 1 つは、要素が親要素のスコープ内で一意であるかどうかをチェックすることになっています。だから私は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」要素が一意かどうかを確認する必要があります。この特定の例では、id="qw1"を持つelem には、値 "3" を持つ 2 つの要素 "a" があります。これは許可されるべきではありません。
これまでのところ、私はこの種のルールに行き着きました:
<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の直接の子だけでなく、ドキュメント全体を調べているため、これは機能しません。