0

如果有人可以提供帮助,我在创建模式时遇到问题。我正在使用氧气 XML 编辑器。所以问题是我有一个如下的模式声明:

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

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

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

1 回答 1

1

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

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

问候,乔治

于 2012-10-27T12:12:26.087 回答