Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Fiche de lecture : Relax NG

Auteur(s) du livre : Eric ven der Vlist
Éditeur : O'Reilly
0-596-00421-4

Première rédaction de cet article le 7 décembre 2005


Il existe désormais trois langages courants pour écrire des schémas XML c'est-à-dire pour décrire les éléments autorisés ou interdits dans un document XML. RelaxNG, le plus récent, est le moins connu des trois et méritait donc bien un livre chez O'Reilly, avec un faisan sur la couverture, pour gagner d'avantage de popularité.

Autrefois, les schémas XML ne pouvaient s'écrire qu'avec une DTD et c'est la seule solution décrite dans la norme XML. Les limitations des DTD ont mené à l'invention de nouveaux langages, le plus connu étant W3C Schema, aussi dit XSD.

XSD est très complexe, souffre d'une syntaxe XML verbeuse, et est en même temps limité dans les schémas qu'il permet de décrire. Bien qu'il bénéficie d'une présence supérieure dans les médias, il n'a pas été choisi pour certains gros projets (Docbook, OpenDocument, Atom, etc) qui ont préféré RelaxNG.

C'est un signe de la simplicité de RelaxNG que le fait que ce livre soit à la fois relativement mince et très complet : il est rare qu'un sujet en soit absent. L'annotation d'un schéma (par exemple pour le documenter ou pour y mettre des métadonnées) fait ainsi l'objet d'un chapitre entier.

L'auteur, Eric van der Vlist, est également l'auteur du O'Reilly sur XSD, il connait donc bien les deux "concurrents", même si sa préférence pour RelaxNG ne fait guère de doute. Francophone, il est également un des piliers de la liste xml-fr, où il répond en général très rapidement aux questions.

Ce livre couvre donc l'essentiel de RelaxNG : ses principes (ne valider que la structure, pas le contenu des éléments, ne pas changer les valeurs des éléments), puis sa syntaxe (RelaxNG a deux syntaxes, une XML et une dite compacte, bien plus lisible).

Il explique ensuite comment contraindre les valeurs des éléments grâce aux bibliothèques de types (extérieures à RelaxNG proprement dit), puis explique en détail comment réaliser des schémas qui, au lieu d'être des blocs monolithiques, soient extensibles ou restrictibles facilement, de façon à ce que leurs utilisateurs puissent n'utiliser que ce qu'ils veulent.

Le livre se termine sur un remarquable chapitre sur le déterminisme dans les schémas et pourquoi RelaxNG ne l'impose pas.

Notez que le schéma des fichiers XML de ce blog est écrit en RelaxNG.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)