View Single Post
Old 23-10-2009, 11:45   #2
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
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
Kralizek è offline   Rispondi citando il messaggio o parte di esso