在一个项目中,我们必须连接到一个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的限制的用例?
答案 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的缩写替代:它们对应于 相同的类型定义组件。