En fait il faut faire un choix.
Soit on utilise la génération XML mais le contenu produit doit être XML.
Ce qui interdit de placer des balises dans des balises.
Soit on produit la génération textuelle mais il faut alors tout écrire.
Quand vous écrivez
<html>
<xsl:attribute name="lang">
<xsl:value-of select="$lang" disable-output- escaping="yes" />
</xsl:attribute>
</html>
Vous vous placez dans un cas XML. Vous indiquez que vous voulez écrire la BALISE <html> et qu'ensuite vous placez au sein de cette balise un attribut lang. Dans ce cas, l'attribut placé dans le balise <html> doit être correctement écrit. C'est-à-dire en XML sans '<' '>' et '"' et en HTML sans '"' qui est le délimiteur de la valeur de l'attribut.
En texte vous devez écrire (non testé)
<![CDATA[<html lang="]]><xsl:value-of select="$lang" disable-output- escaping="yes" /><![CDATA[">]]> ... <![CDATA[</html>]]>
C'est très rude comme méthode car il n'y a plus de vérification de syntaxe.
Mais le problème est que ce que vous voulez produire n'est ni du XML, ni du HTML !
Cordialement,
--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
Tél. 01 41 96 96 76
Fax 01 41 96 96 77
Mél erik.mazoyer@hyperoffice.fr
-----Message d'origine-----
De : Cronier Jean-Yves [mailto:jcronier@vsc-technologies.com]
Envoyé : vendredi 15 septembre 2006 17:07
À : xml-tech@xmlfr.org
Objet : [xml-tech] RE : RE : Problème génération JSP à partir XML+XSLT
Je viens de faire un teste en mettant method="html" ce qui me donne :
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core" version="1.2">
<c:set value="${sessionScope.CONTEXT}" var="CONTEXT"/>
<html lang="<c:out value="${CONTEXT.language}" />"><c:out value="${CONTEXT.language}" /></html> </jsp:root>
C'est presque ça, mais il reste quand même les quotes qui sont escapées...
Je vais plutôt rester sur method="text" et voir ce qui cloche ...
Si quelqu'un a la solution avant moi ... je suis preneur :-)
> -----Message d'origine-----
> De : xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org] De
> la part de Erik Mazoyer Envoyé : vendredi 15 septembre 2006 16:20
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] RE : Problème génération JSP à partir XML+XSLT
>
> > Question : Pourquoi les caractères dans l'attribut lang de la balise
> HTML sont escapés alors qu'en dehors de l'attribut, tout est OK.
>
> Car la ligne
> <html lang="<c:out value="${CONTEXT.language}" />"><c:out
> value="${CONTEXT.language}" /></html> est invalide d'un point de vue
> XML. Le parseur XML détecte une début de balise "<html" puis un second
> début de balise "<c:out" sans avoir fini la premiere.
> Ce n'est pas un XML bien formé.
>
> Par contre <html lang="<c:out value="${CONTEXT.language}"
> />"><c:out value="${CONTEXT.language}" /></html> est parfaitement
> correct, du moins d'un point de vue XML.
>
> En fait ce que vous produisez n'est pas du XML, il vous faut donc
> indiquer que c'est du texte produit par la xslt et non du XML. Pour
> cela vous devez placer l'attribut method="text" dans le balise
> <xsl:output...>
>
> <xsl:output method="text" indent="yes"
> cdata-section-elements="script"/>
>
>
> Cordialement,
>
> --------------------------------------------------------------------
> Erik Mazoyer, Chef de projet
> HyperOffice
> 6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
> Tél. 01 41 96 96 76
> Fax 01 41 96 96 77
> Mél erik.mazoyer@hyperoffice.fr
>
> -----Message d'origine-----
> De : Cronier Jean-Yves [mailto:jcronier@vsc-technologies.com]
> Envoyé : vendredi 15 septembre 2006 16:09
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] Problème génération JSP à partir XML+XSLT
>
>
> Bonjour,
>
> Voici mon problème :
>
> Fichier XML :
>
> <document xmlns="http://www.test.com/ui">
> </document>
>
> Fichier XSL :
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns="http://www.w3.org/1999/xhtml"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:ui="http://www.test.com/ui"
> exclude-result-prefixes="xsl">
> <xsl:output indent="yes" cdata-section-elements="script"/>
> <xsl:template match="ui:document">
> <jsp:root version="1.2"
> xmlns:jsp="http://java.sun.com/JSP/Page"
> xmlns:c="http://java.sun.com/jstl/core">
> <c:set var="CONTEXT" value="${{sessionScope.CONTEXT}}"
> />
> <xsl:variable name="lang"><xsl:text disable-output-
> escaping="yes"><![CDATA[<c:out value="${CONTEXT.language}"
> />]]></xsl:text></xsl:variable>
>
> <html>
> <xsl:attribute name="lang">
> <xsl:value-of select="$lang" disable-output- escaping="yes" />
> </xsl:attribute>
> <xsl:value-of select="$lang" disable-output- escaping="yes" />
> </html>
> </jsp:root>
> </xsl:template>
> </xsl:stylesheet>
>
> Ce qui me génère :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
> xmlns="http://www.w3.org/1999/xhtml"
> xmlns:c="http://java.sun.com/jstl/core" version="1.2">
> <c:set value="${sessionScope.CONTEXT}" var="CONTEXT"/>
> <html lang="<c:out value="${CONTEXT.language}"
> />"><c:out value="${CONTEXT.language}" /></html> </jsp:root>
>
>
>
> Question : Pourquoi les caractères dans l'attribut lang de la balise
> HTML sont escapés alors qu'en dehors de l'attribut, tout est OK.
>
> Ce que j'aimerai obtenir :
>
> <?xml version="1.0" encoding="UTF-8"?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
> xmlns="http://www.w3.org/1999/xhtml"
> xmlns:c="http://java.sun.com/jstl/core" version="1.2">
> <c:set value="${sessionScope.CONTEXT}" var="CONTEXT"/>
> <html lang="<c:out value="${CONTEXT.language}" />"><c:out
> value="${CONTEXT.language}" /></html> </jsp:root>
>
>
>
>
> Merci d'avance si vous avez des pistes à me donner.
>
> --
> 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)
>
>
>
> --
> 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)
--
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)
--
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 Fri Sep 15 17:38:53 2006