Bonjour,
Alors, le contexte est le suivant :
J'ai un fichier XSL qui sert de template pour des pages html et dans ces pages html je veux afficher une image, dont l'url est variable.
Mes fichier XSL qui servent de template, sont générés à partir de fichiers HTML contenants des balises spéciales qui sont changées, grâce à un autre XSL( qu'on appellera XSLT car c'est lui qui fait le Transform) qui reconnaît ces balises, en balise <xsl:value-of select="..." /> dans le fichier XSL et qui pourront à leur tour récupérer des valeurs dans des bean JAVA transformés pour ce faire en fichier XML simples.
Schématiquement, ça donne :
D'un coté, j'ai :
HTML + XSL(XSLT) --> XSL(Template)
D'un autre coté, j'ai :
Bean JAVA --> XML (avec juste des tag correspondant aux attributs de mon bean)
Et pour générer ma page HTML :
XSL(template généré) + XML(du bean correspondant) --> HTML
Le problème rencontré :
Je ne peux pas mettre la balise <img src= «[ma variable]» > directement dans le XSL(XSLT) ni dans le HTML(celui de départ) car comme la variable est de type : <xsl:value-of select="/ProductBean/imageUrl" />, au moment de la génération du fichier XSL(Template), j'ai une erreur comme quoi j'ai pas le droit de mettre de balises <> dans la partie src= « ».
J'ai essayé de passer ma fonction qui récupère la valeur de mon url dans une variable tampon dans le XSL(XSLT) qui elle pouvait être mise dans le src= «». La fonction est la suivante :
<xsl:template match="imageUrl">
<xsl:element name = "xsl:value-of">
<xsl:attribute name="select">/ProductBean/imageUrl</xsl:attribute>
</xsl:element>
</xsl:template>
Mais la valeur récupérée par cette fonction ne s'affectait pas à la variable tampon. Donc ne passait pas à la balise <img>.
J'ai donc décidé de construire ma balise <img> directement dans la variable de mon bean Java (à l'appel de l'action java qui récupère la valeur de l'url. Donc au lieu d'avoir à afficher juste l'url de l'image dans la balise, j'ai directement ma balise dans ma chaîne de caractère, ce qui règle le problème des caractères <> dans le src= «»).
Cette chaîne de caractère qui contient le texte de ma balise (complète) est contenue dans un bean JAVA sous la forme : String imageTag = « <img src= « monUrl.jpg »></img> » , et j'ai juste à l'appeler avec une variable de type : xsl:value-of select="/ProductBean/imageTag" /> dans mon XSL lors de la génération de la page HTML.
Et là un autre problème se pose :
Lorsque je convertis les champs de mon bean dans un fichier XML grâce à une fonction automatique, ma variable imageTag devient :
<imageTag><![CDATA[<img src="/gempsyupload/images/jambon.jpg"></img>]]></imageTag>
Il est normal que ma balise <img> soit entouré par ![CDATA[ car XML n'apprécierait pas une balise qu'il ne pourrait pas interpréter (ici la balise <img>).
Et le problème survient lors de la génération de la page HTML à partir du XSLet du XML, car les caractères < et > de ma chaîne de caractère sont transformés en < et &glt; ce qui fait que ma balise image n'est plus interprété par HTML. Donc toujours pas d'image à l'affichage, mais juste : <img src="/monUrl.jpg "></img>
Maintenant les différents problèmes exposés, la question :
Je suis quasiment obligé de contourner le problème qui empêche de mettre des <> dans le src= «» par cette chaîne de caractère qui contient tout mon tag img.
Mais alors, comment faire pour que les caractères < et > ne soit pas changés en < et &glt; et puisse être interprétés dans la page HTML.
A moins que vous ayez une autre solution pour passer ma variable dans l'attribut src de la balise image.
Merci d'avance
Cordialement,
Sylvère MATHIEU
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu Sep 22 11:45:37 2005