使用模式1.1断言错误

时间:2012-10-27 08:04:19

标签: xml xsd assertions

如果有人可以提供协助,我在创建架构时遇到问题。我正在使用Oxygen XML Editor。所以问题是我有一个如下的模式声明:

<xs:attribute name="output" type="xs:ID"  use="optional"/>
<xs:assert test="(@output ne 'result') and (@output ne 'isTimedOut')"/>

所以上面的意思是某个元素有一个'output'属性,它是可选的。但是如果定义了这个属性,那么它就不能有值'result'或'isTimedOut',即如果在实例xml中我说output =“result”那么它就不应该验证。 现在的问题是,在xml中我没有'output'属性的元素,即使我将它声明为可选。因此,如果标记没有定义输出attrbute,那么由于断言,xml不会被验证。任何人都可以建议如何具有此属性的可选行为。以下是氧气给出的错误:

Element task does not satisfy assertion (@output ne 'result') and (@output ne 'isTimedOut')

1 个答案:

答案 0 :(得分:1)

您可以检查输出属性是否存在,或者与不允许的值不同:

<xs:assert test="
     not(@output) or 
     ((@output ne 'result') and (@output ne 'isTimedOut'))"/>

此致 乔治

相关问题