在定义XSD时,您可以选择将类型定义为嵌套类型或全局类型(complexType)。
我了解到,当涉及到形态变化或元素重用时,全局类型更加有用。
然而,如果您有一个大型数据模型,您将不得不为每个级别定义一个全局复杂类型,然后创建引用全局类型的元素。
嵌套
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname"/>
<xs:element name="lastname"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element name="street"/>
<xs:element name="city"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
全局
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="nameType"/>
<xs:element name="address" type="addressType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="nameType">
<xs:sequence>
<xs:element name="firstname"/>
<xs:element name="lastname"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addressType">
<xs:sequence>
<xs:element name="street"/>
<xs:element name="city"/>
</xs:sequence>
</xs:complexType>
因此,我的问题是:何时使用嵌套类型而不是使它们全局?
对于任何有兴趣的人:我的问题与这个问题(XML属性 vs元素)有些相关。