如何验证XML节点值到xs:union

时间:2016-10-02 10:51:49

标签: xml xsd

对于下面给出的XSD:

<xs:element name="jeans_size">
  <xs:simpleType>
    <xs:union memberTypes="sizebyno sizebystring" />
  </xs:simpleType>
</xs:element>

<xs:simpleType name="sizebyno">
  <xs:restriction base="xs:positiveInteger">
    <xs:maxInclusive value="42"/>
  </xs:restriction>
</xs:simpleType>

<xs:simpleType name="sizebystring">
  <xs:restriction base="xs:string">
    <xs:enumeration value="10"/>
    <xs:enumeration value="11"/>
    <xs:enumeration value="12"/>
  </xs:restriction>
</xs:simpleType>

我们有一个XML节点:

<jeans_size>10</jeans_size>

XSD引擎如何确定哪个类型是10xs:union表示or,因此它是xs:positiveIntegerxs:string。我们在XML中将string表示为<jeans_size>'10'</jeans_size>吗?

1 个答案:

答案 0 :(得分:0)

来自https://www.w3.org/TR/xmlschema-2/#dt-union

  

在定义中指定了·memberTypes·的顺序(即,元素的子节点的顺序,或memberTypes属性中的QNames的顺序)是重要的。在验证期间,元素或属性的值将根据它们在定义中出现的顺序针对“memberTypes”进行验证,直到找到匹配项为止。

在您的情况下,10是xs:positiveInteger