Bonjour,

pour l'affichage d'une liste d'objets, j'utilise une transformation XSLT à partir d'une description XML de mes objets. L'un des champs de mes objets contient du texte HTML et se retrouve donc sous la forme :
<monObjet>
    <monChamp>&lt;div&gt;Texte de mon &lt;b&gtchamp&lt/b&gt; entre div&lt;/div&gt;</monChamp>
</monObjet>


Ce que je voudrais c'est que pendant la transformation, mon champs HTML soit interprété, que je ne retrouve pas à l'écran :
a écrit :
<div>Texte de mon <b>champ</b> entre div</div>

mais plutôt :
a écrit :
Texte de mon [B]champ[/B] entre div


Comment cela est-il possible ?

Merci d'avance.
Modifié par d1g-2-d1g (20 Jun 2007 - 23:37)
bonjour ,

je pense que ton fichier XML ne doit pas contenir d'information de balisage ou autre information de mise en page.


<monObjet>

    <monChamp>&lt;div&gt;Texte de mon &lt;b&gtchamp&lt/b&gt; entre div&lt;/div&gt;</monChamp>

</monObjet


les données XML doivent être brutes :

<monObjet>
   <data>texte</data>
   <data>texte</data>
</monObjet>


En donnant une quelquonque information de traitement dans les données tu te prives de transformation autre que le Html ( tous les formats de sortie Wap, Svg, xhtml, smil ....dialacte Xml ) .
Le tratement se fera à l'aide de règles Xslt :

<!-- lorsque que le processeur rencontre tel element appliquer tel régles-->
<xsl:template match="data">
   <div>
     <xslt:value-of select="data"/>
  <div>
</xsl:template>



Si tu veux encadrer une partie de texte (un donnée spécifique) pour l'afficher en gras , tu applique un nouvelle règle (d'élément ou d'attibuts ).
Par exemple:

fichier.xml 
<monObjet>
   <data gras="important">texte</data>
   <data gras="a lire">texte</data>
</monObjet>
......

<xsl:template match="data/@gras">
   <!-- pour tous les attributs 'gras' ayant comme "element parent"  'data' -->
   <span class="mise_en_gras"><xsl:value-of select="."/></span>
   <!-- la classe sera spécifiée dans une feuille de style Css -->
</xsl:template>


Il suffit d'appeller les règles au bon moment avec <xsl:apply-template> ou <xsl:call-template> (ce dernier fonctionne plus comme un appel de fonction ..)

Mais il existe plein d'autre façon et de technique (en utilsant les variables dans un texte comme fragment de texte ) ... et beaucoup d'autre je suis sûr que je ne connais pas Smiley lol
Je suis bien d'accord avec toi kzone, cependant dans mon cas, je ne suis pas responsable du fichier XML mais juste de la transformation. D'autre part dans ce cas précis le champ de données provient des données saisies par un utilisateur à partir d'un champs de saisie de texte enrichie. Donc à priori pas d'autre choix que de prendre les données telles qu'elles sont.

Pour en revenir au sujet, j'ai finalement trouvé la solution :
<xsl:value-of select="monChamp" disable-output-escaping="yes" />


Smiley biggrin
kzone a écrit :
c'est <résolu > alors !?


Sorry, c'est mon premier post et comme j'avais pas trouvé de bouton "Résolu"...