在使用XML Schema 1.1时,我想定义一个完全一起出现的属性组,即attributeGroup中的所有属性都存在或不存在。在以下示例中,我希望<anelement>
同时显示两个属性(attr_one
和attr_two
),或者两个属性都不存在,从不存在单个属性。
<attributeGroup name="attrgroup">
<attribute name="attr_one" />
<attribute name="attr_one" />
</attributeGroup>
<element name="anelement">
<complexType>
<attributeGroup ref="attrgroup" />
</complexType>
</element>
据我了解,XML Schema 1.0无法指定这些属性关系(正确吗?)。在XSD 1.1中指定它们的最佳方法是什么?我想我可以使用assert
来指定关系,如下所示:
<element name="anelement">
<complexType>
<attributeGroup ref="attrgroup" />
<assert test="(@attr_one and @attr_two) or not(@attr_one or @attr_two)" />
</complexType>
</element>
但是我希望1.1中添加了一些内容,允许我使用现有语言指定关系,例如: use
上的attributeGroup
属性。在XML Schema 1.1中指定此关系的最佳方法是什么?
答案 0 :(得分:1)
断言是这样做的方法。更简单的配方是
test="exists(@attr_one) = exists(@attr_two)"
或者你可以做到
test="count(@attr_one|@attr_two) != 1"