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

10 réponses

1 2
Avatar
Patrick Philippot
Sylvain wrote:
Je suis conscient que je ne devrais pas avoir la mise en forme
dans le document XML.



Bonjour,

Pour les zones contenant du texte XML à ne pas interpréter ou du texte
HTML , utilisez une balise <![CDATA[ .

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Stouf
Bonsoir,

Si tu veux que tes balises ne soient pas interprétées, il
faut que tu déclares l'intérieur de tes balises en CDATA.

Par rapport à ton exemple ca donne :
<description>
<![CDATA[
<b> ... </b>& Collection Contact us Index<b>VAT</b>
<b>refund</b> Fiscal representation Intrastat Corporate
&<b>VAT</b> <b>Refund</b> example Home Logistics Services
Workshop<b> ... </b>
]]>
</description>

-----Message d'origine-----
Bonjour,

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


forme html.

Exemple :
<title>VAT Refund example</title>
<description><b> ... </b>& Collection Contact us Index
<b>VAT</b> <b>refund</b> Fiscal representation Intrastat


Corporate
&<b>VAT</b> <b>Refund</b> example 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 "<b>"

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


.



Avatar
Sylvain
Merci pour vos explications !



"Stouf" a écrit dans le message de
news:0b0301c56178$a829f920$
Bonsoir,

Si tu veux que tes balises ne soient pas interprétées, il
faut que tu déclares l'intérieur de tes balises en CDATA.

Par rapport à ton exemple ca donne :
<description>
<![CDATA[
<b> ... </b>& Collection Contact us Index<b>VAT</b>
<b>refund</b> Fiscal representation Intrastat Corporate
&<b>VAT</b> <b>Refund</b> example Home Logistics Services
Workshop<b> ... </b>
]]>
</description>

-----Message d'origine-----
Bonjour,

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


forme html.

Exemple :
<title>VAT Refund example</title>
<description><b> ... </b>& Collection Contact us Index
<b>VAT</b> <b>refund</b> Fiscal representation Intrastat


Corporate
&<b>VAT</b> <b>Refund</b> example 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 "<b>"

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


.



Avatar
Sylvain
Vous me conseillez d'utiliser la balise <![CDATA[ j'ai testé ça fonctionne
si j'effectue la transformation dans le navigateur.

Par contre si j'effectue la transformation en C# pour obtenir un fichier
résultat en HTML, ça ne fonctionne pas.

J'utilise le code suivant:

try

{

XPathDocument myXPathDocument = new XPathDocument(in_xml);

XslTransform myXslTransform = new XslTransform();


XmlTextWriter writer = new XmlTextWriter(sortie, null);

myXslTransform.Load(_xsl);

myXslTransform.Transform(myXPathDocument, null, writer);

writer.Close();

StreamReader stream = new StreamReader (sortie);

retour = stream.ReadToEnd();

return retour;

}

catch ()

...

Merci



"Patrick Philippot" a écrit dans le
message de news: ...

Sylvain wrote:



> Je suis conscient que je ne devrais pas avoir la mise en forme



> dans le document XML.







Bonjour,







Pour les zones contenant du texte XML à ne pas interpréter ou du texte



HTML , utilisez une balise <![CDATA[ .







--



Patrick Philippot - Microsoft MVP



MainSoft Consulting Services



www.mainsoft.fr











"Patrick Philippot" a écrit dans le
message de news:
Sylvain wrote:
> Je suis conscient que je ne devrais pas avoir la mise en forme
> dans le document XML.

Bonjour,

Pour les zones contenant du texte XML à ne pas interpréter ou du texte
HTML , utilisez une balise <![CDATA[ .

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




Avatar
Sylvain
Re,

Vous me conseillez d'utiliser la balise <![CDATA[ j'ai testé ça fonctionne
si j'effectue la transformation dans le navigateur.

Par contre si j'effectue la transformation en C# pour obtenir un fichier
résultat en HTML, ça ne fonctionne pas.

J'utilise le code suivant:

try

{

XPathDocument myXPathDocument = new XPathDocument(in_xml);

XslTransform myXslTransform = new XslTransform();


XmlTextWriter writer = new XmlTextWriter(sortie, null);

myXslTransform.Load(_xsl);

myXslTransform.Transform(myXPathDocument, null, writer);

writer.Close();

StreamReader stream = new StreamReader (sortie);

retour = stream.ReadToEnd();

return retour;

}

catch ()

...

Merci



"Patrick Philippot" a écrit dans le
message de news: ...

Sylvain wrote:



> Je suis conscient que je ne devrais pas avoir la mise en forme



> dans le document XML.







Bonjour,







Pour les zones contenant du texte XML à ne pas interpréter ou du texte



HTML , utilisez une balise <![CDATA[ .







--



Patrick Philippot - Microsoft MVP



MainSoft Consulting Services



www.mainsoft.fr











"Patrick Philippot" a écrit dans le
message de news:
Sylvain wrote:
> Je suis conscient que je ne devrais pas avoir la mise en forme
> dans le document XML.

Bonjour,

Pour les zones contenant du texte XML à ne pas interpréter ou du texte
HTML , utilisez une balise <![CDATA[ .

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






"Stouf" a écrit dans le message de
news:0b0301c56178$a829f920$
Bonsoir,

Si tu veux que tes balises ne soient pas interprétées, il
faut que tu déclares l'intérieur de tes balises en CDATA.

Par rapport à ton exemple ca donne :
<description>
<![CDATA[
<b> ... </b>& Collection Contact us Index<b>VAT</b>
<b>refund</b> Fiscal representation Intrastat Corporate
&<b>VAT</b> <b>Refund</b> example Home Logistics Services
Workshop<b> ... </b>
]]>
</description>

-----Message d'origine-----
Bonjour,

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


forme html.

Exemple :
<title>VAT Refund example</title>
<description><b> ... </b>& Collection Contact us Index
<b>VAT</b> <b>refund</b> Fiscal representation Intrastat


Corporate
&<b>VAT</b> <b>Refund</b> example 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 "<b>"

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


.



Avatar
Patrick Philippot
Bonjour,

Sylvain wrote:
Par contre si j'effectue la transformation en C# pour obtenir un
fichier résultat en HTML, ça ne fonctionne pas.



Merci de donner des détails et d'éviter les formules du genre "ça ne
fonctionne pas" :-) . Nous ne pouvons pas vous aider si vous ne précisez
pas ce qui se passe. Qu'est-ce qui ne fonctionne pas? Quel résultat
obtenez vous?

Merci.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Sylvain
Excusez moi pour ce manque de précision !

Les balises de mise en forme (par exemple <b>) ne sont pas interprétées
quand j'effectue la transformation en C#.
La balise bold devient : &lt;b&gt; et non <b> dans le code html.
Les balises sont ainsi affichées au lieu d'être interprété en tant que mise
en forme de texte.

En espérant avoir été plus explicite ;-)



"Patrick Philippot" a écrit dans le
message de news:%235x%
Bonjour,

Sylvain wrote:
> Par contre si j'effectue la transformation en C# pour obtenir un
> fichier résultat en HTML, ça ne fonctionne pas.

Merci de donner des détails et d'éviter les formules du genre "ça ne
fonctionne pas" :-) . Nous ne pouvons pas vous aider si vous ne précisez
pas ce qui se passe. Qu'est-ce qui ne fonctionne pas? Quel résultat
obtenez vous?

Merci.

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




Avatar
Patrick Philippot
Bonjour,

Sylvain wrote:
Excusez moi pour ce manque de précision !

Les balises de mise en forme (par exemple <b>) ne sont pas
interprétées quand j'effectue la transformation en C#.
La balise bold devient : &lt;b&gt; et non <b> dans le code html.
Les balises sont ainsi affichées au lieu d'être interprété en tant
que mise en forme de texte.



Tout texte, balise ou non, mis à l'intérieur d'une balise CDATA n'est
pas touché. Une balise <b> à l'intérieur d'un bloc CDATA devrait donc
être rendue intacte en fin de transformation. Vous êtes sûr qu'il n'y a
pas une erreur de syntaxe XML quelque part?

Envoyez moi le document XML et la feuille de style XSL, voire le projet
C# s'il est autonome et léger. Si je trouve 5 minutes, je regarderai.

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

Votre problème, c'est que vous utilisez l'attribut
disable-output-escaping dans votre feuille XSL. Cela n'est pas supporté
avec un XmlTextWriter (normal) . Si vous utilisez un Filestream à la
place, cela va fonctionner.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
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
1 2