2

私は最近、schematron を使用して xml ドキュメントを検証し始めました。これまでのところかなり感銘を受けていますが、適切に動作させることができないルールに出くわしました。

以下に簡単な例を作成しました。

<iso:assert test="ns1:some-element/text() = 'false' and /ns1:same-other-element">Error message</iso:assert>

ns1:some-element/text()基本的に、 「false」が含まれている場合、存在する必要がある2つのことを検証したいと思いns1:same-other-elementます。その検証は実際に機能します。ただし、ns1:some-element/text()false 以外のものが含まれている場合は、天候 ns1:same-other-element が存在するかどうかは気にしません。

この時点で、ルールは、ns1:same-other-element が欠落しており、値がns1:some-element/text()「false」でない場合にも起動します。

これを回避する方法はありますか?

4

1 に答える 1

4

検証に合格するには、テストが true と評価される必要があります (何かについてアサーションを行っています)。条件で現在言っていることは、次のとおりです。テキストノードのns1:some-element値は「false」である必要があり、ns1:some-other-element存在する必要があります。それ以外はエラーです。

おそらくあなたが探している条件は

<iso:assert test="ns1:some-element = 'false' and /ns1:same-other-element or ns1:some-element != 'false'">Error message</iso:assert>

この条件は、存在ns1:some-elementするかどうかに関係なく、値が「false」でない場合は常に true になりますns1:some-other-element

于 2013-01-16T15:02:17.607 に答える