Bonjour,
Je dispose d'une application qui génère un corps de mail à partir d'un fichier XML. Un fichier XSD permet de valider les données du fichier entrant et un XSL met en forme ces mêmes données en HTML, orchestré par un parser (librairies saxon) écrit en java.
Maintenant, ce que je désire faire via ce principe, c'est d'intégrer un fichier HTML "tout fait" (fourni par une appli tierce, donc que je ne contrôle pas) et le ressortir quasiment tel quel dans le corps de mail, avec les contraintes suivantes :
- Je ne veux pas toucher au code java
- L'emplacement du fichier HTML est renseigné dans le fichier XML entrant
J'ai donc adopté dans mon XSL la méthode
Code :
- <xsl:copy-of select="document(HtmlIn)"/>
|
Qui fonctionne, à un détail près : l'encodage ne passe pas, le XML ne connaissant pas les "é" et j'en passe.
J'ai donc essayé de passer par un Doctype, que j'ai spécifié de la manière suivante dans mon fichier XSL :
Code :
- <!DOCTYPE stylesheet [
- <!ENTITY eacute "é">
- <!ENTITY ecirc "ê">
- ...
- ]>
|
(et ce pour les dizaines de caractères pouvant poser problème).
Le problème est que même malgré ça, l'application me renvoie l'erreur
Citation :
Error on line 6 column 49 of test.html: SXXP0003: Error reported by XML parser: The entity "eacute" was referenced, but not declared.
|
J'ai donc l'impression que le parser se tape complètement du Doctype. J'ai essayé plusieurs solutions (dont le très moche "disable-output-escaping" ), mais sans succès, et j'avoue que mes connaissances en XML/XSLT sont assez rudimentaires.
Donc comment faire pour que le doctype soit appliqué à coup sûr ? Ou, plus globalement, comment insérer dans mon fichier XSL un fichier HTML sans avoir de problème d'encodage ?
Message édité par CerfPyvert le 23-04-2013 à 10:49:16