Say I have a duplicate global element
A using two different definitions:
Code:
<xsd:complexType name="AType">
<xsd:sequence>
<xsd:element name="first" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="CType">
<xsd:complexContent>
<xsd:extension base="BType">
<xsd:sequence>
<xsd:element name="third" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="A" type="AType" />
<xsd:element name="A" type="xsd:string" />
<xsd:element name="B" substitutionGroup="A">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="AType">
<xsd:sequence>
<xsd:element name="second" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="C" substitutionGroup="B" type="CType" />
<xsd:element name="container">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="A" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
As you can see A, B and C are supposed to be in a tree of which A is root. The
container referencing A accepts either type. However this would of course be the case if the second definition of A
Code:
<xsd:element name="A" type="xsd:string" />
wouldn't be there.
1: is this legal at all (i.e. the global duplicate element)
2: if 1:YES - How can the ref="A" be resolved?
Thanks for the advice.