Elemento Schema XML

Definizione e uso

L'elemento element definisce un elemento.

Informazioni sull'elemento

Frequenza di apparizione Numero di elementi definiti nell'architettura.
Padre dell'elemento schema, choice, all, sequence
Contenuto simpleType, complexType, key, keyref, unique

Sintassi

<element
id=ID 
name=NCName
ref=QName
type=QName
substitutionGroup=QName
default=string
fixed=string
form=qualified|unqualified
maxOccurs=nonNegativeInteger|unbounded
minOccurs=nonNegativeInteger
nillable=true|false
abstract=true|false 
block=(#all|lista di (extension|restriction))
final=(#all|lista di (extension|restriction))
qualsiasi attributi
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(Il simbolo ? dichiara nell'elemento element, che può apparire zero o una volta, il simbolo * dichiara che l'elemento può apparire zero o più volte.).

Attributo

id

Opzionale. Stabilisce un ID unico per l'elemento.

name

Opzionale. Stabilisce il nome dell'elemento. Se l'elemento padre è un elemento schema, questo attributo è obbligatorio.

ref

Opzionale. Riferimento a un altro elemento. L'attributo ref può includere un prefisso di namespace. Se l'elemento padre è un elemento schema, non utilizzare questa proprietà.

type

Opzionale. Stabilisce il nome del tipo dati integrato, o il nome dell'elemento simpleType o complexType.

substitutionGroup

Opzionale. Stabilisce il nome dell'elemento che può essere utilizzato per sostituire questo elemento. L'elemento deve avere lo stesso tipo o un tipo derivato dal tipo specificato.

Non è possibile utilizzare questa proprietà se l'elemento padre non è un elemento schema.

default

Opzionale. Stabilisce un valore predefinito per l'elemento (da utilizzare solo quando il contenuto dell'elemento è di tipo semplice o textOnly).

fixed

Opzionale. Stabilisce un valore fisso per l'elemento (da utilizzare solo quando il contenuto dell'elemento è di tipo semplice o textOnly).

form

opzionale. la forma dell'elemento. Il valore predefinito è il valore dell'attributo elementFormDefault del elemento schema che contiene l'attributo. Il valore deve essere una delle seguenti stringhe: "qualified" o "unqualified".

Se l'elemento padre è lo schema, non può essere utilizzato questo attributo.

  • Se il valore è "unqualified", l'elemento non deve essere qualificato tramite prefisso di namespace.
  • Se il valore è "qualified", l'elemento deve essere qualificato tramite prefisso di namespace.

maxOccurs

opzionale. determina il numero massimo di volte che l'elemento element può apparire nel padre. Il valore può essere un intero maggiore o uguale a zero. Se non si desidera impostare alcun limite sul numero massimo, utilizzare la stringa "unbounded". Il valore predefinito è 1.

Se l'elemento padre è lo schema, non può essere utilizzato questo attributo.

minOccurs

opzionale. determina il numero minimo di volte che l'elemento element può apparire nel padre. Il valore può essere un intero maggiore o uguale a zero. Il valore predefinito è 1.

Se l'elemento padre è lo schema, non può essere utilizzato questo attributo.

nillable

opzionale. indica se può essere assegnato un valore nullo esplicito a questo elemento. Questa opzione si applica al contenuto dell'elemento e non è un attributo dell'elemento. Il valore predefinito è false.

Se nillable è true, l'istanza dell'elemento può impostare l'attributo nil su true. L'attributo nil è definito come parte dello spazio dei nomi del modello XML dell'istanza.

Ad esempio, il seguente segmento definisce un singolo elemento e imposta nillable su true.

<xs:element name="myDate" type="xs:date" nillable="true"/>

Il seguente segmento utilizza questo elemento e ha un valore nullo esplicito (l'attributo nil è impostato su true).

<myDate xsi:nil="true"></myDate>

astratto

opzionale. indica se l'elemento può essere utilizzato nel documento di istanza. Se il valore è true, l'elemento non può apparire nel documento di istanza. Al contrario, l'attributo substitutionGroup contiene l'elemento con il nome qualificato (QName) dell'elemento deve apparire nella posizione dell'elemento. Più elementi possono fare riferimento a questo elemento nel suo attributo substitutionGroup. Il valore predefinito è false.

block

opzionale. tipo derivato. l'attributo block impedisce agli elementi con un tipo derivato specificato di essere utilizzati per sostituire l'elemento. Il valore può contenere #all o una lista, che è un sottoinsieme di extension, restriction o substitution:

  • estensione - prevenire che gli elementi derivati dall'estensione vengano utilizzati per sostituire l'elemento.
  • restriction - Impedisce che gli elementi derivati attraverso restrizioni sostituiscano questo elemento.
  • substitution - Impedisce che gli elementi derivati attraverso sostituzione sostituiscano questo elemento.
  • #all - Impedisce che tutti gli elementi derivati sostituiscano questo elemento.

final

Opzionale. Imposta il valore predefinito dell'attributo final dell'elemento. Se il padre non è un elemento schema, non può essere utilizzato questo attributo. Il valore può includere #all o una lista che è sottoinsieme di extension o restriction:

  • extension - Impedisce che gli elementi derivati attraverso estensioni sostituiscano questo elemento
  • restriction - Impedisce che gli elementi derivati attraverso restrizioni sostituiscano questo elemento
  • #all - Impedisce che tutti gli elementi derivati sostituiscano questo elemento

qualsiasi attributi

Opzionale. Specifica qualsiasi altra proprietà con namespace non schema.

Esempio

Esempio 1

Esempio seguente è uno schema con quattro elementi semplici: "fname", "lname", "age" e "dateborn", i cui tipi sono stringa, nonNegativeInteger e date:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fname" type="xs:string"/>
<xs:element name="lname" type="xs:string"/>
<xs:element name="age" type="xs:nonNegativeInteger"/>
<xs:element name="dateborn" type="xs:date"/>
</xs:schema>

Esempio 2

Esempio seguente è uno schema con un elemento di tipo complesso "note" che contiene quattro elementi semplici: "to", "from", "heading" e "body":

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<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>
</xs:schema>

Esempio 3

Questo esempio è lo stesso dell'esempio 2, ma in questo esempio abbiamo scelto di utilizzare l'attributo ref per riferirci al nome dell'elemento:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="to"/>
      <xs:element ref="from"/>
      <xs:element ref="heading"/>
      <xs:element ref="body"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
<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:schema>