Element de schéma XML

Définition et utilisation

L'élément element définit un élément.

Informations sur l'élément

Fréquence d'apparition Nombre d'éléments définis dans le schéma.
Élément parent schema、choice、all、sequence
Contenu simpleType、complexType、key、keyref、unique

Grammaire

<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|list of (extension|restriction))
final=(#all|list of (extension|restriction))
any attributes
>
annotation?,((simpleType|complexType)?,(unique|key|keyref)*))
</element>

(Le symbole ? déclare dans l'élément element, qui peut apparaître zéro ou une fois, le symbole * déclare que l'élément peut apparaître zéro ou plusieurs fois.).

Attribut

id

Optionnel. Définir un ID unique pour cet élément.

name

Optionnel. Définir le nom de l'élément. Si l'élément parent est un élément schema, cet attribut est obligatoire.

ref

Optionnel. Référence à un autre élément. L'attribut ref peut contenir un préfixe de namespace. Si l'élément parent est un élément schema, cet attribut n'est pas utilisé.

type

Optionnel. Définir le nom du type de données intégré, ou le nom de l'élément simpleType ou complexType.

substitutionGroup

Optionnel. Définir le nom de l'élément pouvant être utilisé pour remplacer cet élément. Cet élément doit avoir le même type ou dériver du type spécifié.

Il n'est pas possible d'utiliser cette propriété si l'élément parent n'est pas un élément schema.

default

Optionnel. Définir une valeur par défaut pour l'élément (à utiliser uniquement lorsque le contenu de l'élément est de type simple ou textOnly).

fixed

Optionnel. Définir une valeur fixe pour l'élément (à utiliser uniquement lorsque le contenu de l'élément est de type simple ou textOnly).

form

Optionnel. La forme de l'élément. La valeur par défaut est la valeur de l'attribut elementFormDefault de l'élément schema contenant cette propriété. Cette valeur doit être l'une des chaînes suivantes : "qualified" ou "unqualified".

Cette propriété ne peut pas être utilisée si l'élément parent est l'élément schema.

  • Si cette valeur est "unqualified", l'élément n'a pas besoin d'être qualifié par un préfixe de nom d'espace.
  • Si cette valeur est "qualified", l'élément doit être qualifié par un préfixe de nom d'espace.

maxOccurs

Optionnel. Définit le nombre maximum d'apparitions de l'élément dans l'élément parent. Cette valeur peut être un entier supérieur ou égal à zéro. Pour ne pas poser de limite à la fréquence maximale, utilisez la chaîne "unbounded". La valeur par défaut est 1.

Cette propriété ne peut pas être utilisée si l'élément parent est l'élément schema.

minOccurs

Optionnel. Définit le nombre minimum d'apparitions de l'élément dans l'élément parent. Cette valeur peut être un entier supérieur ou égal à zéro. La valeur par défaut est 1.

Cette propriété ne peut pas être utilisée si l'élément parent est l'élément schema.

nillable

Optionnel. Indique si une valeur nulle explicite peut être attribuée à cet élément. Cette option s'applique au contenu de l'élément et n'est pas une propriété de l'élément. La valeur par défaut est false.

Si nillable est true, cela permet à l'instance de l'élément de définir l'attribut nil sur true. L'attribut nil est défini comme une partie de l'espace de noms XML de l'instance.

Par exemple, le paragraphe suivant définit un seul élément et configure nillable sur true.

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

Le paragraphe suivant utilise cet élément et a une valeur nulle explicite (l'attribut nil est réglé sur true).

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

abstract

Optionnel. Indique si l'élément peut être utilisé dans le document d'instance. Si cette valeur est true, l'élément ne peut pas apparaître dans le document d'instance. À la place, les autres éléments contenant le QName de l'élément dans l'attribut substitutionGroup doivent apparaître à la place de cet élément. Plusieurs éléments peuvent faire référence à cet élément dans leur attribut substitutionGroup. La valeur par défaut est false.

block

Optionnel. Type dérivé. La propriété block empêche l'utilisation de l'élément avec un type dérivé spécifié. Cette valeur peut contenir #all ou une liste, qui est un sous-ensemble de extension, restriction ou substitution :

  • extension - empêcher que les éléments dérivés par extension soient utilisés pour remplacer cet élément.
  • restriction - Empêche les éléments dérivés par restriction de remplacer cet élément.
  • substitution - Empêche les éléments dérivés par substitution de remplacer cet élément.
  • #all - Empêche tous les éléments dérivés de remplacer cet élément.

final

Optionnel. Définir la valeur par défaut de l'attribut final de l'élément. Si l'élément parent n'est pas un élément schema, cet attribut ne peut pas être utilisé. Cette valeur peut contenir #all ou une liste, cette liste est un sous-ensemble de extension ou restriction :

  • extension - Empêche les éléments dérivés par extension de remplacer cet élément
  • restriction - Empêche les éléments dérivés par restriction de remplacer cet élément
  • #all - Empêche tous les éléments dérivés de remplacer cet élément

any attributes

Optionnel. Définir toute autre propriété avec un espace de noms non-schématique.

Exemple

Exemple 1

L'exemple suivant est un schéma contenant quatre éléments simples : "fname", "lname", "age" et "dateborn", les types sont string, nonNegativeInteger et 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>

Exemple 2

L'exemple suivant est un schéma contenant un élément de type complexe "note". L'élément "note" contient quatre éléments simples : "to", "from", "heading" et "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>

Exemple 3

L'exemple est le même que l'exemple 2, mais dans cet exemple, nous choisissons d'utiliser l'attribut ref pour faire référence au nom de l'élément :

<?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>