SimpleContent vs ComplexContent


1. Differenze principali

I tipi complessi si dividono in due gruppi: quelli con contenuto semplice e quelli con contenuto complesso. Questo porta ad una ulteriore categorizzazione per capire al meglio gli elementi XML con tipo complesso: mentre tutti i tipi complessi consentono di avere attributi, solo quelli con contenuto complesso consentono di avere elementi figli; quelli con contenuto semplice consentono solo di avere contenuto testuale.

In altre parole, la differenza tra i due contenuti sta nel fatto che quello semplice non consente di avere figli, mentre quello complesso si.

2. Esempio di SimpleContent

Vediamo un tipo di elemento avente un attributo con valore intero ed un contenuto di tipo stringa:

<xs:element name="elemento">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="attributo" type="xs:int"></attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

3. Esempio di ComplexContent

Vediamo adesso lo stesso elemento ma con altri elementi al posto del contenuto testuale:

<xs:element name="elemento">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="childList">
        <xs:attribute name="attributo" type="xs:int"></xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

<xs:complexType name="childList">
  <xs:sequence>
    <xs:element name="child1" type="xs:string" />
    <xs:element name="child2" type="xs:string" />
  </xs:sequence>
</xs:complexType>

Una forma equivalente di questo elemento, ma piu' compatta:

<xs:element name="elemento">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="child1" type="xs:string" />
      <xs:element name="child2" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="attributo" type="xs:int"></xs:attribute>
  </xs:complexType>
</xs:element>
Footer BGFooter BG
Tito Flagella - © 2007-2015