non ho visto bene l'esempio che hai postato perché sto a lavoro...
io ho usato questa soluzione per avere una sorta di ereditarietá in xsd
Codice:
<xs:complexType name="rule">
<xs:all minOccurs="1">
<xs:element name="condition" type="condition" />
</xs:all>
</xs:complexType>
<xs:element name="rule" type="rule" />
<xs:complexType name="condition" abstract="true" />
<xs:complexType name="or">
<xs:complexContent>
<xs:extension base="condition">
<xs:sequence maxOccurs="unbounded" minOccurs="2">
<xs:element name="condition" type="condition" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="and">
<xs:complexContent>
<xs:extension base="condition">
<xs:sequence maxOccurs="unbounded" minOccurs="2">
<xs:element name="condition" type="condition" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="not">
<xs:complexContent>
<xs:extension base="condition">
<xs:all minOccurs="1">
<xs:element name="condition" type="condition" />
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="educationType">
<xs:complexContent>
<xs:extension base="condition">
<xs:attribute name="id" type="xs:int" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="place">
<xs:complexContent>
<xs:extension base="condition">
<xs:attribute name="id" type="xs:int" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
in questo modo posso scrivere cose come
Codice:
<rule xmlns="http://www.educations.com/uvml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<condition xsi:type="educationType" id="5" />
</rule>
-- o --
<rule xmlns="http://www.educations.com/uvml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<condition xsi:type="or">
<condition xsi:type="mainCategory" id="258" />
<condition xsi:type="mainCategory" id="259" />
<condition xsi:type="mainCategory" id="260" />
</condition>
</rule>
-- o --
<rule xmlns="http://www.educations.com/uvml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<condition xsi:type="place" id="350" />
</rule>
considera che il parametro ID é comune a tutti i sottotipi, ma non é richiesto che sia cosí
spero ti possa essere utile