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.
- group | sequence | choice | all
- attribute | attributeGroup
- 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).