Le point sur XML
Last updated on Tuesday, October 29, 2013

Free online content available in this course.

Got it!

Introduction du cours

Bonjour à tous,

aujourd'hui, XML est sur toutes les lèvres. Sur le net, c'est carrément devenu un argument de vente et ces trois lettres sont présentées comme la solution ultime à tous les problèmes, le langage du XXI siècle...
Mais il faut bien se rendre à l'évidence : XML reste quelque chose de très abstrait, et on a parfois du mal à comprendre à quoi il sert !

Une version plus à jour de ce tutoriel est disponible sur le site SVGround : tutoriel XML

Ce qu'est XML

D'abord, ne soyez pas déçus mais c'est comme ça : sachez que XML ne peut pas faire grand chose tout seul. On peut même dire qu'il ne sert à rien :o
En fait, XML est un langage de balisage, standardisé par le World Wide Web Consortium (à l'origine du HTML), qui définit un ensemble de règles syntaxiques pour la présentation structurée de l'information.

Hein, quoi o_O ? Je comprends rien !

Normal, dit comme ça, vous ne risquez pas de comprendre. :p

En fait, c'est très simple. Un jour, des informaticiens se sont dit que ça serait cool de faire communiquer des programmes, de partager des informations, etc. Alors ils ont créé des fichiers avec toutes ces informations dedans, séparés par des blancs, ou des tirets, où les sauts de lignes signifiaient soit une nouvelle information, soit autre chose... et au final, ces fichiers étaient tous plus illisibles les uns que les autres, et à chaque fois il fallait réécrire plein de code pour lire les nouveaux fichiers.

Et puis un jour, ces mêmes informaticiens se sont dit qu'ils pourraient essayer de faire parler les ordinateurs entre eux ! Brillante idée, Internet était né, avec http comme protocole pour la distribution des données.

Mais avec la naissance d'Internet et des échanges de données à travers la planète, il a fallu inventer un langage qui serait compris de tous. On l'appela SGML, c'est lui qui donna naissance au HTML. Un vrai succès !

Malheureusement, la norme SGML était trop compliquée pour beaucoup, et c'est alors que fut inventé par le W3C le XML.
Ce fut un véritable succès. L'industrie s'en empara et inventa un tas de dialectes (ou langages) à partir de XML.

Car c'est bien là l'essence de XML : tout le monde peut créer son langage à partir des règles de syntaxes dictées par cette norme. C'est pour ça qu'on dit que XML est un méta-langage : il permet d'en créer plein d'autres.
Bien sûr, ces langages créés ont tous la même fonction : présenter de l'information structurée. Par exemple, les entreprises aéronautiques ont créé un langage basé sur XML pour l'échange d'informations relatives aux données techniques des avions. De même, il existe plusieurs langages utilisés dans les milieux financiers pour l'échange d'informations relatives aux transactions.

Bref, ce qu'il faut retenir, c'est que XML n'est pas une fin mais un moyen.

Citation : PHP5 Référence (Micro Application)

Il y a quelques temps résonnait dans le monde informatique le mot "Xml". Tout le monde l'avait à la bouche, et apparemment une grande révolution s'annonçait. L'effet de mode s'étant à présent dissipé, Xml est reconnu pour ce qu'il est : une norme de structuration de données.

C'est on ne peut plus clair.

Ce que n'est pas XML

Maintenant, pour éviter toute confusion, voici ce que XML n'est pas :

  • XML n'est pas le remplaçant de HTML, tout simplement parce qu'ils n'ont pas le même but : XML sert à structurer l'information, tandis que HTML a pour but de la présenter et de lui donner du sens (par exemple, le texte dans un <blockquote> est une citation). XML n'est pas non plus le remplaçant du XHtml, qui a pour but de donner du sens à du texte (la présentation étant, en principe, confiée à CSS) ;

  • XML ne doit pas être utilisé pour faire du document web. Ce n'est pas son rôle, même si on peut y appliquer du style avec CSS :

    <paragraphe>Ceci est <tres-important>urgent</tres-important>
    

    n'a aucun sens. Il faudrait plutôt écrire cela en (X)Html comme ceci :

    <p>Ceci est <strong>urgent</strong>
    

    Mais ça je vous fais confiance, vous connaissez :D ;

  • un autre point : XML n'est pas fait pour le stockage. Vous verrez plus bas que ça peut paraître très intéressant. Mais une fois de plus, il faut préciser que XML n'est pas fait pour ça : il est très verbeux (bavard) et les fichiers XML ont tendance à être assez volumineux. Pour garder les avantages des bases de données classiques avec XML, il faudra vous tourner vers les bases de données XML natives.
    Une base de données XML native est une base de données qui stocke ses données de manière traditionnelle (en binaire : 010101010101001101010), ce qui a l'avantage de prendre peu de place, mais qu'on peut interroger avec des langages spécialisés, comme XPath et XQuery (j'en parlerai plus bas), et qui peut renvoyer des résultats en XML.

Les règles de syntaxe XML

Si vous n'en avez rien à faire des règles de syntaxe de XML, passez à la section suivante. Sinon, suivez le guide ^^ : je vais vous "apprendre" XML !

Les règles de base

Tout d'abord, sachez que XML ressemble par certains points à XHtml. Normal, XHtml est du XML :p (mais nous y reviendrons plus tard).

En effet, XML est un langage de balisage : une balise commence par le signe < et se termine par >. Il doit toujours y avoir une balise ouvrante et une balise fermante. La balise fermante commence par </, comme ceci :

<balise></balise>

Une balise peut contenir du texte, d'autres balises, les deux ou rien. Par exemple :

<balise><superbalise>Du texte</superbalise> et encore du texte</balise>

Les balises ne doivent pas se chevaucher. Ceci est interdit :

<balise1><balise2>Du texte</balise1></balise2>

Lorsqu'il n'y a pas de texte entre deux balises, on peut écrire une forme raccourcie :

<machin></machin>

devient

<machin/>

Les éléments peuvent porter des attributs (trop cool :lol: ), délimités par des " ou des ' :

<mabalise attribut1="Salut" attribut2="tout" attribut3="le" attribut4="monde"/>

En général, on utilise les guillemets doubles ".

C'est bien beau tout ça, mais si j'ai un attribut nom dedans, je fais comment ? L'apostrophe va tout faire bugger, non ?

Et bien si ! C'est pour ça qu'il existe avec XML cinq entités prédéfinies :

  • &lt; remplace <;

  • &gt; remplace >;

  • &apos; remplace ';

  • &quot; remplace ";

  • et &amp; remplace & !

Plus de problème avec O'Neill donc :p :

<personne nom='O&apos;Neill' métier="secret défense"/>
<personne nom="O&apos;Neill" métier="secret défense"/>
<personne nom="O'Neill" métier="secret défense"/>

Les trois balises sont équivalentes. En fait, on ne doit utiliser les entités prédéfinies que quand il y a ambiguïté. Mais ça ne pose pas de problème de les utiliser quand il n'y a pas d'ambiguïté, et c'est d'ailleurs souvent plus simple de procéder comme ça.

Les documents XML doivent respecter une autre règle : un élément (ou balise) doit contenir tous les autres. On appelle cette élément "élément racine".

<racine>
   <balise1>
      <balise2>Du texte</balise2>
   </balise1>
   <balise1>Bla bla bla</balise1>
</racine>

Le prologue XML

Un prologue peut être placé au tout début du fichier pour indiquer différentes informations (il est optionnel). Ça ressemble à ça :

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
  • On indique d'abord la version de XML qu'on utilise. Vous n'utiliserez que la version 1.0 (sauf si vous avez l'envie subite d'écrire vos balises en chinois traditionnel) ;

  • la seconde information est l'encodage du document. L'encodage par défaut de XML est l'UTF-8, mais votre éditeur de texte enregistre probablement vos fichiers en iso-8859-1. Regardez dans ses options pour en être sûrs ;

  • la dernière information sert à indiquer si le fichier XML est susceptible de recevoir une DTD externe (no) ou non (yes).

Les instructions de traitement

Les instructions de traitement, ou processing-instruction en anglais (PI), s'adressent à un langage-cible qui se sert des informations fournies pour faire une action... quelconque !
La syntaxe est la suivante :

<?langage-cible instructions?>

Prenons pour exemple la PI xml-stylesheet qui permet de lier une feuille de style à un document XML :

<?xml-stylesheet type="text/css" href="print.css" title="Imprimer un couleur" media="print" charset="iso-8859-1" alternate="yes"

Ça vous rappelle quelque chose, non :p ?

Certains d'entre vous connaissent sans le savoir une autre PI : il s'agit de <?php instructions?>.
C'est pour cela qu'il faut écrire :

<?php ?>
et pas
<? ?>

Les sections CDATA

Voici une facette un peu méconnue de XML : la section CDATA. Une section CDATA sert à s'affranchir de l'échappement des caractères spéciaux XML (cf les cinq entitées). Bref, plus besoin d'utiliser les entités. L'exemple suivant (en XHtml) n'est pas très élégant :

<p>Hier j'ai écrit un fichier XML de ouf !</p>
<p>&lt;monfichierXML&gt;
        &lt;balise1&gt;
                &lt;balise2&gt;Du texte&lt;/balise2&gt;
        &lt;/balise1&gt;
        &lt;balise1 truc=&quot;pouf&quot; paf=&quot;pif&quot;/&gt;
&lt;/monfichierXML&gt;</p>

tandis qu'avec une section CDATA, plus aucun problème :

<p>Hier j'ai écrit un fichier XML de ouf !</p>
<p><![CDATA[<monfichierXML>
        <balise1>
                <balise2>Du texte</balise2>
        </balise1>
        <balise1 truc="pouf" paf="pif"/>
</monfichierXML>]]></p>

Le code entre <![CDATA[ et ]]> n'est pas interprété, c'est-à-dire qu'il est considéré comme du texte, pas comme du XML. La chaîne de caractères "]]>" est interdite dans une section CDATA (logique, puisque cette séquence de caractères indique la fin d'une section CDATA). Une section CDATA ne peut donc pas contenir de section CDATA (mais qui aurait une idée aussi tordue :p ? ).

Les commentaires

Comme dans tous les langages de programmation, il est possible d'inclure des commentaires dans le code source. C'est encore une fois très simple :

<!--le commentaire se place ici-->

La seule chose à retenir est que la séquence "--" est interdite dans un commentaire. Mais croyez moi, il ne servent pas à grand chose !

Voilà, vous connaissez XML ! C'est pas sorcier, hein ;) ?
Si toutes ces règles sont respectées, on dit que le document XML est bien formé (well-formed, en anglais). S'il n'est pas bien formé, c'est une erreur et le document XML est inutilisable.

La galaxie XML

Vous le voyez, XML ne sert à rien !
En fait, ce qui sert, ce sont tous les langages qui gravitent autour, et qui sont intéressants. Ils font partie de la galaxie XML.

Ceux dont l'orbite est très éloignée ne nous intéressent pas : il s'agit de langages dédiés à des domaines très précis, le CML par exemple qui est utilisé pour décrire des composés chimiques, ou SVG pour le dessin vectoriel en 2D.

Mais il y a certains langages qui ont une orbite basse (c'est une image, hein ^^ ). Ces langages, qui ne sont pas tous des dialectes XML, servent à manipuler des documents XML (DOM, SAX), à les transformer (Xslt), à décrire leur contenu (DTD, Schémas XML), à les mettre en forme (CSS), à établir des liens entre eux (XLink), etc.
Ce sont ces langages qui font l'intérêt et le succès de XML, et d'ailleurs, la plupart des langages de script modernes (php, asp, javascript) les gèrent.

Les sections qui suivent donnent un aperçu des principales technologies XML.

Les espaces de noms (namespaces)

Mais avant tout, il faut que vous sachiez une chose, c'est qu'on peut mélanger plusieurs langages XML. Et ça croyez moi, c'est vraiment cool :) .

Le problème

C'est là que survient le premier problème. Imaginons que nous voulons générer du SVG (graphisme vectoriel) avec Xslt. Les deux langages ont une balise <text/>. Or, comment le programme qui traitera notre document pourra savoir que ce <text/>-ci est un élément SVG et que celui-là appartient au langage Xslt ? C'est pour éviter ce genre de problème qu'on appelle collision de nom (c'est beau, on se croirait en physique nucléaire :D ), que les namespaces ont été inventés.

La notion de namespace

Le mécanisme de namespace, qu'on peut traduire par "espace de nom", ou "domaine nominal", est une notion assez abstraite.
Un namespace lui-même est abstrait. C'est une chaîne de caractères (une adresse internet, mais elle n'est pas lue) qui sert à identifier le langage auquel appartient la balise, ou l'attribut qui fait partie de ce namespace.
Mais c'est tellement abstrait qu'il vaut mieux un exemple, sinon je vais pas m'en sortir. :-°

La technique

Tout d'abord, il faut déclarer le namespace grâce à l'attribut réservé xmlns. Par exemple, pour le XHtml, on fait :

<html xmlns="http://www.w3.org/1999/xhtml">

Il faut avouer que ça ne nous avance pas à grande chose... Comment faire pour inclure du MathML (langage XML pour décrire des équations mathématiques) ? Ajouter un second attribut xmlns est interdit (il est interdit d'y avoir deux attributs ayant le même nom).

On va donc déclarer un préfixe pour un namespace, qui comme son nom l'indique se placera avant un nom de balise ou d'attribut, et dire que toutes les balises et tous les attributs portant ce préfixe appartiennent au namespace précisé, et donc à un langage spécifique.

Pour déclarer un namespace et un préfixe, on utilise la syntaxe suivante, toujours avec l'attribut xmlns :

xmlns:prefixe="adresse-du-namespace"

On a une totale liberté sur le choix du préfixe.
Ensuite, on l'utilise comme ceci sur les balises et les attributs :

<prefixe:balise prefixe:attribut="truc pif paf pouf"/>

Simplissime, n'est-ce pas ?

Avec du XHtml, cela nous donnera donc :

<frites:html xmlns:frites="http://www.w3.org/1999/xhtml" frites:lang="en">
<frites:head>
<!-- etc etc -->
</frites:head>
<frites:body>
<frites:p>
<frites:a frites:href="http://www.siteduzero.com">Cours XHtml/css, php et C++</frites:a>
</frites:p>
</frites:body>
</frites:html>

Pour simplifier la chose, on peut enlever les préfixes des attributs : si aucun préfixe n'est associé à un attribut, il appartient au même namespace que l'élément auquel il appartient. Ce qui nous donne :

<frites:html xmlns:frites="http://www.w3.org/1999/xhtml" lang="en">
<frites:head>
<!-- etc etc -->
</frites:head>
<frites:body>
<frites:p>
<frites:a href="http://www.siteduzero.com">Cours XHtml/css, php et C++</frites:a>
</frites:p>
</frites:body>
</frites:html>

Maintenant, pour inclure un autre langage, du MathML par exemple, il suffit de déclarer son namespace avec un autre préfixe, comme ceci :

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mathml="http://www.w3.org/1998/Math/MathML" lang="en">
<xhtml:head>
<!-- etc etc -->
</xhtml:head>
<xhtml:body>
<xhtml:p>
<mathml:math>
  <mathml:msup>
    <mathml:msqrt>
      <mathml:mrow>
        <mathml:mi>a</mathml:mi>
        <mathml:mo>+</mathml:mo>
        <mathml:mi>b</mathml:mi>
      </mathml:mrow>
    </mathml:msqrt>
    <mathml:mn>27</mathml:mn>
  </mathml:msup>
</mathml:math>
</xhtml:p>
</xhtml:body>
</xhtml:html>

Les informaticiens étant des fainéants, ils ont trouvé un moyen de simplifier ce mécanisme. Si on écrit :

xmlns="http://www.machin.org"

alors on considère que l'élément qui porte cette déclaration et ses descendants appartiennent à ce namespace ! En réécrivant le code ci-dessus, ça donne :

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:mathml="http://www.w3.org/1998/Math/MathML" lang="en">
<head>
<!-- etc etc -->
<head>
<body>
<p>
<mathml:math>
  <mathml:msup>
    <mathml:msqrt>
      <mathml:mrow>
        <mathml:mi>a</mathml:mi>
        <mathml:mo>+</mathml:mo>
        <mathml:mi>b</mathml:mi>
      </mathml:mrow>
    </mathml:msqrt>
    <mathml:mn>27</mathml:mn>
  </mathml:msup>
</mathml:math>
</p>
</body>
</html>

En suivant la même règle, on peut écrire :

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<!-- etc etc -->
<head>
<body>
<p>
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <msup>
    <msqrt>
      <mrow>
        <mi>a</mi>
        <mo>+</mo>
        <mi>b</mi>
      </mrow>
    </msqrt>
    <mn>27</mn>
  </msup>
</math>
</p>
</body>
</html>

En fait, c'est assez intuitif :) .

Et ça a l'avantage d'être très puissant.
Malheureusement, les navigateurs ne sont pas à l'heure actuelle (fin 2005) vraiment capables d'exploiter ce mécanisme...

Le style avec CSS et Xslt/XPath

Le style CSS

CSS (Cascading Style Sheets, Feuille de Style en Cascade en français) est un langage non XML (mais très simple), dédié à la présentation de documents XML. CSS couvre un large choix de propriétés, allant de la couleur du texte à la taille d'un bloc, en passant par la position d'une image d'arrière-plan ou des compteurs...

CSS reconnaît les namespace, est disponible pour plusieurs médias (affichage à l'écran, format pour l'impression, propriétés auditives, etc), et possède des sélecteurs puissants qui permettent d'effectuer des réglages fins sur les éléments sur lesquels appliquer du style.

Enfin, il existe des propriétés spécifiques à certains langages, pour les graphiques vectoriel 2D SVG par exemple.

Bref, le style en CSS c'est puissant. :lol:

La preuve, le design plutôt sympa de ce site est intégralement réalisé avec CSS.

Le style avec Xslt

La notion de style avec Xslt est très différente de celle avec CSS. Ici, pas question de colorer un bloc en rouge ou d'agrandir la taille du texte, même si on parle toujours de feuille de style.

Xslt est un dialecte XML servant à transformer un document XML source en un autre document XML ou en texte.

Concrètement, ça marche comme ceci : on a un premier fichier XML source sur lequel on applique une feuille de style Xslt (qui est le second fichier XML), et cela produit un troisième document XML ou texte.

L'intérêt ? Imaginons un document XML qui décrit des statistiques : on peut grâce à des feuilles de style Xslt le transformer très facilement en un beau graphique 2D SVG, en document XHtml pour la consultation sur le web, ou en pdf en incluant le beau graphique 2D (grâce à FO). C'est puissant :diable: .

Pour se situer dans un document XML, Xslt utilise XPath qui est un langage d'adressage non XML, lui aussi très simple et très intuitif. Il est indispensable à Xslt, c'est pourquoi on parle généralement du couple Xslt / XPath.

Ces deux langages font partie de la base de XML.

XQuery : XML comme une base de données

Il existe un autre langage pour extraire des informations d'un document XML : XQuery.
Il adopte une syntaxe très proche de SQL, et utilise XPath pour retirer n'importe quelle donnée d'un fichier XML.
Il utilise aussi Xpath pour se repérer dans le document.

Ce langage permet en plus toutes les opérations que l'on peut vouloir faire avec SQL : insertion de données, mise à jour, suppression, etc.
D'ailleurs, les bases de données XML natives dont je parlais plus haut permettent leur interrogation en XQuery.

DTDs et schémas

Les DTD et les schémas ont les mêmes buts : donner des règles d'écriture d'un document XML spécifique (super important dans l'industrie par exemple). C'est-à-dire qu'en plus de règles de syntaxe de base de XML, les DTD et les schémas rajoutent des contraintes sur les éléments autorisés, les valeurs possibles d'un attribut, leur ordre d'apparition, etc.

Par exemple, il est écrit dans la DTD de XHtml qu'un élément <ul>
ne peut contenir que des <li>
, ou que l'élement <title>
ne peut se trouver qu'une fois dans <body>
.

Un document qui est correct grâce à ces contraintes est dit valide, par rapport à une DTD ou à un schéma. Un document valide est forcément bien formé, mais un document bien formé n'est pas forcément valide par rapport à une DTD ou à un schéma.

Les DTD

Les DTD, nés avec le langage XML, présentent un syntaxe non XML pour décrire des règles d'écriture.
Il est vite apparu que les DTD étaient insuffisantes, et de toute façon pas assez puissantes. De plus, les DTD ne gèrent pas les namespace. C'est pourquoi on a inventé les schémas XML.

Les schémas XML

Il existe différents langages de schémas, mais nous n'en retiendrons qu'un : XML Schéma, promu par le W3C.
Il permet enfin le typage des données (on peut dire : "le contenu de la balise <age> doit être compris entre 0 et 123"), la gestion des namespace et une multitude d'autre possibilités sympathiques :D . Cette spécification du W3C est vouée à devenir une base de référence dans l'univers XML, et les nouveaux langages prennent d'ailleurs en compte XML Schéma (XForms et XPath2 par exemple).

DOM

DOM (Document Object Model) est une API (comprenez : un moyen de programmer) normalisée par le W3C qui construit en mémoire le document XML sous forme arborescente (sous forme d'arbre).

À partir du moment où cet arbre est construit en mémoire, on peut accéder à n'importe quel élément, attribut, et on peut aussi changer leurs valeurs, créer des éléments, des attributs, en cloner d'autres, en supprimer certains, etc. Bref avec DOM, on peut facilement manipuler un document XML, et ce avec différents langages, autant côté client que côté serveur.

Côté client, on a principalement ecmascript (version normalisée par l'ECMA de JavaScript) qui permet l'interaction avec l'utilisateur ("quand tu cliques ici, ça devient rouge là") ; mais il y a aussi possibilité dans certains cas d'utiliser d'autres langages, comme Python et Java. Avec Flash, qui utilise ActionScript (grosso modo, ECMAScript), il est courant de faire des échanges de données avec PHP, en utilisant DOM pour analyser les données reçues.

Côté serveur, tous les langages un tant soit peu modernes connaissent XML : ASP, PHP, JSP... la liste est longue.

L'avantage est évident : plus besoin de connaître 56 000 langages ou librairies pour effectuer diverses tâches : on fait tout avec DOM. Par exemple, aujourd'hui pour créer un image avec PHP, on utilise la librairie GD pour générer du PNG. Pour faire du Flash, on doit apprendre l'extension Ming. Et pour faire du pdf, on doit passer par les fonctions de PDFLib. Dans un futur proche, on pourra faire tout ça avec DOM, puisque SVG permet de créer des images, SMIL gère l'animation et FO peut être converti en pdf !

De plus, il existe des DOM "spécialisés" à certains langages, des extensions. Par exemple, le DOM SVG permet de connaitre la longueur d'une ligne courbe.

DOM construisant le fichier en mémoire, il n'est pas intéressant pour le traitement de gros fichiers. D'autres API ont été développées pour pallier à ces insuffisances, dont SAX, qui est la plus connue. SAX se base sur des évènements. Chaque ouverture / fermeture de balise, chaque rencontre avec un attribut, etc. déclenche un évènement. On peut alors dire comment réagir à chaque évènement et effectuer une action particulière grâce à SAX.

XML sur le web

De par sa nature, XML est adapté au web, cet espace où les machines doivent communiquer en utilisant des langages compris de tous. Le W3C a développé une multitude de langages pour le web, dont voici les principaux, accompagnés d'une présentation succincte :

XHtml

Remplaçant de Html (qui n'est pas un dialecte XML), le rôle de XHtml est de présenter du document web. Chaque balise a un sens, et la présentation est gérée par CSS.

SVG (pour Scalable Vector Graphics)

Un langage qui me tient à coeur : il permet de faire du dessin vectoriel en 2D et de faire de l'animation ! Il n'a vraiment rien a envier à Flash, d'autant plus que son implémentation dans les navigateurs s'accélère, même s'il faudra encore un peu de temps avant d'avoir quelque chose de convenable. CSS s'occupe encore et toujours de la présentation. Voici l'adresse d'un très bon tutorial sur SVG.

SMIL (pour Synchronized Multimedia Integration Language)

SMIL permet simplement de faire de l'animation. SVG utilise SMIL pour le faire.

XForms

XForms est la prochaine génération de formulaires web. C'est un langage vraiment très puissant. Il permet entre autres la soumission des données en XML (on peut donc transformer les données reçues avec Xslt, ça vous dit quelque chose :p ?), la vérification des données en direct, grâce à CSS et XML Schéma, tout ce que permet XPath pour le calcul des données soumises, de s'affranchir de scripts pour la répétition d'éléments, etc.
XForms est tributaire d'un langage hôte, c'est là que la technologie des namespace prend tout son sens.

XLink

XLink met à disposition les six attributs qui permettent de décrire des liens entre divers documents, mais en allant beaucoup plus loin que les traditionnels liens HTML tel qu'on les connait. Les liens sont bidirectionnels, ils peuvent pointer vers plusieurs documents, etc.
SVG et XHtml2, entre autres, utilisent XLink.

XPointer

XPointer est en quelque sorte le prolongement de XLink. Il s'appuie sur XPath pour pointer sur une partie précise d'un document XML, un peu comme lorsque l'on pointe vers un id avec le # (par exemple mondoc.html#section1), mais en beaucoup plus puissant.

XMPP

XMPP signifie eXtensible Messaging and Presence Protocol. C'est un protocole de messagerie instantanée, normalisé par l'IETF (Internet Enginering Task Force, un organisme de normalisation un peu comme le W3C), et son réseau est appelé Jabber.
Il adopte évidemment une syntaxe XML, ce qui rend le dévelopement d'applications très aisé. Par exemple, ceci m'envoie un message :

<message to="Tangui@im.apinc.org" type="chat" id="42" from="vous@serveur.jabber.org">
<body>Slt, ton tuto sur XML est vraiment génial !</body>
</message>

Il est de plus en plus utilisé (même s'il est peu utilisé par rapport aux autres systèmes de messageries instantanées), notamment par les gens qui refusent de voir leur liberté appartenir à des firmes privées, ou par des applications tierces. On peut très bien imaginer mettre à jour un panneau d'affichage numérique en pleine ville via XMPP.

Il utilise à fond le mécanisme des namespace, notamment pour incorporer du XHtml à des messages.

Pour en savoir plus, voici un très bon wiki.

SOAP et WSDL

SOAP (Simple Object Access Protocol) et WSDL (Web Service Description Language) sont utilisés en commun pour fournir un service web.
Mais qu'est-ce qu'un service web ?
C'est un serveur qui va répondre de manière automatisée à une application.
Par exemple, un service web peut fournir la météo à votre de barre de tâche sous Ubuntu.

WSDL s'occupe de décrire les informations qu'on peut trouver, et comment on peut les obtenir ("tu peux obtenir l'auteur d'un roman dont tu me fourniras le titre ici en passant par là"), tandis que SOAP s'occupe des données transmises : on envoie une enveloppe avec un message décrivant les données que l'on veut, et le service web nous en renvoie une avec les données !

Ce sont des normes assez complexes.

Finalement, c'est pas sorcier, XML !
Pour ceux qui veulent aller plus loin, je propose ce document du W3C qui présente XML en 10 points. Vous pouvez aussi faire un tour du côté des cours XML proposés par Gilles Chagnon.
Ou alors, vous pouvez apprendre à manipuler un document XML avec DOM, même si la documentation à ce sujet est rare (mais je suis en train d'écrire un tuto sur DOM) ; vous pouvez encore faire du SVG (l'animation en SVG, c'est vraiment fun) ou faire des formulaires complexes avec XForms !

J'attends vos remarques pour faire évoluer ce tuto !

Cya all.

Tangui

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a <a href="/premium>Premium</a> Member and if you got at least 70% of your answers right.

Example of certificate of achievement
Example of certificate of achievement