XML

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 : &lt; pour <,  &gt; pour > et le &amp; 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

Comme pour un document HTML, on peut valider un document XML pour vérifier que son contenu est conforme à une bibliothèque d'élements : la DTD. Celle-ci permet de définir un ensemble de règles garantissant la bonne structure d'un document XML (hierarchisation des données incluses). On y définit les balises (éléments et attributs) pouvant ou devant être reprises dans le document ainsi que leur ordre d'apparition.

b) Structure

La DTD peut être définie en interne : Déclarée entre le prologue et l'élément racine, elle est introduite comme en HTML par l'instruction DOCTYPE suivie par le nom que porte l'élément racine : <!DOCTYPE racine [ instructions ]> <racine>...</racine>. Chaque instruction DTD commence par <!
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

Constat : les limites des DTDs. Très pratiques, nous l'avons vus, les DTDs ont différentes faiblesses :

  • 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

Les schemas XML sont définis à l'aide d'un document..... XML !!! Ce document permet de décrire les autorisations d'imbrication et l'ordre d'apparition des éléments et de leurs attributs comme une DTD.  Mais il permet d'aller au-delà, comme l'automatisation de la création d'une documentation à paritr du schema. Le schema étant un document XML, n'importe quel parseur peut en faire l'analyse et en produire une documentation papier ou HTML.
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

But : éviter les doubles-sens de certains éléments XML portant le même nom mais ayant des significations différentes. Un exemple simple : fusion de deux documents XML en un seul mais certaines balises portent le même nom. Les espaces de noms permettent d'identifier d'où vient telle ou telle balise et donc de ne pas confondre leur signification.
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

XML est un language de balise. Tout comme pour le HTML, on peut lui joindre une feuille de styles CSS pour afficher un rendu visuel du code.
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

eXtensible Stylesheet Langage Transformation...... XSLT est un language qui va nous permettre de manipuler un document XML pour le transformer en un autre XML ou même en HTML en en boulversant la structure.
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

Un document XSL(T) est un document XML. Il dispose d'un prologue puis un élément racine du type  xsl:stylesheet avec quelques attributs dont une déclaration d'espace de noms et le numéro de version : <xsl:stylesheet version="1.0" xmlns:xsl="url w3c">(...)</xsl:stylesheet>

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

Pour parser et transformer votre docment XML à l'aide de votre XSLT, il faut afficher ou importer le document XML dans un logiciel compatible. Dreamweaver, InDesign et tous les navigateurs modernes (sauf Chrome où une extension est nécessaire) permettent d'avoir ce rendu.

Usages

Web

XML est un language qui permet de faire transiter des données d'un service vers un autre dans un format standardisé.
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.

Print

Pas mal de logiciels modernes de mise en page sont équipés d'outils d'importation de données XML (InDesign, Illustrator, Xpress, OpenOffice, ...) Dès lors, il suffit d'un gabarit pour réaliser rapidement un catalogues entier en quelques heures.

Informatique

On trouve de l'XML partout : préférences de logiciel (Photoshop), configuration de serveurs, stockage d'information dans un annuaire téléphonique sur smartphone, etc.

Références

Laisser un commentaire