Macros en XML

Stephane Bortzmeyer <[email protected]> Sun, 27 May 2007 19:09:10 +0200
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
Depuis des années que je fais des documents XML, je regrette l'absence
d'un mécanisme de macros, permettant de mettre plusieurs éléments d'un
coup.

Quelques exemples concrets pour expliquer ce qui me manque :

1) Je parle de noms de domaines dans des documents Docbook et, au lieu
de <systemitem role="domainnname">fr</systemitem>, j'écrirai bien
<domain>fr</domain>.

2) J'ai souvent en Docbook des énumérations qui n'ont qu'un seul
paragraphe et, plutôt que de taper <listitem><para> à chaque fois, je
préférai juste mettre <item>

Les feuilles de style ne résolvent pas le problème. Ce n'est pas la
présentation finale que je veux changer, c'est le code XML tapé. 

Les entités ne résolvent pas le problème parce que j'ai en général des
paramètres (cf. l'exemple des noms de domaine ci-dessus).

Changer le schéma (ce qui est relativement facile avec des schémas
comme Docbook) pour y introduire mes nouveaux éléments m'oblige
ensuite à gérer une version locale de Docbook, et à adapter les
feuilles de style alors que je veux juste définir un élément en terme
d'autres éléments existants.

Les macros traditionnelles comme celles de M4 ou de cpp ne me plaisent
guère car elles ne connaissent pas XML. Leur usage perturberait les
éditeurs XML et, en utilisant ces macros, on risque de produire des
documents mal formés (problème courant en C où l'usage des macros peut
produire du code syntaxiquement invalide).

Je préférerai ce que les programmeurs Scheme appellent « macros
hygiéniques » (« macros de transformation source à source » dans
http://fr.wikipedia.org/wiki/Macro) mais elles ne semblent pas exister
en XML ?