Reputation: 12560
I have this complex type:
<xsd:complexType name="Identifier">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="Version" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Now I want to include this in another complex type and I've been doing that like this:
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="Identifier"/>
<!-- More elements here -->
</xsd:sequence>
</xsd:complexType>
This isn't what I really want though. I want to include the Identifier type's elements directly in my second complex type without creating a new element. E.g. the same as just doing this:
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="Version" type="xsd:string"/>
<!-- More elements here -->
</xsd:sequence>
</xsd:complexType>
Hope that makes sense.
Thanks in advance.
Upvotes: 6
Views: 1975
Reputation: 403441
You can extend types, like this:
<xsd:complexType name="MySubType">
<xsd:complexContent>
<xsd:extension base="Identifier">
<xsd:sequence>
<!-- More elements here -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Upvotes: 7
Reputation: 8941
this complex type will always resolve to
<Identifier>
<Id>string</Id>
<Version>string</Version>
</Identifier>
if you don't want a child structure, you could define Id and Version as elements and reference them using
<xsd:element ref="Id"/>
<xsd:element ref="Version"/>
later on. But then you don't have the guarantee that they both occur
You can also make Id and Version attributes to the Identifier element in a complex type
good luck Mike
Upvotes: 1