Bonjour à Tous,
je suis une réelle quiche en xml / xsl
et je dois créer un template.
le problème que je rencontre est le suivant,
toutes les balises qui se trouvent entre <![CDATA Smiley xxxxxx ]> se transforment en " &lt; &gt; ", j'ai fait des recherches, leurs traductions : less than & greater than.
OK.

d'après ce que j'ai compris,
en modifiant la ligne
<xsl:output method="html" indent="yes"/>

en
<xsl:output method="text" indent="yes"/>

les balises < & > retrouvent leur apparence.
ce qui est vrai, mais du coup, mon contenu n'est plus interprété comme étant du html.

Ensuite, j'ai cru comprendre qu'en insérant la ligne :
disable-output-escaping="yes"

ça allait arranger les choses.
résultat : je crois ne pas avoir compris son utilisation.

Voila, c'est le 3ième jour que je me triture l'esprit avec ça,
c'est mon 3ième jour d'xml xsl et je crois que pour avancer, j'ai besoin qu'on m'indique la voie.

Voici mes codes :

Structure
<?xml version="1.0" encoding="UTF-8"?>

<structure name="content" mandatory="true">
  <url name="UrlTitre" mandatory="true" options="false">
  </url>
  <text name="Titre" mandatory="true">
  </text>
  <url name="UrlContent" mandatory="true" options="false">
  </url>
  <image name="Image" mandatory="true">
    <minwidth>75</minwidth>
    <maxwidth>75</maxwidth>
    <minheight>75</minheight>
    <maxheight>75</maxheight>
  </image>
  <text name="Texte_gras" mandatory="true">
  </text>
  <text name="Texte" mandatory="true">
  </text>
</structure>


Contenu
<?xml version='1.0' encoding='UTF-8'?>

<content>
<UrlTitre>
<href><![CDATA[http://www.saizenmedia.com/nightwish/]]></href>
<target><![CDATA[]]></target>
<javascript><![CDATA[]]></javascript>
</UrlTitre>
<Titre><![CDATA[Test]]></Titre>
<UrlContent>
<href><![CDATA[http://www.bouletcorp.com/blog/index.php?date=20070524]]></href>
<target><![CDATA[]]></target>
<javascript><![CDATA[]]></javascript>
</UrlContent>
<Image>
<src>72656</src>
<filename>test.jpg</filename>
<alt><![CDATA[alternative image]]></alt>
<size>3</size>
<width>75</width>
<height>75</height>
</Image>
<Texte_gras><![CDATA[oizeyfh ùprhfùsd pfhysd fùoshdfpO ]]></Texte_gras>
<Texte><![CDATA[dfg fd gdfg fdg sdfg dfg sdfg dfg ]]></Texte>
</content>


Template
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>

<xsl:template match="/">
<xsl:apply-templates select="//content" />
</xsl:template>
 
<xsl:template match="//content">
<xsl:text disable-output-escaping="yes">&lt;</xsl:text>?xml version='1.0' encoding='utf-8'?<xsl:text disable-output-escaping="yes">&gt;</xsl:text>

<Module>
	<ModulePrefs title="Titre" title_url="UrlTitre" ttl="3600" />
	<Content type="html">
    <![CDATA[

<UrlTitre>
 <xsl:element name="a">
  <xsl:attribute name="href"><xsl:value-of select="UrlTitre"  disable-output-escaping="yes" /></xsl:attribute>
  <xsl:value-of select="UrlTitre" disable-output-escaping="yes" />
 </xsl:element>
</UrlTitre>

<UrlContent>
 <xsl:element name="a">
  <xsl:attribute name="href"><xsl:value-of select="UrlContent"/></xsl:attribute>
  <xsl:value-of select="UrlContent"  disable-output-escaping="yes" />
   <Image><xsl:value-of select="Image/src"  disable-output-escaping="yes" /></Image>
   <Texte_gras><xsl:value-of select="Texte_gras"  disable-output-escaping="yes" /></Texte_gras>
   <Texte><xsl:value-of select="Texte"  disable-output-escaping="yes" /></Texte>
 </xsl:element>
</UrlContent>

]]>
</Content>
</Module>

</xsl:template>
</xsl:stylesheet>


Resultat :
<?xml version='1.0' encoding='utf-8'?><Module>
<ModulePrefs title="Titre" title_url="UrlTitre" ttl="3600"></ModulePrefs>
<Content type="html">
  
&lt;UrlTitre&gt;
 &lt;xsl:element name="a"&gt;
  &lt;xsl:attribute name="href"&gt;&lt;xsl:value-of select="UrlTitre"  disable-output-escaping="yes" /&gt;&lt;/xsl:attribute&gt;
  &lt;xsl:value-of select="UrlTitre" disable-output-escaping="yes" /&gt;
 &lt;/xsl:element&gt;
&lt;/UrlTitre&gt;

&lt;UrlContent&gt;
 &lt;xsl:element name="a"&gt;
  &lt;xsl:attribute name="href"&gt;&lt;xsl:value-of select="UrlContent"/&gt;&lt;/xsl:attribute&gt;
  &lt;xsl:value-of select="UrlContent"  disable-output-escaping="yes" /&gt;
   &lt;Image&gt;&lt;xsl:value-of select="Image/src"  disable-output-escaping="yes" /&gt;&lt;/Image&gt;
   &lt;Texte_gras&gt;&lt;xsl:value-of select="Texte_gras"  disable-output-escaping="yes" /&gt;&lt;/Texte_gras&gt;
   &lt;Texte&gt;&lt;xsl:value-of select="Texte"  disable-output-escaping="yes" /&gt;&lt;/Texte&gt;
 &lt;/xsl:element&gt;
&lt;/UrlContent&gt;

</Content>
</Module>


je n'attends pas une réponse toute faite,
les conseils des profanes comme moi sont les bienvenus !
merci d'avance
Modifié par Guim (21 Oct 2008 - 15:03)
YaBonBanania!!
voici la solution :

<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xs='http://www.w3.org/2001/XMLSchema' version='1.0'>
	<xsl:output encoding="ISO-8859-1" method="xml" indent="yes"/>
	
	<xsl:template match="/">
		<xsl:apply-templates select="//content" />
	</xsl:template>

 <xsl:variable name="cdataStart"><![CDATA[ <![CDATA ]]></xsl:variable>
 <xsl:variable name="cdataEnd"><![CDATA[ ]] ]]></xsl:variable>

	<xsl:template match="//content">
	
		<Module>
			<ModulePrefs title="Titre" title_url="{UrlTitre/href}" ttl="3600" />
			<Content type="html">
					 <xsl:value-of select="$cdataStart"  disable-output-escaping="yes"/>
					 <a href="{UrlTitre/href}" target="{url/target}"> 
						<h1>
							<xsl:value-of select="Titre"  disable-output-escaping="yes" />
						</h1>
					</a>
					<a href="{UrlContent/href}" target="{url/target}">
						<img src="{Image/src}" />
						<b>
							<xsl:value-of select="Texte_gras"  disable-output-escaping="yes" />
						</b>
						 <xsl:value-of select="Texte"  disable-output-escaping="yes" />
					</a>
					<xsl:value-of select="$cdataEnd"  disable-output-escaping="yes"/>
			</Content>
		</Module>
	</xsl:template>
</xsl:stylesheet>


en gros, il fallait ajouter les lignes suivantes :

 <xsl:variable name="cdataStart"><![CDATA[ <![CDATA ]]></xsl:variable>
 <xsl:variable name="cdataEnd"><![CDATA[ ]] ]]></xsl:variable>


bien à vous !
bon en fait, c'est ça la solution :

       <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xs='http://www.w3.org/2001/XMLSchema' version='1.0'>
	<xsl:output encoding="UTF-8" method="xml" indent="yes"/>
	
	<xsl:template match="/">
		<xsl:apply-templates select="//content" />
	</xsl:template>

	<xsl:template match="//content">
	
		<Module>
			<ModulePrefs title="{Titre}" title_url="{UrlTitre/href}" ttl="3600" />
			<Content type="html">
<xsl:text  disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
			                <a href="{UrlContent/href}" target="{url/target}">
						<h1><xsl:value-of select="Titre"  disable-output-escaping="yes" /></h1>
<div class="text">
						<img src="{Image/src}" alt="{Image/alt}" width="75" height="75" />
						<b><xsl:value-of select="Texte_gras"  disable-output-escaping="yes" /></b><br/>
						 <xsl:value-of select="Texte"  disable-output-escaping="yes" />
					
</div>
                                        </a>
<xsl:text  disable-output-escaping="yes">]]&gt;</xsl:text>
			</Content>
		</Module>
	</xsl:template>
</xsl:stylesheet>