Le web de Dominique Guebey – Bazar informatique

Page web  : http://www.dg77.net/tekno/xhtml/xmlbases.htm


   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

Pages Web en XHTML (suite)

XML express

Sommaire :

Exemple simple

Ci-dessous un exemple de fichier XML. On y trouve un fichier "articles" succinct, contenant deux références :

<?xml version="1.1" encoding="iso-8859-1"?>
<articles xmlns="http://www.xxxxx.org/XML/DTD/articles">
    <article code="zs857">
        <designation>Rondelle d&apos;alu A</designation>
        <prix p="vente" unit="100">44.51</prix>
    </article>
    <article code="zs858">
        <designation>Ecrou inox 8x42</designation>
        <prix p="vente" unit="boite">4.00</prix>
    </article>
</articles>

Ce fichier est constitué uniquement de caractères texte, un simple éditeur (ne pas confondre avec les lourds traitements de texte) suffit pour créer un fichier XML.

L’indentation ne sert qu’à faciliter la lecture, la forme suivante est aussi valable :
<?xml version="1.1" encoding="iso-8859-1"?> <articles> <article code="zs857"> <designation> Rondelle d&apos;alu 8x42</designation> <prix cat="vente" unit="100">44.51</prix> </article> <article code="zs858"> <designation>Ecrou inox 8x42</designation> <prix cat="vente" unit="1">4.00</prix> </article></articles>

Prologue

La première ligne "<?xml…", toujours la même, est impérative ; c’est le prologue XML. Le numéro de version XML, en cours depuis le 4 février 2004, est 1.1. On a stipulé l’encodage iso-8859-1 i.e. alphabet latin1 ou "West European" avec caractères accentués. La valeur par défaut est UTF-8. Il est conseillé d’utiliser un éditeur de texte sérieux (Jext [http://www.jext.org] par exemple) pour maîtriser l’encodage du fichier.

Eléments et attributs

Dans lignes suivantes, ont trouve deux types d’informations : des éléments et des attributs

Eléments
"articles", "article", "désignation" et "prix" sont des éléments, définis par des balises (noter le "/" qui distingue les balises de fin : "</xxx>" de celles de début "<xxx>") ;
Attributs
"code", "p" et "unit"

Au moment où l’on décide de la structure d’un fichier xml, on a donc le choix entre deux possibilités pour stocker les informations : au sein d’un élément, ou en tant qu’attribut.

Elément racine

L’élément <articles> mérite une mention particulière : on doit toujours avoir un tel élément unique qui commence et finit le fichier. Ce dernier serait mal formé s’il consistait simplement en une collection d’éléments article non englobée dans un élément racine.

Noter l’indication facultative xmlns, qui correspond à un "espace de nommage". Voir ci-dessous la section sur les namespaces.

Conformité d’un fichier xml

Règles minimales à respecter :

Respect de la casse, i.e. distinction majuscule/minuscule
Dans l’exemple, les éléments et attributs sont tous en minuscule.
Les attributs doivent être entre apostrophes ou guillemets
<img imgw=500> n’est pas correct, il faut : <img imgw="500">
A toute balise de début doit correspondre une balise de fin
Exemple : <mabalise>[contenu de l’élément]</mabalise>
Exception : cas de la balise fermée (exemple : <mabalise xattrib="z33"/>)
Les éléments sont imbriqués les uns dans les autres, il ne sauraient se chevaucher.
<tag1><tag2>xxxxxxxx</tag2></tag1> est correct.
<tag1><tag2>xxxxxxxx</tag1></tag2> ne l’est pas (on dit qu’il n’est pas "bien formé").

Entités prédéfinies

Remarquer la façon dont on indique rondelle d’alu dans l’élément "designation" du premier élément "article".

Définition
Dans les données d’un élément, les 5 caractères : &  '  <  >  et " ne doivent pas être représentés tels quels mais par une entité (code précédé du caractère &, et suivi de ;).
Caractère : & (esperluette)
Entité : &amp;
Caractère : ' (apostrophe)
Entité : &apos;
Caractère : < (inférieur à)
Entité : &lt;
Caractère : > (supérieur à)
Entité : &gt;
Caractère : " (guillement)
Entité : &quot;

Namespaces

Les "espaces de nommage" correspondent à l’extensibilité d’XML (propriété qui permet à chacun de définir des éléments dans une structure XML sans venir perturber le reste).

Exemple : dans le fichier articles ci-dessus défini, je désire ajouter ma propre information "référence fournisseur" qui sera identifiée par un namespace abrégé en fou :

<?xml version="1.1" encoding="iso-8859-1"?>
<articles xmlns="http://www.xxxxx.org/XML/DTD/articles"
          xmlns:fou="http://www.mondomaine.fr/"
>
    <article code="zs857">
        <designation>Rondelle d&apos;alu A</designation>
        <prix p="vente" unit="100">44.51</prix>
        <fou:ref>T000000011</fou:ref>
    </article>
    <article code="zs858">
        <designation>Ecrou inox 8x42</designation>
        <prix p="vente" unit="boite">4.00</prix>
        <fou:ref>T0000002541</fou:ref>
    </article>
</articles>

Attention : la désignation réelle du namespace pour les programmes qui vont interpréter le fichier est http://www.mondomaine.fr/. L’attribut xmlns: est une méthode pour faire correspondre une abréviation à ce nom, ceci pour les lecteurs humains. L’utilisation d’un URI (Uniform Resource Identifier) utilisant un nom de domaine (donc unique) permet d’être sûr qu’il n’y aura pas de collision avec un autre élément de même nom, apporté par un tiers participant.

Ressources

XML Versions 1.0
Extensible Markup Language (XML)W3C Recommendation [http://www.w3.org/TR/REC-xml]
Namespaces in XML, W3C Recommendation [http://www.w3.org/TR/REC-xml-names/]
XML Versions 1.1
XML 1.1, W3C Recommendation [http://www.w3.org/TR/xml11]
Namespaces in XML 1.1 W3C Recommendation [http://www.w3.org/TR/xml-names11/]