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 ?