Les types de données des schémas XML peuvent être soit simples, soit complexes.
Un type complexe signifie qu'un élément peut contenir des attributs, des éléments, voire même une valeur simple.
Un type simple signifie que le contenu d'un élément ou d'un attribut ne peut être qu'une valeur d'un type de données prédéfinies comme un nombre entier ou une chaîne de caractères. Ces valeurs peuvent également être restreintes par l'intermédiaire de facettes.
Les types de données des schémas XML sont représentés par trois parties distinctes : les espaces de valeurs, les espaces lexicaux et un ensemble de facettes.
un espace de valeur est un ensemble de valeurs possibles pour un type de données spécifié. Le type de données int accepte les valeurs comprises dans l'intervalle suivant : {-2147483648 - 2147483647}.
Chaque possibilité dans l'espace de valeur d'un type de données est représentée par un ou plusieurs littéraux dans son espace lexical.
Un espace lexical est un ensemble de littéraux valides pour un type de données. Les littéraux 9.9 et 9.90 sont différents mais tous les deux valides et égaux pour le type de données float.
Une facette est un aspect définissant un espace de valeur. Ce dernier caractérisé par des propriétés, peut subir des restrictions par rapport à une liste de valeurs spécifiées, à un intervalle de valeurs, à un modèle de valeurs, à une longueur de champ, à un nombre de chiffres et à un comportement vis-à-vis des espaces blancs.
Les types de données prédéfinies sont divisés en deux ensembles distincts, les primitifs et les dérivés, les seconds découlants des premiers. La hiérarchie des types de données prédéfinies est décrite à la page suivante.
Les types de données primitifsType | Description |
---|---|
string | représente une chaîne de caractères. |
boolean | représente une valeur booléenne true ou false. |
decimal | représente un nombre décimal |
float | représente un nombre à virgule flottante. |
double | représente un nombre réel double. |
duration | représente une durée. |
dateTime | représente une valeur date/heure. |
time | représente une valeur horaire (format : hh:mm:ss.sss ). |
date | représente une date (format : CCYY-MM-DD). |
gYearMonth | représente un mois et une année grégorienne (format : CCYY-MM). |
gYear | représente une année (format : CCYY). |
gMonthDay | représente le jour d'un mois (format : MM-DD). |
gDay | représente le jour d'un mois (format : DD). |
gMonth | représente le mois (format : MM). |
hexBinary | représente un contenu binaire hexadécimal. |
base64Binary | représente un contenu binaire de base 64. |
anyURI | représente une adresse URI (ex.: http://www.site.com). |
QName | représente un nom qualifié. |
NOTATION | représente un nom qualifié. |
Type | Description |
---|---|
normalizedString | représente une chaîne de caractères dont les espaces blancs sont normalisés. |
token | représente une chaîne de caractères sans espaces blancs. |
language | représente un langage exprimé sous forme de mot clés répondant à la RFC 1766. |
NMTOKEN | représente le type d'attribut NMTOKEN de XML 1.0. |
NMTOKENS | représente le type d'attributs NMTOKENS de XML 1.0. |
Name | représente un nom XML. |
NCName | représente un nom non-implanté (non-colonized) dans . |
id | représente le type d'attribut ID de XML 1.0. |
IDREF | représente le type d'atribut IDREF de XML 1.0. |
IDREFS | représente le type d'attribut IDREFS de XML 1.0. |
ENTITY | représente le type d'attribut ENTITY de XML 1.0. |
ENTITIES | représente le type d'attribut ENTITIES de XML 1.0. |
integer | représente un nombre entier. |
nonPositiveInteger | représente un nombre entier négatif incluant le zéro. |
negativeInteger | représente un nombre entier négatif dont la valeur maximum est -1. |
long | représente un nombre entier long dont l'intervalle est {-9223372036854775808 - 9223372036854775807}. |
int | représente un nombre entier dont l'intervalle est {-2147483648 - 2147483647}. |
short | représente un nombre entier court dont l'intervalle est {-32768 - 32767}. |
byte | représente un entier dont l'intervalle est {-128 - 127}. |
nonNegativeInteger | représente un nombre entier positif incluant le zéro. |
unsignedLong | représente un nombre entier long non-signé dont l'intervalle est {0 - 18446744073709551615}. |
unsignedInt | représente un nombre entier non-signé dont l'intervalle est {0 - 4294967295}. |
unsignedShort | représente un nombre entier court non-signé dont l'intervalle est {0 - 65535}. |
unsignedByte | représente un nombre entier non-signé dont l'intervalle est {0 - 255}. |
positiveInteger | représente un nombre entier positif commençant à 1. |
<?xml version="1.0" encoding="ISO-8859-1"?> <element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="c:\schema.xsd"> <element_enfant> Une chaîne de caractères est attendue. </element_enfant> <element_enfant> Les chiffres ne sont pas acceptées ! </element_enfant> </element_racine> <?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xsd:element name="element_enfant"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[^0-9]"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="element_racine"> <xsd:complexType> <xsd:sequence> <xsd:element ref="element_enfant" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> |