Introduction
1. Définition
- eXtensible Markup Language : metalanguage pour tagguer un contenu ou pour définir d'autres languages (SVG par ex.)
- Format universel de données standardisé par le W3C
- Comme le HTML, il est issu du SGML et donc interopérable avec le HTML
- Le xHTML est du XML exhaustif
2. Avantages
- Très flexible, on crée ses propres balises et ses propres attributs
- Validation comme le HTML via une DTD ou des schémas
- Standardisé et ouvert (sans licence) compatible avec énormément d'applications ou autres languages (JS, PHP,...)
3. Inconvénients
- Le format lui-même : du texte, donc plus volumineux que des données en format binaire
- Très très strict (trop ?) au niveau de la validation. Ce qui peut être un avantage....
Structure
1. Document bien formé
- Un document XML est bien formé si il dispose d'un prologue suivi d'un élément racine
- Prologue : <?xml version="1.0" encoding="utf8"?>
- Racine : balise unique dans le document qui encadre tout le contenu (<html> est la racine d'une page html
- XML est sensible à la casse. XML est strict : tout élément (balise) doit être fermé
- FireFox et IE affiche un document XML sous forme d'arborescence.... si le document est bien formé : ce sont des "parseurs" XML
- 3 entités fondamentales : < pour <, > pour > et le & pour & pour les différenciers des instructions de base d'XML
- Sections CDATA : non interprétée par le parseur... on peut donc y mettre tout ce qu'on veut. <![CDATA[ données texte ]]>
Instructions de traitement : <? instructions ?> comme le prologue ou liaison avec une feuille de style (voir infra) - L'insertion de commentaires dans le code : comme en HTML : <!-- comment -->
Validation
1. DTD
a) Définition
b) Structure
Tous les éléments (balises) ou attributs du document XML devront y être déclarés ainsi que leur(s) contenu(s).
La DTD peut être définie en externe : Elle sera enregistrée dans un document texte .dtd, déclarée aussi entre le prologue et la racine par l'instruction DOCTYPE suivie de l'instruction SYSTEM suivie de l'URI du fichier .dtd : <!DOCTYPE racine SYSTEM "URI dtd externe">.
Cumul interne et externe : le DTD externe est traitée après la DTD interne.
c) Contenus
- Chaque balise est définie via l'instruction <!ELEMENT suivie du nom de la balise. On y indique le nom de ses sous-éléments qu'il peut ou doit contenir et le type de contenu éventuel. <!ELEMENT personnes (nom,prenom+,sexe)><!ELEMENT nom (#PCDATA)>
- Chaque attribut d'une balise sera définit via <!ATTLIST suivi du nom de la balise, du nom de l'attribut, du type et des options. <!ATTLIST personnes ddn CDATA #REQUIRED id ID REQUIRED>
- Des entités peuvent être ajoutés à celles par défaut (voir supra). Les entités peuvent être comparées à des variables qui permettent de remplacer n'importe quel texte par une chaine de caractères au sein de la DTD ou du document XML. Définies par <!ENTITY suivi de son nom et de sa valeur dont & et % sont exclus. Pour appeler une entité dans le document XML c'est comme en HTML : &nom_entité; <!ENTITY cepegra"Cepegra, Forem Formation à Gosselies"> est appelé par &cepegra;
Il existe différents types d'entités... Ca sort du cours, Google est votre ami.
2. Schemas XML
a) Définition
- Elles ne sont pas au format XML. C'est un language différent
- Les DTDS ne supportent pas les espaces de nom (voir infra)
- Le typage des données (INT, CHAR, DECIMAL) est très limité
Les schemas proposent en plus des fonctions DTD :
- Le typage complet des données
- La notion d'héritage du contenu et attributs d'un autre élément
- Le support des espaces de noms
- Les indicateurs d'occurrences plus élaborés.
- La conception modulaire
b) Structure
Assez complexe à mettre en oeuvre, on en rencontre rarement dans le milieu du Web. C'est le genre d'outils qu'on retrouve plutôt dans de gros développement d'application ou la gestion de serveurs.
Pour plus d'info : Google.
Espaces de noms
Généralités
Forme syntaxique : déjà rencontrée dans certains documents xHTML. Pour référencer un espace : <element xmlns:nom_espace="URI de description">. Pour dire qu'un élément appartient à cet espace de nom : <nom_espace:element nom_espace:attribut="valeur attribut">...</nom_espace:element>
XML et CSS
Comme n'importe quelle CSS, vous pouvez utiliser les sélecteurs de type balises, id ou classes et les combiner.
Pour attacher une feuille de styles à un document XML, il suffit d'ajouter après le prologue l'instruction de traitement suivante : <?xml-stylesheet href="URL doc .css" type="text/css"?>
Traitement XSLT
1. Définition
Une utilisation courante : pouvoir transformer un ou plusieurs attributs de balise en balise afin d'en afficher le contenu dans un document texte ou HTML.
Le fonctionnement est fondé sur la manipulation de templates. Les éléments du document XML original sont remplacés par les modèles qui les prennent pour cible.
Afin de cibler un élément dans le DOM du document XML, XSLT se fonde sur le language XPATH.
2. Structure
L'élément racide xsl contiendra tous les templates y compris celui associé à la racine du document XML cible, modèle que l'on écrit : <xsl:template match="/">(...)</xsl:template>
3. Rendu
Usages
Web
Tous les services web sont compatibles XML. Que vous utilisiez les APIs de chez Google, Twitter, Facebook, Flickr, Yahoo,.... les données que vous pouvez extraire de ces services peuvent vous être envoyées en format XML. Ce sont des flux que vous pouvez intégrer dans vos projets.
A propos de flux, sachez également que les flux RSS et Atoms sont basés sur le format XML.
Le format SVG (Scalable Vector Graphics) permet de convertir un graphique vectoriel en XML compatible web et intégrable directement dans votre HTML.
Informatique
Références
- Cours de XML : http://www.gchagnon.fr/cours/xml/
- asp-php.net - Initiation à XML : http://www.asp-php.net/tutorial/xml/xml_1.php
- Espaces de noms : http://deptinfo.unice.fr/twiki/pub/Minfo03/ServletEtXml/01c-xml-namespaces.pdf
- Tester son XSLT :
http://www.freeformatter.com/xsl-transformer.html#ad-output