Al definir XSD que puede elegir para definir sus tipos como tipos anidados o tipos globales (complexType).XSD: Tipos anidados vs Tipos globales
Entiendo que los tipos globales son de mucho más uso cuando se trata de morfismo o reutilización de elementos.
Sin embargo, si tiene un modelo de big data, debe definir para cada nivel un complexType global y luego crear un elemento que haga referencia al tipo global.
anidada
<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>
Global
<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>
Por lo tanto, mi pregunta: ¿Cuándo se usan tipos anidados en vez de hacerlos global?
Para cualquier persona interesada: Mi pregunta de alguna manera se relaciona con esta pregunta (XML attribute vs element).