elemento complexType di XML Schema

definizione e uso

l'elemento complexType definisce un tipo complesso. Gli elementi di tipo complesso sono elementi XML che contengono altri elementi e/o attributi.

informazioni sull'elemento

numero di apparizioni all'interno dell'architettura è illimitato; all'interno dell'elemento è una volta.
elemento padre element, redefine, schema
contenuto annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

Sintassi

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|lista di (extension|restriction))
final=(#all|lista di (extension|restriction))
any attributes
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attributo|attributoGroup)*,anyAttribute?))))
</complexType>

(? Simbolo dichiarato nell'elemento complexType, l'elemento può apparire zero o una volta, * Simbolo dichiarato l'elemento può apparire zero o più volte.)

Attributi

id

Opzionale. Stabilisce l'ID unico dell'elemento.

name

Opzionale. Stabilisce il nome dell'elemento.

abstract

Opzionale. Stabilisce se è possibile utilizzare il tipo complesso nell'istanza del documento. Se il valore è true, l'elemento non può utilizzare direttamente il tipo complesso, ma deve utilizzare il tipo complesso derivato dal tipo complesso. Il valore predefinito è false.

mixed

Opzionale. Stabilisce se i dati di carattere possono apparire tra i sottoelementi di questo tipo complesso. Il valore predefinito è false.

  • Se l'elemento simpleContent è un sottoelemento, non è permesso l'attributo mixed.
  • Se l'elemento complexContent è un sottoelemento, l'attributo mixed può essere sovrascritto dall'attributo mixed dell'elemento complexContent.

block

Opzionale. Protegge il tipo complesso con il tipo di derivazione specificato dal tipo complesso specificato. Il valore può includere #all o una lista, che è un sottoinsieme di extension o restriction:

  • extension - Protegge i tipi complessi derivati tramite estensione dal tipo complesso specificato.
  • restriction - Protegge i tipi complessi derivati tramite restrizione dal tipo complesso specificato.
  • #all - Protegge tutti i tipi complessi derivati dal tipo complesso specificato.

final

Opzionale. Protegge il tipo specificato derivo dal tipo del elemento complexType. Il valore può includere #all o una lista, che è un sottoinsieme di extension o restriction.

  • extension - Protegge dalle derivazioni attraverso estensioni.
  • restriction - Protegge dalle derivazioni attraverso limitazioni.
  • #all - Protegge da tutte le derivazioni (estensioni e limitazioni).

any attributes

Opzionale. Specificare qualsiasi altra proprietà con namespace non dello schema.

Esempio

Esempio 1

Esempio 1. L'esempio seguente ha un elemento tipo complesso chiamato "note":

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

Esempio 2

Esempio 2. Nel seguente esempio c'è un tipo complesso "fullpersoninfo" che estende il tipo derivato utilizzando tre elementi supplementari (address, city e country) da un altro tipo complesso "personinfo":

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

在上面的例子中,上面的 "employee" 元素必须按顺序包含以下元素:"firstname"、"lastname"、"address"、"city" 以及 "country"。