XML Schema:基于xs:anyType的限制有什么好处

时间:2015-10-06 10:09:52

标签: java-ee xsd wsdl

在一个项目中,我们必须连接到一个web服务,该服务在其wsdl中定义了许多基于xs限制的类型:anyType如下:

<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="myElement" type="myTypeDef" />

    <xs:complexType name="myTypeDef">
          <xs:complexContent>
              <xs:restriction base="xs:anyType">
                  <xs:sequence>
                      <xs:element name="elementOne" type="xs:string"/>
                      <xs:element name="elementTwo" type="xs:string"/>
                  </xs:sequence>
              </xs:restriction>
          </xs:complexContent>
    </xs:complexType>

</xs:schema>

这样的普通类型定义有什么区别
    <xs:complexType name="myTypeDefPlain">
        <xs:sequence>
            <xs:element name="elementOne" type="xs:string"/>
            <xs:element name="elementTwo" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>

据我所知,两种类型定义完全相同。真的吗?是否有使用基于xs:anyType的限制的用例?

1 个答案:

答案 0 :(得分:1)

在这种情况下,没有。检查the spec, §3.4.2,尤其是示例:

<xs:complexType name="length2">
 <xs:complexContent>
  <xs:restriction base="xs:anyType">
   <xs:sequence>
    <xs:element name="size" type="xs:nonNegativeInteger"/>
    <xs:element name="unit" type="xs:NMTOKEN"/>
   </xs:sequence>
  </xs:restriction>
 </xs:complexContent>
</xs:complexType>

<xs:complexType name="length3">
 <xs:sequence>
  <xs:element name="size" type="xs:nonNegativeInteger"/>
  <xs:element name="unit" type="xs:NMTOKEN"/>
 </xs:sequence>
</xs:complexType>
     

length3是length2的缩写替代:它们对应于   相同的类型定义组件