Bonjour,

J'essaie de faire une transformation XSLT dans le navigateur en me basant sur l'exemple w3schools. Ca fonctionne bien dans firefox, mais pas encore dans IE8, qui semble coincer sur la fonction document() dans le XSL.

Code javascript :
            function loadXMLDoc(dname)
            {
                if (window.XMLHttpRequest){
                    xhttp=new XMLHttpRequest();
                }
                else {
                    xhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xhttp.open("GET",dname,false);
                xhttp.send("");
                return xhttp.responseXML;
            }
            
            function transform() {
                xml=loadXMLDoc("srv/en/xml.metadata.get?uuid=%7B0644DAD6-6333-43B6-A5F5-83B542650DE7%7D");
                xsl=loadXMLDoc("test.xsl");
                
                // code for IE
                if (window.ActiveXObject) {
                    xsl=loadXMLDoc("test.xsl");
                    xsl.setProperty("AllowDocumentFunction", true);
                    ex=xml.transformNode(xsl);
                    document.getElementById("result_list").innerHTML=ex;
                }
                // code for Mozilla, Firefox, Opera, etc.
                else if (document.implementation && document.implementation.createDocument) {
                    //xsl=loadXMLDoc("metadata_ngi.xsl");
                    xsltProcessor=new XSLTProcessor();
                    xsltProcessor.importStylesheet(xsl);
                    resultDocument = xsltProcessor.transformToFragment(xml,document);
                    document.getElementById("result_list").appendChild(resultDocument);
                }
            }


Code XSL :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 
        xmlns:gmd="http://www.isotc211.org/2005/gmd" >

    <xsl:variable name="label" select="document('./xml/schemas/iso19139/loc/nl/labels.xml')"/>
    
    <xsl:template match="/">
        <div>
            <xsl:call-template name="getTitle">
                <xsl:with-param name="name" select="name(gmd:MD_Metadata)"/>
            </xsl:call-template>
        </div>
    </xsl:template>

    <xsl:template name="getTitle">
        <xsl:param name="name"/>
        <xsl:value-of select="name(.)"/>
        <xsl:value-of select="string($label/labels/element[@name=$name]/label)"/>
    </xsl:template>
    
 </xsl:stylesheet>


Avez-vous une idée ?

Alain
Modifié par acangi (08 Oct 2010 - 13:26)
Dans la fonction document(), j'ai remplacé le chemin vers le fichier par son URL.
Maintenant ça marche.