[XSLT] Faire une transformation qui respecte mes CDATA ?
Stephane Bortzmeyer <[email protected]> Mon, 19 Nov 2007 12:05:28 +0100
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
[Je pense que ce que je demande est impossible en XSLT mais je tente
ma chance tout de même.]
D'abord, le contexte : j'ai des documents XML, écrits à la main, qu'il
me faut modifier en masse (des liens à changer, typiquement). Je peux
écrire un script XSLT qui fait ce changement et ça marche. Ce script
comprend cette règle pour copier :
<xsl:template match="*|@*|comment()">
<xsl:copy>
<xsl:apply-templates select="@*|*|text()|comment()"/>
</xsl:copy>
</xsl:template>
plus des règles spécifiques pour ce qui doit être transformé.
Maintenant, mon problème : j'ai des sections CDATA qui contiennent de
l'XML et qui sont transformées (testé avec 4suite et xsltproc) pour ne
pas utiliser CDATA, les < étant remplacés par des <
C'est certainement légal (l'infoset est le même) mais je souhaiterai
garder du XML lisible dans mes CDATA, c'est plus facile à éditer.
Je crains que cela ne soit une demande irréaliste (l'interpréteur XSLT
n'a même pas vu que c'était une CDATA, l'analyseur XML a fait cela
pour lui) mais, au cas où quelqu'un aie une bonne idée... Sinon, je
devrais utiliser sed ou équivalent, ce qui est assez casse-g...
Question subsidiaire : et avec DOM ? A priori, on aura le même
problème mais, si je me trompe, une solution DOM m'irait aussi.