Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Cet article est une reprise de l'article XML et CSS que j'avais précédemment publié sur http://wiki.esicom-st-malo.fr

Cet article est une première approche de l'utilisation de XML et CSS. Nous allons voir comment utiliser un navigateur moderne pour visualiser un document XML et lui associer une feuille de style.

Objectifs A la fin de ce tutoriel, vous saurez:
  • Créer et visualiser un document XML,
  • Lui associer une feuille de style,
  • Changer la manière dont le navigateur affiche un élément.
Prérequis
Moyens
  • Un navigateur compatible XML et CSS (firefox par exemple).


XML

XML (the eXtensible Markup Language) est un format de document conçu pour représenter des informations structurées. Un document XML est principalement un document texte dont les différents éléments sont délimités par des balises. XML a été conçu par le w3c pour remplacer HTML, et dans l'optique d'un traitement automatisé des informations.

Pourquoi HTML ne suffit pas?

Prenons un exemple. Considérons le fragment de code HTML suivant et l'affichage qui pourrait être obtenu dans un navigateur:

Source Résultat
<p>
 <b>The Java EE 5 Tutorial</b><br />par
 Eric Jendrock, Jennifer Ball, 
 Debbie Carson
</p>
<p>
 <b>Langue:</b> Anglais<br />
 <b>ISBN-10:</b> 0321490290<br />
 <b>Description:</b> -;
</p>

(note: en HTML, l'élément p dénote un paragraphe, br un saut de ligne et b du texte à afficher en gras)

The Java EE 5 Tutorial
par Eric Jendrock, Jennifer Ball, Debbie Carson


Langue: Anglais
ISBN-10: 0321490290
Description: -

Pour un lecteur humain, il est évident que ce fragment décrit un livre dont le titre est The Java EE 5 Tutorial, dont les auteurs sont Eric Jendrock, Jennifer Ball et Debbie Carson, etc. Mais comment une machine pourrait interpréter ce document, par exemple pour extraire le nom des auteurs? On peut bien entendu envisager de chercher le motif:

<br />par

et considérer que ce qui suit est le nom des auteurs. Mais que se passerait-il si ce motif apparaissait ailleurs? Et si la présentation de la fiche change? Et comment différencier, par exemple, un auteur d'un traducteur?

Tous ces problèmes viennent de l'absence de sémantique des éléments HTML employés. En d'autre terme, ils n'ont pas de signification dans le domaine d'application: ils servent juste à exprimer comment afficher le document, mais pas ce que représente le document. Or c'est justement ce que permet XML: définir des éléments qui ont un sens dans le contexte d'une application donnée.

Anatomie d'un document XML

Note: nous ne verrons ici que les caractéristiques principales d'un fichier XML. Pour une référence complète, vous vous reporterez aux spécifications officielles de XML 1.1.

Considérons le document XML suivant:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Un document XML qui décrit un livre -->
<book lang="en_US">
  <title>The Java EE 5 Tutorial</title>
  <authors>
    <author id="boss">Eric Jendrock</author>
    <author>Jennifer Ball</author>
    <author>Debbie Carson</author>
  </authors>
  <isbn>0321490290</isbn>
  <description />
</book>

Dans l'exemple ci-dessus, on voit trois types de balises:

<? ... ?>
pour les instructions de traitement,
<!-- ... -->
pour les commentaires,
<type> ... </type> (parfois abrégé en <type />)
pour les éléments du contenu,

Instructions de traitement

Le rôle des instructions de traitement (Processing instruction) est de donner des indications à une des applications qui traite le document.

Ces instructions sont signalées entre <?appli et ?> (ou appli indique l'application). Par exemple:

<?php print("hello"); ?> Instruction destinée à PHP
<?xml version="1.0" ?> Instruction destinée à toute application traitant le fichier XML
(navigateur, par exemple)

Notre document ne contient qu'une seule instruction de traitement: <?xml ... ?>:

<?xml version="1.0" encoding="ISO-8859-1"?>

On trouve généralement une instruction de ce genre sur la première ligne de tout fichier XML. Elle indique que le fichier doit être traité comme un fichier XML version 1.0 et que le texte de fichier est encodé selon la norme ISO-8859-1.

Commentaire

Un texte entre <!-- et --> est un commentaire. Les commentaires peuvent apparaître n'importe où dans le fichier en dehors d'une balise. Il ne sont pas interprétés.

<!-- Un document XML qui décrit un livre -->

Contenu

Le contenu d'un document XML forme ce que l'on appelle l'arbre du document. Le nœud qui représente le document se trouve à la racine, et à partir de ce noeud, l'arbre se ramifie avec d'autres noeuds qui représentent le contenu du document.

Diagramme d'objets d'un document XML. Ce diagramme utilise la notation UML pour représenter graphiquement l'arborescence d'un document XML. Vous pouvez constater que même un document XML simple forme déjà une arborescence complexe.
Elément

Un élément est délimité par une balise d'ouverture (<typeDeLElement>) et une balise de fermeture (</typeDeLElement>):

<title>The Java EE 5 Tutorial</title>

Un élément peut contenir du texte, d'autres éléments, ou un mélange des deux. Un élément peut aussi être vide s'il ne contient rien (no texte, ni autre élément).

Elément vide

Un élément vide peut être abrégé en <''typeDeLElement'' />. dans l'exemple ci dessous les deux lignes sont absolument équivalentes:

<description></description>
<description />
Attributs

Un élément peut posséder des attributs, c'est à dire des caractéristiques qui donnent des informations supplémentaires sur lui.

Les attributs sont indiqués dans la balise d'ouverture de l'élément. Ils possèdent un nom et une valeur qui doit toujours être indiquée entre apostrophes (') ou entre guillemets droits ("). Dans notre exemple, l'élément book possède un attribut lang dont la valeur est en_US.

<book lang="en_US">
  <title>The Java EE 5 Tutorial</title>
  <!-- ... -->
</book>

Tout comme pour les éléments, les attributs possibles et leur signification dépend du domaine dans lequel est utilisé le document XML.

Id

L'attribut id a un rôle particulier puisqu'il sert à identifier un élément dans le document. Par conséquent, il ne peut pas y avoir deux éléments du même document avec le même id.

<author id="boss">Eric Jendrock</author>

Cette notion d'identifiant à des équivalents dans d'autres domaines de l'informatique. Par exemple:

Visualiser un document XML

Normalement, vous devriez voir votre document dans le navigateur, assorti d'un avertissement:

Ce fichier XML ne semble pas avoir d'information de style lui étant associé. L'arbre du document est montré ci-dessous.

Notez:

Invalide, valide et bien formé

Il existe trois sortes de document XML:

Les documents invalides
Ces documents ne respectent pas la syntaxe de XML. Ils sont inutilisables.
Les documents valides
Ces documents respectent la syntaxe de XML et ils respectent les règles spécifiques à leur domaine (par exemple, qu'un paragraphe peut contenir du texte, mais pas d'autres paragraphes).
Les documents bien formés
Ces documents respectent la syntaxe de XML mais ne précisent pas quelles règles permettent de les valider.

Firefox est capable de différencier un document XML bien formé d'un document invalide. Par contre, il ne sait pas vérifier si le document est valide.

Associer une feuille de style

Maintenant, nous savons créer un document XML, vérifier qu'il est bien formé et l'afficher avec un navigateur. Mais il faut l'avouer, le résultat n'est pas très esthétique.

Le principe retenu par le w3 est de considérer que le document XML décrit des données, et que la manière dont ces données doivent être affichées est fournie dans un autre document, la feuille de style.

CSS

Le w3 a défini un langage pour créer des feuilles de style: CSS (Cascading Style Sheets).

CSS permet d'indiquer pour chaque élément du document, comment il doit être affiché. Voyons cela sur un exemple.

Créez le document book.css dans le même répertoire que votre fichier book.xml, et copiez-y le code suivant:

book {
  display: block;
  border: solid 1px black;
  margin: 10px;
  padding: 10px;
}

title {
  font-weight: bold;
}

Pour que la feuille de style soit prise en compte, il faut donner au navigateur l'instruction de charger le document CSS. Nous allons donc modifier le début de notre document XML ainsi:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Notre document utilise une feuille de style -->
<?xml-stylesheet type="text/css" href="book.css"?>
<!-- Un document XML qui décrit un livre -->
<book lang="en_US">
  ...

Si tout se passe bien, à la place de l'arbre du document vous devriez voir apparaître:

The Java EE 5 Tutorial Eric Jendrock Jennifer Ball Debbie Carson 0321490290

Remarque:

Dans l'instruction de traitement xml-stylesheet, le nom book.css permet de localiser la feuille de style. En fait, ce nom est un URI. Ici, cet URI se résume juste au nom du fichier: le navigateur va alors chercher ce fichier au même endroit que le document hôte.

Mais rien n'empêche d'indiquer un chemin, ou même une URI absolue. Les deux instructions de traitement suivantes seraient tout aussi valides:

<?xml-stylesheet type="text/css" href="../book.css"?>
<?xml-stylesheet type="text/css" href="http://some.site.com/styles/book.css"?>

La première irait chercher la feuille de style dans le répertoire parent du document hôte. La seconde téléchargerait la feuille de style à l'adresse indiquée.

Ce n'est pas encore terrible, mais c'est un début. En modifiant la feuille de style, on peut changer la manière dont chacun des éléments est affiché.

isbn {
  display: block;
  color: #0000FF;
}

A vous de jouer!

Note:

A tout moment, vous pouvez vérifier la conformité de votre feuille de style à la norme CSS niveau 2.1 en vous rendant à l'adresse http://jigsaw.w3.org/css-validator/.

En cherchant dans les Spécifications de CSS essayez donc:

Voir aussi: