可以强制/要求xsd:enumeration标记吗?

时间:2011-06-24 18:35:36

标签: xml xsd enumeration required

简短形式问题:xsd:enumeration标记是否具有必需属性,因为在使用此枚举的任何标记中必须至少使用一次特定的枚举值?

详细信息:例如,假设我已经在xsd中定义了一个水果xml标记。 fruit标签有一个属性,其值为枚举FruitType。它定义如下:

<xsd:simpleType name="FruitType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Apple" />
<xsd:enumeration value="Banana" />
<xsd:enumeration value="Peach" />
<xsd:enumeration value="Orange" />
</xsd:restriction>
</xsd:simpleType>

我想要求Apple枚举值,以便用户必须至少有一个具有Apple属性的水果标记。是否可以在xsd枚举中使用这样的标记?我想也许我们可以在xsd:enumeration标签中使用use =“required”或minOccurs =“1”。请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:2)

你的意思是“用户必须至少有一个带有属性Apple的水果标签”。您是否认为如果文档有效,此值必须出现在每个实例文档的某处?或者在一些较窄的范围内(比如在FruitBasket元素中)?在这两种情况下,这不是枚举类型的属性,它是对所讨论的元素或文档的约束。

我认为在XSD 1.0中没有办法做到这一点。在XSD 1.1中,与大多数事情一样,它可以通过断言来完成。例如

<xs:element name="FruitBasket">
  ...
  <xs:assert test=".//Fruit = 'Apple'"/>
</xs:element>

XSD 1.1目前在Xerces和Saxon中实施。