Schematron条件验证

时间:2013-01-16 14:39:52

标签: xml validation xslt schematron

我最近开始使用schematron来验证xml文档。到目前为止,我对它印象非常深刻,但我偶然发现了一条我无法正常工作的规则。

我在下面做了一个简单的例子。

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

基本上我想验证两件事,如果ns1:some-element/text()包含'false',ns1:same-other-element应该存在,并且验证确实有效。但是,当ns1:some-element/text()包含非虚假的内容时,我不关心天气ns1:是否存在相同的其他元素。

此时,当ns1:same-other-element缺失且ns1:some-element/text()的值不是'false'时,规则也会触发

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您的测试需要评估为true才能通过验证(您正在制作关于某事的assertion)。您目前对您的条件说的是: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',无论是否存在ns1:some-other-element,此条件都将为真。