2.Manipuler les documents XML

2.1.Introduction

Un document XML est un document texte nous pourrions donc nous contenter de l'ouvrir avec un simple visionneur texte pour prendre connaissance de son contenu (et ainsi pourquoi pas retrouver le n° de téléphone de untel ou untel si par hasard ce document XML contient un annuaire téléphonique) mais vous avez certainement d'autres ambitions.
La destination première d'un document XML c'est d'être manipulé, traité, analysé (on utilise généralement le terme "parsé" dérivé du terme anglais) pour être transformé en ce que bon vous semble et le plus souvent en un document présenté sous une forme plus lisible.

2.2.Les différentes méthodes de traitement

Il existe différentes façons de traiter un document XML.
Le choix de la façon de procéder dépendra simplement de ce que l'on souhaite faire, des contraintes que l'on s'impose (ex: en terme d'occupation mémoire) et des outils dont on dispose.
Le document peut être simplement destiné à être "ingéré" par un outil qui s'occupe de tout (comme pour un document RSS ou un fichier de traduction TMX par exemple). Dans ce cas, la plupart du temps il suffit de déposer le fichier dans un espace donné et de laisser l'outil ouvrir le document XML. Mais ce n'est pas ce cas de figure qui nous intérresse ici.
Avec un peu de "programmation", le document peut (au choix):
  • Etre analysé par un "parseur" qui lira le fichier du début à la fin et "vous alertera" dès qu'une balise est ouverte, dès qu'une balise est fermée, dès que du texte est rencontré, etc. libre à vous de programmer ce qui doit être fait à chacune de cette étape. On parle alors de parseur SAX. C'est certainement la façon de faire la plus difficile à traiter mais c'est aussi celle qui permet de gérer au mieux l'occupation mémoire (puisqu'il n'est pas nécessaire de charger le document au complet)
  • Etre chargé et vu comme un arbre DOM afin d'aller récupérer une balise (on parle alors de noeud par son identifiant unique id (s'il a été défini) ou un ensemble de noeuds par leur nom. Récupérer l'ensemble des "fils" d'un noeud. On pourra évidemment également lire les valeurs des attributs et le texte, etc. Il s'agit d'une méthode plus simple que celle du parseur SAX mais plus gourmande en mémoire
  • Etre exploité par "petites touches" afin d'aller récupérer un ou plusieurs éléments dont on donnera le chemin d'accès via la notation XPath
  • Etre transformé en un autre document via une transformation XSL. Pour cela, il n'y a pas à proprement parler de programmation. Il "suffit" d'écrire un document XSL qui s'appuiera en partie sur XPath et d'utiliser un outil XSLT capable d'appliquer la feuille XSL à votre document XML.
Ce sont ces différentes méthodes que nous allons vous exposer par la suite à commencer par XSL et XPath.

2.3.Document XML valide

Vous noterez que pour pouvoir exploiter correctement un document XML il faut savoir comment celui-ci est construit (nom des balises, ordre d'enchaînement des balises, nom des attributs, valeurs attendues, etc.). Si vous souhaitez que l'on vous fournisse des documents XML qui répondent aux règles que vous souhaitez imposer vous devrez au préalable rédiger ces règles et idéalement permettre de vérifier automatiquement que les documents créés repondent bien à ces règles, on parle alors de document XML valide. Le consortium W3C a donc créé une première norme DTD vite suivie de XML Schema permettant de rédiger les règles de validation des documents XML. Les fichiers écrits selon ces normes peuvent alors servir à valider les document XML à l'aide d'outils adaptés.
Bien évidemment, nous verrons également cela par la suite.