près avoir survolé les grands principes de
XML, nous allons mettre du vocabulaire en place. Ce format de
document est prévu pour des échanges entre applications,
afin de s'affranchir des formats propriétaires autant que
faire se peut. Pour cela le lecteur doit pouvoir lire le document
XML reçu, celui-ci doit donc respecter des conventions.
Nous allons étudier ces règles, nous pourrons écrire
à la fin un document XML bien formé.
Soyons
précis, utilisons le même langage:
Je
reprends mon exemple de la première partie:
<database
name="infos">
<tables>
<table name="codeDepartement">
<descRecord>
<field
name="ID" type="string"/>
<field
name="NOM" type="string"/>
</descRecord>
<records>
<record>
<field
name="ID">01</field>
<field
name="NOM">Ain</field>
</record>
</records>
</table>
</tables>
</database>
1)
J'ai mis en évidence quelques zones remarquables. En bleu
graissé comme <tables>,
c'est une balise d'ouverture ou un marqueur. Chaque balise d'ouverture
doit être appariée avec la balise de fermeture :
</tables>.
J'entends tout de suite ceux du premier rang me dire que ce n'est
pas tout le temps vrai ! Nous y reviendrons.
2)
Du '<' de la balise d'ouverture au '>' de celle de fermeture
nous avons un élément XML. Par exemple dans
<record>
<field name="ID">01</field>
<field name="NOM">Ain</field>
</record>
entre <record> et </record> est un élément.
Ce
qu'il y a réellement entre les balises s'appellent un élément
élémentaire.Des balises peuvent donc en envelopper
d'autres.
3)
L'élément le plus enveloppant, ici database
s'appelle l'élément racine.
4)
On a vu dans l'article précedent que les éléments
peuvent comme en HTML avoir des attributs il sont placés
dans les balises d'ouverture. Les attributs sont constitués
d'une paire nom="valeur" : name="infos"
; la valeur est nécessairement entre guillemets, simples
ou doubles. C'est beaucoup moins laxiste que le HTML.
5)
Le contenu d'un élément sans autre balise s'appelle
tout simplement texte, exemple 01
ou Ain.
6)
Les noms des balises et des attributs doivent respecter des conventions
relativement habituelles en particulier. Un identifiant peut commencer
par une lettre ou un souligné et en suite on peut mettre
lettre, chiffre souligné et tiret. XML est sensible à
la casse des caractères. On ne peut pas mettre d'espace
entre '<' et le nom de la balise d'ouverture. Il y a d'autres
règles, je n'ai pas l'intention d'être exhaustif.
6)
Un élément qui n'a pas de contenu est un élément
vide, on écrit alors <maBalise/>
plutôt que <maBalise></maBalise>.
Une balise vide peut avoir des attributs.
Les
règles à respecter
Les
documents XML doivent être corrects, on dit valides ou bien
formés. Pour cela voici ce qu'ils doivent respecter :
- Toute
balise d'ouverture doit être appariée avec sa balise
de fermeture ;
- Les
balises ne doivent pas se chevaucher, ceci est incorrect <records>
<record>
<field name="ID">01</field>
<field name="NOM">Ain</field>
</records>
</record>
- Le
fichier XML doit avoir un élément racine et un
seul. Ce
n'est pas difficile à réaliser comme condition,
il suffit d'encadrer ce dont on a besoin par un élément
racine et le tour est joué.
Pourquoi
ces contraintes ?
Il
y a un souci d'échanges d'informations, toute personne
ou automate recevant un fichier XML en a la description avec les
balises et les attributs, le contenu bien évidemment mais
aussi la structure car les règles sont respectés.
Le document peut donc être lu, on dit parsé, en toute
quiétude.
D'ailleurs c'est le laxisme de HTML qui rend les navigateurs gourmands
en Ko voire Mo. En effet ils doivent pallier à nos manquements
: on n'a pas fermé le <p>, on a oublié les
guillemets aux valeurs d'attributs ; tout cela leur donne du travail
supplémentaire. C'est pour cela que les analyseurs de XML
sont beaucoup plus légers.
Prolongements
La
prochaine fois nous étudierons les moyens de respecter
la validité d'un document, de définir son modèle.
A partir de là nous étudierons les feuilles de
style XSL, puis nous verrons comment on peut par exemple transformer
un document XML en HTML.
Bonne
lecture, et à bientôt sur le forum ou par messagerie.
Daniel Lucazeau
ajornet.com
Chef de projet Internet
Tous
droits réservés - Reproduction même partielle interdite sans
autorisation préalable
|