Savez-vous que, dès aujourd'hui, vous pouvez
mettre à votre service toute la puissance de XML pour simplifier et
automatiser la gestion de vos pages Web ? Même si elles sont
actuellement en HTML. Et même si, d'aventure, vous souhaitez que
demain elles soient toujours en HTML !
XML permet d'avoir des fichiers "propres", dans lesquels
l'information est balisée en fonction de sa nature et non pas de sa
présentation finale. Par exemple dans une bibliographie :
Si votre fichier est "régulier" (c'est-à-dire de structure
simple et répétitive comme l'est une bibliographie, un catalogue,
un annuaire, un tableau financier, etc.) :
Si votre fichier est plus du type "document" que du type
"fichier de données", comme c'est le cas par exemple pour un
article, vous pouvez préférer continuer à saisir comme par le passé
le corps de ce document à l'aide d'un éditeur HTML classique.
Mais ce que HTML ne vous donnera pas, c'est la possibilité
d'automatiser les tâches répétitives liées à la fabrication de
votre document, comme :
Toutes ces tâches ne sont pas automatisables pour un fichier
HTML. Elles le sont pour un fichier XML grâce au langage de
transformation XSLT.
Vous avez donc intérêt à transformer votre document HTML en XML
pour bénéficier de ces alléchantes possibilités.
Est-ce possible ? Oui. Est-ce difficile ? Non, et le présent
article se propose de vous le démontrer.
Commençons par bien préciser notre problème.
Nous voudrions qu'un fichier initialement en HTML devienne en
final un fichier XML dont toutes les données internes auront
été convenablement capturées (balisées) et dont la structure aura
été rendue conforme à la structure logique de ces données . Nous
savons que ceci peut se faire de manière automatisée grâce au
langage de transformation XSLT. Mais nous savons que de telles
transformations ne peuvent se faire que sur un document XML ! Il
nous faut donc dans un premier temps transformer notre
fichier HTML en un fichier identique mais conforme aux
exigences de XML -- autrement dit "cloner" notre fichier HTML en
XML. C'est ce "clonage" que nous allons décrire dans ce premier
article.
Prenez au hasard un fichier HTML (anglais de préférence, la
suite vous montrera pourquoi). Ajoutez-lui en tête la
processing instruction suivante
<?xml version="1.0" ?> et changez son extension
.html en .xml. Puis essayez de le lire sous Internet Explorer 5.
Que se passera-t-il ?
Eh bien, selon toute probabilité, vous obtiendrez un message
d'erreur, vous indiquant que telle ou telle partie du document
n'est pas "bien formée" au sens XML : telle balise ne sera pas
fermée, tel attribut ne sera pas entre guillemets...
Si vous aviez la patience de corriger une à une toutes les
erreurs signalées par MSIE5, vous finiriez par avoir un document
bien formé au sens XML que MSIE5 vous afficherait alors avec sa
feuille de style par défaut, sous la forme d'une arborescence
dépliable et repliable.
Comme vous êtes paresseux, vous vous demandez certainement si ce
travail ne pourrait pas être fait par un logiciel. Et vous avez
bien raison, puisqu'un tel logiciel existe et s'appelle HTML
Tidy.
Problèmes possibles
Les scripts.
Tidy ne transforme pas le contenu des éventuels éléments
<SCRIPT>, lesquels peuvent comporter des caractères qu'XML
réprouve, comme le "<". Il est
donc possible que votre fichier résultat soit mal formé pour cette
raison. Vous devrez alors soit effacer le script incriminé soit
déclarer son contenu comme section CDATA (qui ne sera alors pas
analysée par le "parseur" ou analyseur grammatical).
Le résultat
Si, comme nous l'avons suggéré, votre fichier HTML de départ
était en anglais, le résultat produit par Tidy sera alors
d'emblée du XML bien formé que MSIE5 vous affichera
immédiatement avec sa feuille de style par défaut, sous forme d'une
arborescence dépliable et repliable.
Si d'aventure vous rétablissez l'extension .HTML vous aurez la
satisfaction de voir que votre butineur favori est toujours capable
de lire votre fichier et de lui donner exactement la même
présentation qu'autrefois. Vous avez donc réalisé du premier coup
du HTML XMLisé !
Vous pourrez aussi vous amuser à visualiser ce fichier en
tant que fichier XML en y ajoutant la processing instruction
suivante :
et en créant la feuille de style XSL élémentaire
(displayidentical.msxsl) suivante.
<?xml version="1.0"
encoding="ISO-8859-1"?>
<!-- encoding="ISO-8859-1" n'est en fait pas nécessaire pour
un fichier en anglais -->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- Se positionner sur la racine du document -->
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<!-- Reproduire le document à l'identique -->
<xsl:template match="@* | * | text()">
<xsl:copy>
<xsl:apply-templates select="@* | * | text()"/>
<!-- Attention : ne pas couper la ligne suivante pour ne pas
introduire d'espaces parasites -->
</xsl:copy></xsl:template>
</xsl:stylesheet>
Le problème des lettres accentuées
Puisque vous êtes francophone, il y a gros à parler que les fichier HTML que vous
souhaitez transformer sont en français en non pas en
anglais. Dans ce cas MSIE5 risque encore de vous renvoyer un
message d'erreur lorsque vous essaierez de lire le fichier XML
produit par Tidy. La raison en est que notre belle orthographe française comporte des
letttres accentuées qui ne font pas partie du noyau ASCII
de base. Deux cas sont possibles :
- Si vous avez bien pensé à configurer Tidy avec
l'option char-encoding:latin1 les
lettres accentuées figurent directement dans le fichier source. Il
vous suffit donc alors de remplacer la processing instruction de
base générée par Tidy <?xml
version="1.0"> par <?xml
version="1.0" encoding="ISO-8859-1"?>. Et le tour est
joué !
- Si vous avez oublié de configurer Tidy avec
l'option char-encoding:latin1, il
est possible que les lettres accentuées soient toujours sous la
forme d'entités (´, etc.) -- c'est ce que
génèrent malheureusement la plupart des éditeurs HTML. Il faut
savoir que, si ces entités sont prédéfinies en HTML, elles
ne le sont pas en XML. Il va donc vous falloir relancer Tidy
avec cette fois l'option
char-encoding:latin1 afin qu'il traduise ces entités
(é...) en leurs valeurs respectives
("é"...). Et nous serons alors ramenés au cas précédent...
Vous avez maintenant un fichier XML valide,
et néanmoins fonctionnellement identique au fichier HTML de départ.
Il vous est maintenant possible de le transformer à votre guise et
selon vos besoins, en utilisant soit le moteur XSLT de MSIE5, soit
tout autre logiciel de transformation XSLT.
Mais ceci est une autre histoire..
(A suivre...)