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>