【问题标题】:Can an xsd:enumeration tag be made mandatory/required?可以将 xsd:enumeration 标记设为强制/必需吗?
【发布时间】:2011-06-25 05:54:26
【问题描述】:

简短的问题: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 标记中。请告诉我。

谢谢!

【问题讨论】:

    标签: xml xsd enumeration required


    【解决方案1】:

    “用户必须至少有一个带有 Apple 属性的水果标签”是什么意思。你的意思是这个值必须出现在每个实例文档的某个地方,如果文档是有效的?或者在一些更窄的范围内(比如在 FruitBasket 元素内)?在这两种情况下,这都不是枚举类型的属性,而是对相关元素或文档的约束。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多