Accueil

Automatisez la gestion de vos pages HTML... grâce à XML ! 

Afficher plein écran
Emmanuel Lazinier

Création de la page : 1999-10-20.
Dernière mise à jour : 2002-03-26


Première partie : "Cloner" du HTML en XML

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 !

Petit rappel : les avantages de XML sur HTML

1. XML "capture" les données contenues dans vos pages

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.) : Un exemple ? Voir notre Bibliographie XML en XML.

2. XML est "transformable"

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.

Comment passer de HTML à XML

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.

Une chance : HTML n'est pas du XML tout à fait "bien formé", mais presque...

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 avez la patience de corriger une à une toutes les erreurs signalées par MSIE5, vous finirez par avoir un document bien formé au sens XML que MSIE5 vous affichera 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.

HTML Tidy

Catégorie
Graticiel
Téléchargement
W3C : HTML Tidy
Source Forge : HTML Tidy Library Project
Finalités
Développé par Dave Raggett au sein du W3C, HTML Tidy est désormais maintenu dans le cadre d'un projet Source Forge. Sa finalité première est de nettoyer les fichiers HTML des erreurs (ex. éléments qui se chevauchent) et de tout ce qui est  interdit par les recommandations HTML. Il peut entre autres choses :
Activation
Tidy étant un exécutable en mode console, le plus simple est de l'activer à l'aide d'un fichier .BAT . Un même fichier .BAT pourra bien sûr invoquer Tidy successivement pour tout un ensemble de fichiers : vous pourrez donc nettoyer et xmliser tout un site d'un seul coup !

 Le fichier .BAT aura l'allure suivante :

tidy -config configuration.txt depart.htm >arrivee.xml
Les paramètre de configuration à choisir (fichier configuration.txt) sont les suivants :
 
Paramètre  Commentaire (plus de détails
output-xml:yes Pour que le fichier résultat soit du XML
char-encoding:latin1 Pour que les entités HTML correspondant aux lettres accentuées françaises (inconnues de XML) soient traduites en véritables lettres accentuées.
numeric-entities:yes Pour que les entités résiduelles inconnues de XML soient traduites en entités numériques
add-xml-pi:yes Pour qu'une processing instruction <?xml version="1.0"> soit générée en tête du fichier XML. A noter que vous devrez toutefois y rajouter manuellement l'attribut encoding="ISO-8859-1"
doctype: omit Pour supprimer la processing instruction doctype
uppercase-tags:no 
uppercase-attributes:no
Pour que les étiquettes des éléments et attributs soient toutes mises en minuscules (facultatif)
enclose-text:yes Pour que tous les textes soient encadrés par des balises <p> (facultatif)
indent:yes Pour que le résultat soit proprement indenté (facultaif)
clean:yes Pour que les éléments et attributs de présentation soient traduits en style CSS (facultatif)
Note 1. Tidy est aussi inclus dans l'éditeur HTML HTML-Kit, développé également par Dave Raggett.
Note 2. Il existe une version Windows interactive (et gratuite) de Tidy : TidyGUI, développée par André Blavier. Elle permet de tester interactivement sur un fichier HTML les nombreuses options de Tidy et ainsi de mettre au point (et éventuellement de sauvegarder) un fichier de configuration optimal. Le même André Blavier a aussi développé un emballage de Tidy sous forme de composant Windows COM : TidyCom, qui peut être invoqué aussi bien par les langages de script que par les langages compilés.

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 :

<?xml-stylesheet href="displayidentical.msxsl" type="text/xsl"?>
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 :
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...)

Retour à la page d'accueil.