I would like to specify a single choice type for several expandable types.
For example, let's say we have a sea, there are many types of fish in the sea. Therefore, in XML, I will write:
<Sea name="Atlantic Ocean"> <Tuna name="tuna1" /> <Carp name="carp1" /> <Carp name="carp2" /> <Tuna name="tuna2" /> <Salmon name="salmon1" /> </Sea>
Xsd
<xs:complexType name="Fish"> </xs:complexType> <xs:complexType name="Salmon"> <xs:complexContent> <xs:extension base="Fish"> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Carp"> <xs:complexContent> <xs:extension base="Fish"> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Tuna"> <xs:complexContent> <xs:extension base="Fish"> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="Sea"> <xs:complexContent> <xs:extension base="GeoZone"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:choice> <xs:element type="Fish" name="Fish" minOccurs="0" maxOccurs="unbounded"/> </xs:choice> </xs:sequence> <xs:attribute name="Name" type="xs:string" use="optional" /> </xs:extension> </xs:complexContent> </xs:complexType>
Unfortunately, this is not true, since I can only add the Fish type, and not its extension types.
source share