OVH Cloud OVH Cloud

transformation XML en Html

14 réponses
Avatar
Sylvain
Bonjour,

J'ai un fichier XML qui contient des balises de mises en forme html.

Exemple :
<title>VAT Refund example</title>
<description><b> ... </b>&amp; Collection Contact us &nbsp; Index
<b>VAT</b> <b>refund</b> Fiscal representation Intrastat Corporate
&amp;<b>VAT</b> <b>Refund</b> example &nbsp; &nbsp; Home Logistics Services
Workshop<b> ... </b></description>

j'ai ecris un fichier XSL pour faire la transformation du XML en XSL.

Quand je regarde le fichier XML dans IE en incluant la stylesheet
(<?xml-stylesheet type='text/xsl' href='/rss.xsl' version='1.0'?>), le
résultat est correct,c'est à dire les balises <b> sont interprétés.

Le code XSL est juste : <xsl:value-of select="description"
disable-output-escaping="yes" /> (Avec disable-output-escaping="no"
j'obtiens le même résultat )

Par contre quand j'effectue la transformation (en C# avec la methode
transform de la classe XslTransform) les caractères spéciaux sont
interprétés.
En effet, le "<b>" devient "&lt;b&gt;"

Avez vous une idée sur le problème ?
Je suis conscient que je ne devrais pas avoir la mise en forme dans le
document XML.

Apparemment le problème vient de la transformation effectué en C# ?

Merci

Sylvain

4 réponses

1 2
Avatar
Sylvain
Merci pour la réponse Patrick,

Si je comprends bien, je ne peux pas à l'aide de C# transformé du XML
avec l'option "disable-output-escaping " !


Patrick Philippot a écrit :
Patrick Philippot wrote:
> Cela n'est pas supporté avec un XmlTextWriter (normal) .

Il faudrait peut-être que je justifie. Un XmlTextWriter est censé
produire du Xml bien formé. Si on utilise "disable-output-escaping " ,
on risque de sortir un document mal formé du point de vue XML. Le choix
d'implémentation est donc d'ignorer cet attribut. Ça se discute mais
c'est logique.

Il faut réserver l'emploi du XmlTextWriter à la production de XML ou de
XHTML. Pas d'HTML ou d'autres formats de texte.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


Avatar
Patrick Philippot
Sylvain wrote:
Merci pour la réponse Patrick,

Si je comprends bien, je ne peux pas à l'aide de C# transformé du XML
avec l'option "disable-output-escaping " !



Bien sûr que si mais il faut utiliser pour la sortie non pas un
XmlTextWriter mais un Filestream. J'ai testé, ça fonctionne.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
Sylvain wrote:
Si je comprends bien, je ne peux pas à l'aide de C# transformé du XML
avec l'option "disable-output-escaping " !



XPathDocument myXPathDoc = new XPathDocument(sXmlPath) ;
XslTransform myXslTrans = new XslTransform() ;

myXslTrans.Load(sXslPath) ;

FileStream myWriter = new FileStream("result.html",
FileMode.Create,
FileAccess.ReadWrite, FileShare.None, 4096, true);

myXslTrans.Transform(myXPathDoc, null, myWriter, null);

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Sylvain
Merci Patrick,

Je viens de tester et ça fonctionne !

Encore merci de m'avoir consacré du temps ...
1 2