Bases XML
Présentation
Remarque: cet article a été écrit en 2001. Depuis, les choses n'ont pas tant changées
que celà, si ce n'est que "Netscape" est à remplacer par "Firefox".
XML a montré son efficacité pour décrire des objets complexes, tels que documents,
fichiers de configuration, ou objets informatiques à transporter.
Mais XML ne s'imposera pas comme langage directement lisible par un humain,
et ne remplacera pas HTML.
Qu'est-ce que c'est ?
XML est au départ une voie moyenne entre HTML et SGML
- HTML est le langage du web, simple, incontournable et doté de multiples
extensions plus ou moins propriétaires
- SGML est un langage de mise en forme et de gestion de documents universel, mais
hors de portée du commun des mortels par sa complexité.
- Formellement, HTML est un dialecte de SGML et XML en est un autre.
Au bout du compte, XML est un excellent outil pour
représenter des données structurées en format texte (ASCII ou Unicode),
en général mais pas toujours dans un but d'affichage ou d'impression,
avec une bonne ouverture vers tout type de média
(dont le Wap tant qu'il existe).
XML ambitionne à juste titre la possibilité de prendre en compte tout type
de publication et toutes les aptitudes à la navigation.
Il ne faut dont pas s'attendre à quelque chose de simple, même si les
principes de base le sont.
Dans le domaine de la publication, XML pourrait à terme devenir un concurrent sérieux
de PDF, format propriétaire d'Adobe.
Est-ce que ça marche ?
Pour résumer et si on s'en tient à des besoins bien cadrés, oui.
Une réponse plus détaillée requiert une connaissance minimale de la norme.
Avec un navigateur tout est lié aux normes associées
- CSS pour la mise en page
- XSL pour la réorganisation de document (dont conversion en HTML)
En pratique:
- Internet Explorer 5 permet d'afficher correctement un document XML
en combinant XSL et CSS
- Netscape 6 supporte CSS mais pas XSL, officiellement parce que XSL
n'est pas normalisé
- Firefox: faites vos tests
- de nombreux outils techniques exploitent le formalisme XML,
en particulier pour décrire des méta données
- le Wap utilise un dialecte particulier et très simple de XML, nommé WML.
la plupart des balises sont communes avec HTML.
Quelques indices significatifs
- CSS permet d'obtenir une présentation aussi bien maitrisée
que n'importe quel traitement de texte, mais n'est pas totalement implémenté
- avec IE5, le formatage des tableaux n'est pas géré - HTML le prend directement
en charge
- la gestion des sauts de page dans sa forme la plus simple (
break-before
)
est prise en charge par IE5 mais pas Netscape 6. Elle l'est par Firefox.
- un outil expérimental comme Amaya saisit et affiche facilement des formules mathématiques
grâce à MathML.
- les implémentations Microsoft (IE5) et Netscape (6) ne sont pas compatibles
- Netscape 6 gère (partiellement) les XLinks (liens hypetertextes XML),
pas Internet Explorer 5.0. Pour Firefox, c'est à tester (pas eu le temps)
Que faire avec XML
XML est à mettre en oeuvre dans le cas d'un besoin applicatif précis.
Une cible internet est peu réaliste à ce jour (fin 2000).
Une utilisation technique intranet est tout à fait envisageable,
et dans tous les cas il n'est pas inutile de se faire les dents sur quelques
exemples car cette norme est faite pour durer et s'étendre.
Elle repose sur des concepts puissants qu'il est préférable de prendre le temps
d'absorber correctement avant de se lancer dans un déploiement d'envergure
ou avant de confier un tel développement à un intervenant extérieur.
Une bonne compréhension de la norme est facilité par la maitrise de quelques
concepts clé, et/ou permet de les aborder
- qu'est-ce qu'une donnée structurée
- qu'est-ce qu'une méta-donnée
- qu'est-ce qu'un document
- quelle est la différence entre la structure et la présentation d'un document
Actuellement(en 2001), Netscape 6 est capable d'afficher directement un document XML
disposant d'une feuille de style CSS. Internet Explorer 5 procède en deux temps,
et utilise une feuille de style XSL - qui doit être rattachée au document - pour
le transformer en HTML avant affichage. Le document HTML généré peut faire référence
à une feuille de style CSS.
En 2006, pas de problème avec Firefox, mais certaines entités IE5 non W3C ne sont pas reconnues.
A quoi ça ressemble ?
eXtensible Markup Langage est fondé sur des bases simples.
Comme HTML, c'est un langage de balises,
mais les noms de balises ne sont pas prédéterminés.
XML est beaucoup plus strictement normé que HTML.
La norme précise que si un document n'est pas bien formulé,
c'est à dire syntaxiquement correct,
un navigateur doit signaler les erreurs et ne pas chercher à l'afficher.
Entre autres règles
- les minuscules et majuscules sont distinguées
- à toute balise ouvrante doit correspondre une balise fermante
- les balises ne doivent pas se chevaucher
- les caractères employés doivent correspondre au jeu de caractères
spécifié pour les document (ASCII standard par défaut)
Ces règles ont été édictées afin que tout document soit correctement
interprétable par n'importe quel outil, exclure toute extension
propriétaire incompatible avec la norme, et éviter tout un ensemble
de problèmes.
Si vous tombez sur un document HTML en Allemand, Polonais ou Russe ne
spécifant pas son code page, votre navigateur l'affichera avec
l'alphabet latin standard et un résultat surprenant, alors même
qu'il sait afficher les bons caractères.
Avec XML, vous ne pourrez pas visualiser vos propres documents
comportant des accents si vous n'avez pas spécifié un jeu de caractères
qui les accepte (iso-8859-1 en l'occurence).
Une fois cette omission réparée, tous les navigateurs l'afficheront
correctement.
Voici un document XML minimaliste:
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<docXML>
<entete>XML</entete>
<auteur>Patrick LARREYA</auteur>
<normes>
<norme nom="XML">
Langage de balise, très structuré.
</norme>
<norme nom="DTD">
Définition de Type de Document. Permet de contrôler la structure
d'un document XML.
</norme>
<norme nom="CSS">
Cascading Style Sheets. Permet la mise en forme d'un document XML.
</norme>
<norme nom="XSL">
eXtended Sheet Layout.
Mise en forme et restructuration d'un document XML.
</norme>
</normes>
</docXML>
A quoi ça sert ?
Si on s'en tient à un format de document, l'intérêt de XML n'est
pas évident. HTML avec CSS permettra de faire à peu près tout
quand CSS2 sera généralisé.
XML est un format idéal pour la représentation et le transport de
données structurées. Des outils partfaitement standard et faciles
à maitriser existent pour analyser le contenu d'un document XML
ou pour en générer.
Quelques applications :
- jouer un rôle de middleware
- représenter des méta données
- transporter le résultat d'une requête base de données
Si vous avez déjà utilisé des outils de ce type,
l'intérêt d'un flux XML est assez évident,
surtout si un mapping objet est pris en compte dès le départ.
Concepts et vocabulaire
Sémantique
Le balisage de XML doit être sémantique, c'est à dire
déterminé pas des notions de sens. En HTML
<IMPORTANT>
est une balise sémantique,
car elle est porteuse de sens
<B>
(pour Bold ou gras) n'est pas une balise sémantique,
car elle peut signifier à peu près n'importe quoi
<H1>
(pour entete de niveau 1) est à moitié sémantique
car spécifiant la structure du document.
La distinction n'est pas seulement métaphysique, mais fait
la différence entre une approche minimaliste et fonctionnelle
et une approche plus construite :
L'assembleur et ses Goto perd de l'influence devant des langages
objets moins efficaces mais qui permettent (et imposent) de prendre
de la hauteur et gagnent ainsi en maîtrise et évolutivité.
Forme et Structure
Un document XML doit être syntaxiquement correct. La terminologie
officielle spécifie qu'il doit être correctement formulé ou formé.
Ceci n'implique rien en terme de contenu ou de structure.
La structure du document peut (mais ne doit pas nécessairement)
être contôlée pour correspondre à une structure type.
Cette stucture est définie dans une DTD pour Document Type Definition,
en utilisant un langage spécifique, un peu ésotérique au premier
abord, mais assez simple en fin de compte.
Mise en page et transformation
La mise en page d'un document consiste à présenter son contenu sur un écran
ou sur des pages dans l'ordre d'apparition du texte et en tenant compte des
balises pour la présentation.
En XML, aucune balise n'a de rôle prédéfini et la présentation
doit être précisée dans une feuille de style.
A une balise peuvent être associés des attributs de présentation
- en ligne, comme la police ou la couleur
- de paragraphe, comme des marges ou retraits
- de liste, comme des puces ou une numérotation
- de tableau, comme entete, lignes ou cellules
- des informations spécifiques à un média comme pour l'impression
ou la synthèse vocale
- . . .
CSS (Cascading Style Sheets) permet de spécifier la mise en page.
Certaines portions du texte peuvent être masqués, mais le document
suit la séquence générale.
Un document XML peut être, à la différence de HTML, composé par assemblage
de plusieurs sources.
Une source peut être une base de données compatible XML en réponse à une requête.
Certaines sources peuvent fournir des informations dans un ordre différent de
celui souhaité.
Une transformation est nécessaire pour obtenir le format désiré :
- réordonner des colonnes de table
- insérer des entete ou des totaux
- fusionner plusieurs sources
XSL (eXtended Style Sheets) permet de transformer un document
pour affichage direct (aucune implémentation connue)
ou conversion transparente en HTML (Internet Explorer 5)
Modèle de document
La plupart des traitements de texte et outils HTML fusionnent les notions de
contenu et de présentation. XML fournit un contenu, et les normes associées
CSS et XSL définissent une présentation.
Ceci passe par la définition et la formalisation d'un modèle de document :
dans la mesure ou une structure est spécifiée, elle peut être modifiée
dynamiquement.
La modification peut porter sur le contenu du document ou sa présentation.
Des API ont été spécifiés en même temps que la norme pour accéder
à la structure du document et éventuellement la modifier, autour d'un modèle DOM
(Document Object Model).
La structure d'un document XML peut être analysée selon un modèle normalisé,
fournissant une approche homogène quel que soit le langage (java, PHP ou autre).
Patrick LARREYA, Janvier 2001