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',ns1:same-other-element应该存在,并且验证确实有效。但是,当ns1:some-element/text()包含 false 以外的内容时,我不在乎天气 ns1:same-other-element 是否存在。

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

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

4

1 回答 1

4

您的测试需要评估为 true 才能通过验证(您正在对某事做出断言)。您目前对您的条件所说的是:文本节点的ns1:some-element值必须为“假”并且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只要具有非“假”的值,无论是否ns1:some-other-element存在,此条件都会为真。

于 2013-01-16T15:02:17.607 回答