xsd - XSD“一个或两个”选择构造导致内容模型不明确

标签 xsd

我正在尝试制作一个简单的XSD选择构造,以允许两个引用元素中的一个或两个,但不允许一个。构造类似于以下内容,但我不断收到歧义错误。我想念什么?

<xs:schema xmlns:xs="...">
  <xs:element name="Number" type="xs:integer"/>
  <xs:element name="Text" type="xs:string"/>
  <xs:element name="RootStructure">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:sequence>
            <xs:element ref="Number"/>
            <xs:element ref="Text"/>
          </xs:sequence>
          <xs:element ref="Number"/>
          <xs:element ref="Text"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

最佳答案

通常的方法是这样的:

<xs:schema xmlns:xs="...">
  <xs:element name="Number" type="xs:integer"/>
  <xs:element name="Text" type="xs:string"/>
  <xs:element name="RootStructure">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:sequence>
            <xs:element ref="Number"/>
            <xs:element ref="Text" minOccurs="0"/>
          </xs:sequence>
          <xs:element ref="Text"/>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

关于xsd - XSD“一个或两个”选择构造导致内容模型不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2372395/

相关文章:

协助创建 XSD 的 Java 库?

java - 具有基本类型的 XSD 元素

xml - XSD : Workaround to Unique Particle Attribution

xml - 改变选择顺序

java - 将 XSD 正则表达式转换为 Java 正则表达式

java - xml 错误元素或属性与 QName 生成不匹配:QName::=(NCName':')?NCName

XML 模式 cvc-complex-type

xsd - JAXB 选择列表

java - 如何解决此 j2ee 架构中的重复属性错误?

php - 如何在 PHP 中读取 XSD 日期时间格式?