2

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

详细信息:例如,假设我已经在我的 xsd 中定义了一个水果 xml 标签。水果标签有一个属性,其值为枚举 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 枚举中使用这样的标签?我想也许我们可以将 use="required" 或 minOccurs="1" 放在 xsd:enumeration 标记中。请告诉我。

谢谢!

4

1 回答 1

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 中实现。

于 2011-06-24T21:54:26.620 回答