Salut,
Sois ce fichier XML :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="ordre.xsl"?>
<racine>
<contenu>
<sg i="SVIERGE" f="#f2fde8" t="0" l="0" h="480" a="720" />
<h i="TXTPOR" v=" 35786" />
</contenu>
<ordres>
<f m="ROOT" />
<op m="F01" t="361" l="406" h="220" a="291" />
</ordres>
</racine>
Sois le fichier XSL :
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes" />
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates />
<xsl:for-each select="/racine//*">
<!-- ORDRES -->
<xsl:if test="name()='ordres'">
<xsl:for-each select="./*">
<xsl:choose>
<xsl:when test="name()='op'">
op('<xsl:value-of select="@m" />','<xsl:value-of select="@t" />','<xsl:value-of select="@l" />','<xsl:value-of select="@h" />','<xsl:value-of select="@a" />');
</xsl:when>
<xsl:when test="name()='f'">
f('<xsl:value-of select="@m"/>');
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:if>
<!-- CONTENU -->
<xsl:if test="name()='contenu'">
contenu='<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-16"></META><TITLE>GLOBALgram</TITLE></HEAD><BODY id="first" style="background-color:transparent"><DIV id="principal"></DIV><DIV id="images"></DIV>';
<xsl:for-each select="./*">
<xsl:choose>
<xsl:when test="name()='sg'">
<SPAN>
<xsl:attribute name="style">border:none;font-family:verdana;position:absolute;background-color:<xsl:value-of select="@f" />;top:<xsl:value-of select="@t" />;left:<xsl:value-of select="@l" />;width:<xsl:value-of select="@a" />;height:<xsl:value-of select="@h" />;</xsl:attribute></SPAN>\
</xsl:when>
</xsl:choose>
</xsl:for-each>
</BODY></HTML>';
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Explication :
je recois ce flux XML sur IE dans une frame. En Javascript, sur une autre frame où se situe déjà des fonctions, j'applique la feuille de style au flux :
res+=flux.transformNode(xslForme);
eval(res);
Donc le XSL me transforme les ordres en appels javascript aux fonction op() et f(). Si je fais un eval de ce résultat, OK çà exécute bien les fonctions.
Je voudrais que le XSL me transforme les contenus en un ordre javascript comme celui-ci :
contenu='<html><body>....<span...></html>' etc...';
pour ensuite faire un eval() dessus.
Mon problème : le résultat me mets çà sur plusieurs lignes :
contenu='<html><body>...
<span...>
</span>
';
Donc quand on fait un eval là-dessus, çà merde.
Donc j'ai mis des \ au bout car c comme çà qu'on fait du multi-lignes dans un chaine en javascript.
Mais çà ne résoud rien.
Donc j'en suis là.
Vous avez une idée ?
Merci !!
---------------
Savoir c'est vivre, et maintenir dans l'ignorance c'est presque un homicide