XML Schema element 元素

定义和用法

element 元素定义一个元素。

元素信息

出现次数 在架构中定义的元素的数目。
父元素 schema、choice、all、sequence
内容 simpleType、complexType、key、keyref、unique

语法

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

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

Attributi

id

Opzionale. Stabilisce l'ID unico dell'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 deve utilizzare questo attributo.

type

Opzionale. Stabilisce il nome del tipo dati built-in o il nome dell'elemento simpleType o complexType.

substitutionGroup

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

L'attributo non può essere utilizzato 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 dell'elemento schema che contiene l'attributo. Il valore deve essere una delle seguenti stringhe: "qualified" o "unqualified".

Se l'elemento padre è un elemento schema, non è possibile utilizzare questo attributo.

  • Se il valore è "unqualified", non è necessario limitare l'elemento con un prefisso di namespace.
  • Se il valore è "qualified", l'elemento deve essere limitato con un prefisso di namespace.

maxOccurs

Opzionale. Stabilisce il numero massimo di volte in cui l'elemento element può apparire all'interno dell'elemento padre. Il valore può essere un intero non negativo 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 è un elemento schema, non è possibile utilizzare questo attributo.

minOccurs

Opzionale. Regola il numero minimo di volte in cui 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 è un elemento schema, non è possibile utilizzare 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, il'istanza dell'elemento può impostare l'attributo nil su true. L'attributo nil è definito come parte dello spazio dei nomi 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>

abstract

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, gli elementi che contengono il QName delimitato dell'elemento nella proprietà substitutionGroup devono apparire nella posizione dell'elemento. Più elementi possono riferirsi a questo elemento nella proprietà substitutionGroup. Il valore predefinito è false.

block

Opzionale. Tipo derivato. L'attributo block impedisce che l'elemento con il tipo derivato specificato venga utilizzato per sostituire questo elemento. Il valore può includere #all o una lista, che è un sottoinsieme di extension, restriction o substitution:

  • extension - Evita che gli elementi derivati estesi vengano utilizzati per sostituire questo elemento.
  • restriction - Evita che gli elementi derivati limitati vengano utilizzati per sostituire questo elemento.
  • substitution - Evita che gli elementi derivati sostitutivi vengano utilizzati per sostituire questo elemento.
  • #all - Evita che tutti gli elementi derivati vengano utilizzati per sostituire questo elemento.

final

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

  • extension - Evita che gli elementi derivati tramite estensione sostituiscano questo elemento
  • restriction - Evita che gli elementi derivati tramite restrizione sostituiscano questo elemento
  • #all - Evita che tutti gli elementi derivati sostituiscano questo elemento

ogni attributo

Opzionale. Specifica qualsiasi altra proprietà con uno spazio dei nomi non schema.

Esempio

Esempio 1

L'esempio seguente è uno schema che contiene quattro elementi semplici: "fname", "lname", "age" e "dateborn", i cui tipi sono string, 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

L'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 scegliamo 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>