Les règles de base d'XML : XML bien formé, XML valide

Les briques de base des documents XML

Eléments

Au sein d’un document XML, les données sont contenues dans des éléments, qui ont une balise de début et une balise de fin. Celles-ci sont formées par le nom de l’élément, qui est une chaîne de texte comme par exemple ‘PersonName’, et un délimiteur indiquant le début et la fin d’une balise. Les balises XML sont délimitées par des chevrons (signes “inférieur à” et “supérieur à”). Le chevron < est utilisé pour indiquer le début d’un balise XML ouvrante, et > est utilisé pour en indiquer la fin.

La balise fermante débute avec le délimiteur </ et se termine avec le chevron >. L’exemple ci-dessous pourrait être un élément XML décrivant le nom d’une personne. Le contenu de l’élément ou, en jargon XML, PCDATA (Parsed Character Data) 'Clark Kent' apparaît entre les balises ouvrante et fermante :

1
<PersonName>Clark Kent</PersonName>

Les éléments vides sont un cas particulier : ils ne contiennent pas de PCDATA, et une seule balise fait fonction à la fois de balise de début et de fin. Les éléments vides sont typiquement utilisés comme jalons. Un exemple en XHTML est <br />, utilisé pour indiquer les sauts de ligne. Cette structure est fréquemment nécessaire pour indiquer les endroits marquant une séparation dans un texte source (par exemple un changement de page ou de section dans un livre ou un article.

Dans l’exemple de notre élément <PersonName> ci-dessus, le nom de l’élément est une chaîne de caractères. Les règles qui régissent la formation des noms d’éléments en XML veulent que les noms commencent par une lettre ou un tiret du bas (_) ; ils peuvent comprendre des lettres, des chiffres, des tirets, des points, et ils sont sensibles à la casse. Le tableau ci-dessous montre un exemple de noms XML valides :

Noms d’éléments XML corrects

<_newElement> </_newElement>

Les noms d’éléments doivent commencer par une lettre ou un tiret du bas

<newElement> </newElement>

Les noms d’éléments sont sensibles à la casse, les balises de début et de fin doivent être identiques

<my.new_Element-1></my.new_Element-1>

Les noms d’éléments peuvent comprendre des lettres, des chiffres, des tirets et des points



La construction incorrecte des noms d’éléments fait que le document XML n’est pas bien formé. Un processeur XML ne pourra donc pas traiter les données, et produira un message d’erreur. Le tableau suivant montre des exemples de noms d’éléments XML interdits :

Noms d'éléments XML interdits

<1Element> </1Element>

Les noms d’éléments ne peuvent pas commencer par un chiffre, un tiret ou un point

< Element /> </ Element>

Les noms d’éléments ne peuvent pas commencer par un espace

<newElement> </Newelement>

Les noms d’éléments sont sensibles à la casse, les balises de début et de fin doivent être identiques

<xmlElement></xmlElement>

Les noms d’éléments ne peuvent pas commencer par les chaînes de caractère xml, XML, Xml, etc.

<new Element> </new Element>

Les noms d’éléments ne peuvent pas contenir d’espace

Attributs

Les attributs constituent un autre élément essentiel des documents XML. Ils permettent d’ajouter des informations complémentaires à un élément XML sous la forme de paires associant un nom à une valeur. Les attributs modifient, raffinent ou définissent plus précisément les contours des éléments. Si l’on compare les éléments à des noms, les attributs peuvent être assimilés à des adjectifs. Ils doivent être placés après le nom de l’élément dans la balise de début, et ils sont séparés du nom de l’élément par un espace. Dans l’exemple suivant, les attributs @first-name et @last-name et leur valeur sont ajoutés à l’élément XML <person> :

<person first-name=”Henry” last-name=”James” />


Les attributs peuvent aussi être utilisés pour stocker des données et il est parfois difficile de déterminer si les données doivent être enregistrées sous forme d’attribut ou dans un élément. Un des avantages de stocker l’information dans un élément est que les données peuvent être structurées en plus de détail encore, en imbriquant d’autres éléments XML ou avec des attributs. Le stockage dans un attribut ne donne pas cette possibilité, mais l’avantage des attributs est qu’ils peuvent être utiles pour décrire un élément et son contenu, et avec les schémas, les données qui sont stockées comme valeur d’attribut peuvent être limitées à certains types de données et à certaines valeurs.

Comme pour les éléments, les noms des attributs doivent suivre certaines règles. Ils doivent commencer par une lettre ou un tiret du bas, ils peuvent contenir des lettres, des chiffres, des tirets et des points, mais pas d’espace. Les valeurs des attributs doivent être entourées de guillemets, elles peuvent contenir des caractères alphanumériques, des espaces et divers autres caractères comme des points, des tirets, des virgules, etc. Cependant, il faut être attentifs lorsque vous utilisez des guillemets simples ou doubles. Si les guillemets simples sont utilisés pour délimiter la valeur des attributs, alors ils ne sont pas autorisés au sein de la valeur de l’attribut. Il en est de même pour les guillemets doubles : ils ne peuvent pas être utilisés à la fois comme délimiteurs et dans la valeur. Le tableau suivant contient des exemples d’attributs valides.

Attributs valides en XML

<newElement attribute1=”attribute value: 1” />

Le nom d’un attribut peut contenir des chiffres, mais il ne peut pas commencer par un chiffre. Les valeurs d’attributs peuvent contenir des espaces, des signes de ponctuation et des caractères alphanumériques, dans n’importe quel ordre.

<person name=Rob Miller’ />

<person name=”Rob Miller” />

Les guillemets simples ou doubles peuvent être utilisés pour délimiter la valeur des attributs.

<address owner=”Mary’s address” />

Les guillemets simples peuvent être utilisés dans une valeur d’attribut, mais seulement s’ils ne sont pas utilisés pour la délimiter.

<sentence spoken=’He said: “go”!’ />

Les guillemets doubles peuvent être utilisés dans une valeur d’attribut, mais seulement s’ils ne sont pas utilisés pour la délimiter.


La construction incorrecte des noms d’attributs fait que le document XML n’est pas bien formé. Un processeur XML ne pourra donc pas traiter les données, et produira un message d’erreur. Le tableau suivant montre des exemples de noms et de valeurs d’attributs interdits :

Des noms et des valeurs d’attributs interdits en XML

<person name=Robert />

La valeur d’un attribut doit être entourée de guillemets.

<person name=”Robert’ />

Les guillemets entourant la valeur doivent être identiques.

<sentence spoken=”He said: “go”!” />

Si les guillemets doubles sont utilisés pour délimiter la valeur, ils ne peuvent pas être utilisés dans cette valeur.

<address owner=’Mary‘s address’ />

Si les guillemets simples sont utilisés pour délimiter la valeur, ils ne peuvent pas être utilisés dans cette valeur.

<person first name=”Frank” />

Un nom d’attribut ne peut contenir d’espace.

<person 1stname=”Robert” />

Un nom d’attribut doit commencer avec une lettre ou un tiret du bas.

<person name=”Robert” name=”James” />

Un élément ne peut pas avoir plusieurs attributs portant le même nom.


Les éléments et les attributs sont les briques de base d’XML, et ils sont essentiels pour la structuration et la modélisation des données. D’autres composants sont présents dans la plupart des documents XML : les instructions de traitement et les entités XML et Unicode.


Instructions de traitement

Les instructions de traitement sont destinées aux processeurs XML, elles spécifient quelle version de XML est utilisée, quel est le codage des caractères et/ou quel schéma doit être utilisé pour valider le document XML. Les instructions de traitement sont facilement reconnaissables : elles sont écrites dans les premières lignes d’un document XML. Elles n’ont pas de balise de début ni de fin, mais elles ont des attributs pour stocker l’information. Par exemple, l’instruction de traitement ci-dessous est la déclaration XML, elle doit être placée au début de tout document XML. Elle déclare que ce document est encodé selon le standard XML, en utilisant la version 1.0 de XML et le codage des caractères UTF-8 :

1
<?xml version="1.0" encoding="UTF-8"?>

Entités Unicode

Le texte stocké dans un élément XML est généralement de la PCDATA (Parsed Character Data). C’est une définition de donnée utilisée dans les documents XML et qui spécifie que les cinq caractères utilisés pour distinguer le balisage des données, comme les chevrons (pour les éléments), les guillemets simples et doubles (pour les attributs) et l’esperluette (pour les entités nommées) doivent être traités comme des séquences d’échappement, en utilisant les références d’entité. Les références d’entités débutent avec un signe & et se terminent par un point-virgule. La liste ci-dessous montre les entités qui doivent être utilisées en lieu et place des cinq caractères réservés :

Caractère

entité XML

< 

&lt;

> 

&gt;

&

&amp;

'

&apos;

"

&quote;

 

Les références de caractère, utilisées pour les caractères et symboles qui n’appartiennent pas au jeu de caractères ASCII, sont une autre forme de références d’entité. Par exemple, les références des caractères Unicode peuvent être utilisées dans un document XML. Ces références commencent par &# et se terminent pas un point-virgule, et elles sont directement embarquées dans un document XML. Par exemple, la lettre majuscule grecque Pi correspond à la référence de caractère : &#x03A0;