Pluripass L2 : XML
gilles.hunault "at" univ-angers.fr
Attention : comme pour la page bases de données il s'agit d'un cours universitaire classique, pas d'une matière à concours. Il n'y a pas de PDF magique associé à ce cours qui contiendrait «toutes les solutions». Vous avez donc plus à réfléchir qu'à mémoriser car c'est un savoir-faire que vous devez acquérir ici, et non pas seulement des connaissances pour singesses et singes savants.
Table des matières cliquable
1. Structuration, qualité et transmission d'informations
Le document de base de référence pour ce cours est notre tuteur XML.
Il y a en principe 6 cours de 1 h 20 et 3 TP de 1 h 20 aussi. Il faut utiliser CELCAT Informatique et Il faut utiliser CELCAT Mathématiques pour en vérifier les dates et heures.
1. Structuration, qualité et transmission d'informations
Donnée, information et connaissance ne sont pas des termes équivalents, même si savoir utiliser Google peut faire croire le contraire. Un «bon» transfert de «bonnes» informations suppose des informations structurées, vérifiées, controlées...
Il existe plusieurs façons de structurer des informations avant de les sauvegarder dans un fichier-texte. La structure d'arbre au sens informatique du terme, avec la racine de l'arbre en haut (!), est sans doute l'une des plus générales et la plus adaptée au Web, même si la structure de tableau avec des lignes et des colonnes est l'une des plus répandues, notamment parce qu'elle englobe les tables des bases de données.
Pour distinguer les caractères de structure des caractères propres à l'information, on utilise souvent des marqueurs. Ce peut être par exemple < et > ou { et } ou encore [ et ] car il faut dans la plupart des systèmes indiquer le début de la structure et sa fin.
On donne en général des noms aux structures et aux sous-structures et pour vérifier si un document est correct on fournit ce qu'on nomme la grammaire du document, ce qui se résume souvent à indiquer le nom des éléments et comment on les groupe, regroupe ou comment on les emboite. Une grammaire de documents (ou "type" de document) peut éventuellement contenir des informations de cardinalité (tant de sous-structures en tout, ou au moins une sous-structure...) et de typage (nombre entier, chaine de caractères...).
Nous présenterons ici principalement la structuration via XML mais d'autres formats sont possibles, dont Yaml et Json.
XML fournit deux types principaux de grammaires nommées DTD et XSD et dispose avec les transformations XSL de nombreuses possibilités pour transformer des fichiers XML en d'autres fichiers XML ou en fichiers textes, en fichiers HTML ou même PDF...
Pour aller plus loin consulter notre tuteur XML et l'introduction à XML de Fabien TORRE.
2. Le métalangage XML
XML utilise principalement deux marqueurs qui sont respectivement < et >. Ces marqueurs permettent de définir des balises ou tags qui délimitent des éléments. Un document XML est donc un fichier texte qui contient des informations regroupées dans des éléments.
Si < et > sont des caractères qui servent de marqueurs, comment les utiliser comme caractères d'information ? XML fournit la réponse via des entités qui commencent par le symbole & et qui se terminent par un point-virgule. Bien sûr pour afficher le symbole & comme caractère d'information il faut aussi passer par une entité. Voici donc les trois entités fondamentales pour XML :
Nom Symbole Entité Début de balise < < Fin de balise > > Début d'entité & & On notera qu'XML permet de définir ses propres entités.
Pour délimiter les éléments, on utilise des balises ouvrantes et des balises fermantes. A toute balise ouvrante doit correspondre sa balise fermante. Si elt est le nom de l'élément, alors <elt> est sa balise ouvrante et </elt> est sa balise fermante. Dans le cas particulier d'un élément qui ne contient rien, on peut utiliser la forme compacte <elt /> au lieu de <elt></elt>. Attention : il y a bien un espace (obligatoire) avant le symbole / dans cette notation.
Si vous connaissez déjà le langage HTML pour écrire des pages Web, vous pouvez considérer que XML est une généralisation de HTML.
On peut doter les éléments d'attributs. Chaque attribut est défini par un couple (nom,valeur) noté couple="valeur". Un attribut doit être positionné uniquement dans la balise ouvrante d'un élément. En particulier, un attribut qui permet d'identifier de façon unique un élément est souvent nommé id comme par exemple dans <Auteur id="aut1357AT">.
Voici quelques exemples d'extraits de code XML avec leur explication :
Code Explication <FILM> balise d'ouverture de l'élément FILM <FILM imes="M50"> idem + définition de l'attribut nommé imes de valeur M50 <p class="texte bleu"> ouverture de l'élément p avec un attribut class multivalué Auteur : &gh; utilisation d'une entité personnelle
Pour aller plus loin consulter notre tuteur XML, la page des concepts de base de XML par Gilles CHAGNON et l'essentiel de XML par Olivier CARTON.
3. Les grammaires
Les grammaires, de type DTD et XSD permettent de valider la structure d'un document XML. Les grammaires DTD sont plus simples mais moins puissantes que les grammairest XSD. Les "grands formats" informatiques fournissent les grammaires de leurs documents, comme par exemple la grammaire de SVG disponible au format DTD.
Pour aller plus loin consulter notre tuteur XML et les pages DTD et XSD de Olivier CARTON et de Fabien TORRE.
4. Les transformations
XSL se décompose en XPath, XSLT et XSL-FO.
XPath qui ne s'écrit pas en XML, permet de localiser un élément, une sous-structure ou plusieurs sous-structures éventuellement non contigues.
Les transformations XSLT permettent d'extraire des informations, d'en créer de nouvelles, de trier ou de restructurer les documents XML.
Pour aller plus loin consulter notre tuteur XML et dans cet ordre les pages DTD et XSD de Fabien TORRE. et de Olivier CARTON
5. Autres formats pour documents structurés
Avec les deux mots Json et Yaml tout est dit, reste la pratique à acquérir, même si le concept de sérialisation pourrait avoir sa place ici.
Pour ne pas conclure (!), nous conseillons de de "feuilleter" le SVG Primer du W3C (dont la partie animation qui est un peu "sympa") avant de parcourir notre document web nommé webrd04. On y découvrira sans doute l'étendue de la galaxie XML...
6. Exemples concrets
L'archive documentsXML.zip contient plus de trois cent fichiers de type XML, DTD, XSD, XSL, SVG qui seront utilisés dans les exercices, dont :
films2.xml dessin5.dtd validateur.xsd films_lst_4.xsl krona_demo.svg
Pour mémoire, la connexion au serveur forge se fait en local à la faculté des sciences d'Angers par
ssh -YC VOTRE_LOGIN_ICI@forge.info-uaPar contre, à l'extérieur du département informatique, la connexion au serveur forge (aka janus) doit se faire avec la commande
ssh -YC VOTRE_LOGIN_ICI@forge.info.univ-angers.frSous Linux, dans un terminal, pour rapatrier ces exemples, le plus simple est sans doute de passer par wget comme le montre la commande ci-dessous que vous pouvez copier/coller :
# se positionner dans le bon répertoire avant d'exécuter : wget http://forge.info.univ-angers.fr/~gh/Pluripass/Xml/documentsXML.zipPour une simple consultation ou visualisation de documents XML, un navigateur comme Firefox, Chrome, Safari ou IE suffit. Par contre, pour éditer des documents XML un éditeur un peu "évolué" qui sait prendre en compte la coloration syntaxique, les encodages, le repliement et le dépliement des balises est sans doute nécessaire. Nous conseillons principalement Geany pour Linux et Windows, Notepad++ pour Windows seul.
7. Lectures conseillées
Après la lecture des pages Wiki en français et en anglais correspondant aux mots suivants
XML DTD XSD XSLT nous ne conseillons que la lecture des deux sites ci-dessous :
mais deux ouvrages pourraient agréablement compléter cette présentation un peu courte de XML :
Advanced XML Applications from the Experts
XSLT 2.0 and XPath 2.0 Programmer's Reference
The XML Guild
Michale KAY
8. Exercices de réflexion et d'entrainement
Les TP sont en principe prévus pour des exercices d'entrainement plutôt que de réflexion.
Nous fournissons ici trop d'exercices pour des TP de 1 h 20 car il s'agit d'exercices prévus pour un cours plus général sur XML avec des heures de TP plus importantes. Nous indiquons entre parenthèses les numéros d'exercice qui nous paraissent plus faciles ou plus fondamentaux pour le public Pluripass.
1.
Structuration XML (1,2,3,9,10,11)
2.
Vérification et validation XML (1,2,5,6,8)
3.
Sélections XPATH et transformations XSL (1,2,3,11,12)
Retour à la page principale de (gH)