对于下面给出的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引擎如何确定哪个类型是10
? xs:union
表示or
,因此它是xs:positiveInteger
或xs:string
。我们在XML中将string
表示为<jeans_size>'10'</jeans_size>
吗?
答案 0 :(得分:0)
来自https://www.w3.org/TR/xmlschema-2/#dt-union:
在定义中指定了·memberTypes·的顺序(即,元素的子节点的顺序,或memberTypes属性中的QNames的顺序)是重要的。在验证期间,元素或属性的值将根据它们在定义中出现的顺序针对“memberTypes”进行验证,直到找到匹配项为止。
在您的情况下,10是xs:positiveInteger
。