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=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 que l'élément peut apparaître zéro ou une fois, * Le symbole '*' déclare que l'élément peut apparaître zéro ou plusieurs fois.)

Attributs

id

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

name

Optionnel. Définit 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 nom d'espace. Si l'élément parent est un élément schema, cet attribut n'est pas utilisé.

type

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

substitutionGroup

Optionnel. Définit le nom de l'élément qui peut être utilisé pour remplacer cet élément. Cet élément doit avoir le même type ou être dérivé du type spécifié.

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

default

Optionnel. Définit 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éfinit 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 celle de l'attribut elementFormDefault de l'élément schema qui contient cette propriété. Cette valeur doit être l'une des chaînes de caractères suivantes : "qualified" ou "unqualified".

Si l'élément parent est un élément schema, cet attribut ne peut pas être utilisé.

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

maxOccurs

Optionnel. Définit le nombre maximum d'apparitions de l'élément 'element' dans l'élément parent. Cette valeur peut être un entier non négatif ou égal à zéro. Si vous ne souhaitez pas imposer de limite sur le nombre maximum, utilisez la chaîne de caractères "unbounded". La valeur par défaut est 1.

Si l'élément parent est un élément schema, cet attribut ne peut pas être utilisé.

minOccurs

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

Si l'élément parent est un élément schema, cet attribut ne peut pas être utilisé.

nillable

Facultatif. Indique s'il est possible d'allouer une valeur nulle explicite à 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, l'instance de cet élément peut 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 tout en définissant 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 défini sur true).

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

abstract

Facultatif. 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. Au contraire, 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

Facultatif. Type dérivé. L'attribut block empêche que les éléments ayant un type dérivé spécifié soient utilisés pour remplacer cet élément. Cette valeur peut contenir #all ou une liste, cette liste étant un sous-ensemble de extension, restriction ou substitution :

  • extension - Empêche que les éléments dérivés par extension ne remplacent pas cet élément.
  • restriction - Empêche que les éléments dérivés par restriction ne remplacent pas cet élément.
  • substitution - Empêche que les éléments dérivés par substitution ne remplacent pas cet élément.
  • #all - Empêche tous les éléments dérivés de remplacer cet élément.

final

Facultatif. Définir la valeur par défaut de l'attribut final de l'élément element. 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 étant 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é portant un nom d'espace de noms non-schématique.

Instance

Exemple 1

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

Ce cas est identique à 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>