XSD选择元素和简单类型

时间:2011-08-24 15:31:14

标签: xml xsd

如何编写XSD,应该在简单类型和复杂类型之间进行选择。

例如,所有这些XML:

<a>
  <b/>
</a>

<a>
  <c/>
</a>

<a>
  100
</a>

(最后一个XML中只允许使用整数)应该有效。

PS:&lt; a&gt;中仅允许一个元素。标签

<a>
  <b/>
  <c/>
</a>

无效。

2 个答案:

答案 0 :(得分:3)

<xs:element name="a">
  <xs:complexType mixed="true">
    <xs:choice>
      <xs:element name="b" type="xs:string" />
      <xs:element name="c" type="xs:string" />
    </xs:choice>
  </xs:complexType>
</xs:element>

希望有所帮助。

编辑:我已更新样本。但是,您不能将第三个示例中的类型限制为整数。 XSD不支持您想要做的事情。

答案 1 :(得分:-1)

可能是这样的:

<xsd:element name="a">
  <xsd:complexType>
    <xsd:choice>
      <xsd:element name="b">
        <xsd:complexType/>
      </xsd:element>
      <xsd:element name="c">
        <xsd:complexType/>
      </xsd:element>
      <xsd:element>
        <xsd:simpleType>
          <xsd:restriction base="xsd:integer"/>
        </xsd:simpleType>
      </xsd:element>
    </xsd:choice>
  </xsd:complexType>
</xsd:element>

保存情况?