complexType

Definisce un tipo complesso che determina l'insieme degli attributi e il contenuto di un elemento.

<complexType
  abstract = Boolean : false 
  block = (#all | List of (extension | restriction))
  final = (#all | List of (extension | restriction))
  id = ID 
  mixed = Boolean : false
  name = NCName 
  {any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all | 
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>

Attributi

  • abstract
    Indica se è possibile utilizzare il tipo complesso in un documento di istanza. Se ha valore true, non è possibile utilizzare direttamente questo tipo complesso in un elemento, ma è necessario utilizzarne uno derivato da questo. Il valore predefinito è false.

    Facoltativo.

  • block
    Tipo di derivazione. L'attributo block impedisce di utilizzare, al posto di questo tipo complesso, un tipo complesso dotato del tipo di derivazione specificato. Il valore può contenere #all o un elenco costituito da un sottoinsieme di estensione o restrizione. L'attributo block viene utilizzato solo quando, durante la convalida, un documento di istanza utilizza l'attributo schema-instance:type per eseguire l'override del tipo normale relativo a un elemento. L'attributo block impedisce agli elementi di selezionare i tipi complessi definiti attraverso l'estensione e/o la restrizione allo scopo di sostituire il tipo originale specificato per l'elemento.

    extension Impedisce di utilizzare tipi complessi derivati per estensione al posto di questo tipo complesso.
    restriction Impedisce di utilizzare tipi complessi derivati per restrizione, al posto di questo tipo complesso.
    #all Impedisce di utilizzare tutti i tipi complessi derivati, al posto di questo tipo complesso.

    Facoltativo.

  • final
    Tipo di derivazione. L'attributo final impedisce il tipo di derivazione specificato per l'elemento complexType. Il valore può contenere #all o un elenco costituito da un sottoinsieme di estensione o restrizione.

    extension Impedisce la derivazione per estensione.
    restriction Impedisce la derivazione per restrizione.
    #all Impedisce tutte le derivazioni (estensione e restrizione).

    Facoltativo.

  • id
    ID dell'elemento. Il valore di id deve essere di tipo ID ed essere univoco all'interno del documento che contiene l'elemento.

    Facoltativo.

  • mixed
    Indica se è consentita la visualizzazione dei dati carattere tra gli elementi figlio di questo tipo complesso. Il valore predefinito è false.

    Se simpleContent è un elemento figlio, l'attributo mixed non è consentito.

    Se complexContent è un elemento figlio, è possibile eseguire l'override di questo attributo mixed con l'attributo mixed dell'elemento complexContent.

    Facoltativo.

  • name
    Nome del tipo. Il nome deve essere un NCName (No-Colon-Name), come indicato nella specifica relativa agli spazi dei nomi XML.

    Obbligatorio se l'elemento contenitore è l'elemento schema, non consentito in caso contrario.

    Se specificato, il nome deve essere univoco in tutti gli elementi simpleType e complexType.

    Facoltativo.

Informazioni sull'elemento

Numero di occorrenze Illimitato all'interno dello schema. Una volta all'interno dell'elemento.
Elementi padre element, redefine, schema
Contenuto annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

Osservazioni

Un tipo complesso è essenzialmente una definizione di tipo per elementi che possono contenere attributi ed elementi. È possibile dichiarare un elemento utilizzando un attributo type che si riferisce a un elemento complexType che ne definisce la struttura, il contenuto e gli attributi. Nell'attributo type di un elemento è anche possibile accettare un riferimento a un elemento simpleType.

Un tipo complesso può contenere uno solo dei seguenti elementi, che determina il tipo di contenuto consentito nel tipo complesso.

Elemento Descrizione
simpleContent Il tipo complesso contiene dati carattere o un simpleType, non contiene alcun elemento, ma può contenere attributi.
complexContent Il tipo complesso contiene solo elementi o non ha contenuto (vuoto).
group Il tipo complesso contiene gli elementi definiti nel gruppo a cui si fa riferimento.
sequence Il tipo complesso contiene gli elementi definiti nella sequenza specificata.
choice Il tipo complesso consente uno degli elementi specificati nell'elemento choice.
all Il tipo complesso consente di specificare una sola volta uno qualsiasi o tutti gli elementi specificati nell'elemento all.

Se come elemento figlio si specifica group, sequence, choice o all, è possibile scegliere di dichiarare gli attributi relativi a complexType tramite i seguenti elementi.

Elemento Descrizione
attribute Il tipo complesso contiene l'attributo specificato.
attributeGroup Il tipo complesso contiene gli attributi definiti nell'attributeGroup a cui si fa riferimento.
anyAttribute Il tipo complesso può contenere qualsiasi attributo proveniente dagli spazi dei nomi specificati.

È possibile utilizzare qualsiasi numero di elementi attribute o attributeGroup. È anche possibile utilizzare un'istanza di anyAttribute.

Se si specifica group, sequence, choice o all, è necessario indicare tali elementi nell'ordine che segue.

  1. group | sequence | choice | all
  2. attribute | attributeGroup
  3. anyAttribute

Esempi

Nell'esempio che segue viene illustrato un tipo complesso contenente un tipo semplice (decimal) con una dichiarazione di attributo e di elemento che utilizza un tipo complesso.

<xs:complexType name='internationalShoeSize'>
 <xs:simpleContent>
  <xs:extension base='xs:decimal'>
   <xs:attribute name='sizing' type='xs:string' />
  </xs:extension>
 </xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>

Nell'esempio che segue viene illustrata un'istanza dell'elemento myShoeSize all'interno di un documento XML.

<myShoeSize sizing='UK'>10.5</myShoeSize>

Nell'esempio che segue viene illustrato l'elemento myShoeSize con l'elemento complexType definito in modo anonimo al suo interno. L'attributo name è assente.

<xs:element name='myShoeSize'>
 <xs:complexType>
  <xs:simpleContent>
   <xs:extension base='xs:decimal'>
     <xs:attribute name='sizing' type='xs:string' />
   </xs:extension>
  </xs:simpleContent>
 </xs:complexType>
</xs:element>

Vedere anche

Informazioni di riferimento sullo schema XML (XSD) | Elementi di uno schema XML

Per ulteriori informazioni, vedere il documento del W3C dal titolo XML Schema Part 1: Structures Recommendation all'indirizzo http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-complexType (informazioni in lingua inglese).