mercredi 24 octobre 2012

Introduction à XML


1.XML

1.1.A quoi sert XML ?

La norme XML (eXtensible Markup Language) permet avant tout de stocker dans un fichier des informations structurées. On parle alors de document XML.
Ce dernier est alors composé de texte libre et de balises (à la manière de ce que vous pouvez connaître avec l'HTML) possédant éventuellement des attributs.
L'utilisation du XML permet entre autre: D'échanger des informations entre diverses applications. De générer des documents (HTML par exemple) ayant différents aspect selon l'utilisateur final. D'exporter et importer vers/de bases de données. etc. Les données sont indépendantes de l'affichage ainsi à partir d'un seul fichier XML, on pourra créer des documents sonores, pour téléphones portables, pour des appareils brailles, et bien sûr des pages HTML.

1.2.Quel est le principe d'XML ?

En HTML, toutes les balises sont définies, elles sont recensées et on s'en sert comme bon nous semble (ex: <b>,<i>...). En XML il n'existe aucune balise prédéfinie, c'est à nous de les définir en mettant l'accent sur la signification de la données, ce n'est qu'ensuite que cela pourra être traduit par un affichage en gras, en bleu, en italique et en Arial à la fois.
En XML, les données sont séparées de l'affichage.
Les fichiers XML sont souvent très simples, voici un exemple de fichier XML:

<?xml version="1.0" encoding="ISO-8859-1"?>

<annuaire>
    <personne>
        <nom>HEUTE</nom>
        <prenom>Thomas</prenom>
        <email>webmaster@xmlfacile.com</email>
    </personne>
    <personne>
        <nom>CANTAT</nom>
        <prenom>Bertrand</prenom>
        <email>noir@desir.fr</email>
    </personne>
</annuaire>

Avec ce fichier, on n'a pas défini comment sera écrit cet annuaire mais on y a déjà mis des informations. Pour l'affichage, on utilisera des fichiers CSS et XSL.

1.3.Ecrire un fichier XML bien-formé

Un document XML bien-formé est un document XML qui respecte certaines rêgles simples.
Il ne doit exister qu'une seule balise racine (le bloc de l'ensemble des balises du document doit être compris entre et ) Toute balise ouverte doit être refermée (a <balise> doit être associé </balise>) Les noms des balises doivent commencer par une lettre ou "_", les autres caractères peuvent être des chiffres, des lettres, "_", "." ou "-". Les noms des balises ne doivent pas commencer par xml Par convention, les balises sont en minuscules.
Quand un élément est vide, les balises peuvent être simplifiées <balise></balise> est identique à <balise/>

1.4.Mon premier document XML

Voici un document XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
    <personne type="étudiant">
        <nom>HEUTE</nom>
        <prenom>Thomas</prenom>
        <email>webmaster@xmlfacile.com</email>
    </personne>
    <personne type="chanteur">
        <nom>CANTAT</nom>
        <prenom>Bertrand</prenom>
        <email>noir@desir.fr</email>
    </personne>
</annuaire>

Ce document XML est bien-formé, il a une seule racine (annuaire), 2 éléments (personne), 1 attribut associé à <personne> (type) et la balise personne a 3 éléments (nom,prénom,email).
Un fichier XML représente syntaxiquement un arbre, l'arbre correspondant à ce fichier est le suivant:


1.5.Les attributs

Les valeurs des attributs doivent être précisés, au choix, entre guillemets " ou entre apostrophes '.


<?xml version="1.0" encoding="ISO-8859-1"?>
<racine>
    <mabalise monattribut="valeur1" />
    <mabalise monatrribut='valeur2' />
</racine>


Une valeur précisée entre apostrophes peut contenir des guillemets, une valeur précisée entre guillemets peut contenir des apostrophes.


<?xml version="1.0" encoding="ISO-8859-1"?>
<racine>
    <mabalise monattribut='il a dit "Bonjour!"' />
    <mabalise monatrribut="c'était aujourd'hui" />
</racine>


Si vous souhaitez indiquer une valeur d'attribut contenant des guillemets (alors que celle-ci est délimitée par des guillemets) vous devrez utiliser la notation &quot; ou le code ASCII &#34;.
Si vous souhaitez indiquer une valeur d'attribut contenant des apostrophes (alors que celle-ci est délimitée par des apostrophes) vous devrez utiliser la notation &apos; ou le code ASCII &#39;.

<?xml version="1.0" encoding="ISO-8859-1"?>
<racine>
    <mabalise monattribut="il a dit &quot;Bonjour!&quot;" />
    <mabalise monatrribut='c&apos;était aujourd&apos;hui' />
</racine>

1.6.Les caractères spéciauxs

Afin de ne pas rompre la validité d'un document XML, vous ne pouvez pas utiliser les caractères < et &tels quels au sein de votre texte (contenu de la balise) ni même en tant que valeur d'un attribut. Le document XML suivant n'est donc pas correct.


<?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
    <societe>
        <nom>Garage Dupond & Fils</nom>
        <description>Distance du centre ville < 2 km</description>
    </societe>
</annuaire>


Vous devez donc remplacer ces deux notations par &lt; et &amp;.


<?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
    <societe>
        <nom>Garage Dupond &amp; Fils</nom>
        <description>Distance du centre ville &lt; 2 km</description>
    </societe>
</annuaire>

Vous pouvez aussi opter pour une notation s'appuyant sur le code ASCII du caractère, ce qui donne alors &#60; et &#38;.x


<?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
    <societe>
        <nom>Garage Dupond &#38; Fils</nom>
        <description>Distance du centre ville &#60; 2 km</description>
    </societe>
</annuaire>


Une autre alternative consiste à préciser à l'analyseur XML de ne pas interpréter ces caractères spéciaux pour le texte selectionné. Pour cela, vous devez préciser le texte entre <![CDATA[ et ]]>.
<?xml version="1.0" encoding="ISO-8859-1"?>
<annuaire>
    <societe>
        <nom><![CDATA[Garage Dupond & Fils]]></nom>
        <description><![CDATA[Distance du centre ville < 2 km]]></description>
    </societe>
</annuaire>

1.7.La déclaration de type

Comme vous avez pu le constater dans les exemples précédents les documents XML commencent par une ligne &?xml (...)>. Cette ligne permet de préciser la version d'XML utilisée grâce à l'attribut obligatoire version. Elle permet également de préciser le type d'encodage utilisé (ex: iso-8859-1 pour les caractères utilisés en Europe occidentale). Par défaut, l'encodage est supposé être de l'unicode UTF-8.

1.8.Les commentaires

Il est possible d'inclure des commentaires dans un document XML. Il suffit d'utiliser la même notation que celle que vous pouvez connaître pour l'HTML. Le début de la section de commentaire est précisée par <!-- et la fin par -->
Un bloc de commentaire ne peut contenir --

1.9.Conclusion

Nous savons désormais faire un document XML "bien formé" (well formed). C'est bien mais cela ne nous suffit pas. En effet, nous pouvons être amené à associer à ce document XML, une DTD afin de forcer l'écriture de fichiers XML "valide" à savoir: des fichiers respectant des contraintes supplémentaires du genre une balise "annuaire" peut comporter de 0 à un nombre quelconque de "personne", une balise personne est définie par un seul "nom", un seul prénom mais peut-être défini avec au moins un "email".

Aucun commentaire:

Enregistrer un commentaire