RESOLVED DUPLICATE of bug 14101 20444
Could not post dom to xsl by setParameter in Safari
https://bugs.webkit.org/show_bug.cgi?id=20444
Summary Could not post dom to xsl by setParameter in Safari
Jason.Shang
Reported 2008-08-18 20:31:11 PDT
Hi all, I have a site that works perfectly in IE6 IE7 FF2 FF3 but not in the latest Safari. When I use setParameter to post dom to xsl. It will change to string while this issue doesn't happen in IE and FF. So I think maybe this is a bug. Please see the following code: [Code] <html> <head> <title>Enter the title of your HTML document here</title> <script type="text/javascript"> var xmlDoc; var xsltDoc; var xmlFile="Test_xsltProcessor.xml"; var xsltFile="Test_xsltProcessor.xsl"; function show_xml() { // Firefox, Opera 8.0+, Safari if(document.implementation && document.implementation.createDocument) { //load xml file XMLDocument.prototype.load = function(filePath) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", filePath, false); xmlhttp.setRequestHeader("Content-Type","text/xml"); xmlhttp.send(null); var newDOM = xmlhttp.responseXML; if( newDOM ) { var newElt = this.importNode(newDOM.documentElement, true); this.appendChild(newElt); return true; } } xmlDoc = document.implementation.createDocument("", "", null); xmlDoc.async = false; xmlDoc.load(xmlFile); //load xsl file var xsltDoc = document.implementation.createDocument("", "", null); xsltDoc.async = false; xsltDoc.load(xsltFile); //build the relationship between xml file and xsl file var xslt = new XSLTProcessor(); xslt.importStylesheet(xsltDoc); //set parameters xslt.setParameter( null, 'testDom', xmlDoc); //transform var doc = xslt.transformToFragment(xmlDoc, document); //append the xml result to the main html file var target=document.getElementById("divContent"); while (target.hasChildNodes()) { target.removeChild(target.lastChild); } target.appendChild(doc); } else if(typeof window.ActiveXObject != 'undefined') { //load xml file xmlDoc = new ActiveXObject( "MSXML2.FreeThreadedDomDocument. 3.0" ); xmlDoc.async = false; xmlDoc.load(xmlFile); //load xsl file xsltDoc = new ActiveXObject( "MSXML2.FreeThreadedDomDocument. 3.0" ); xsltDoc.async = false; xsltDoc.load(xsltFile); var template = new ActiveXObject( "MSXML2.XSLTemplate. 3.0" ); template.stylesheet = xsltDoc; var processor = template.createProcessor(); processor.input = xmlDoc; processor.addParameter("testDom",xmlDoc); processor.transform(); //append the xml result to the main html file var target=document.getElementById("divContent"); target.innerHTML = processor.output;; } } </script> </head> <body onload="show_xml();"> <p>Enter the body text of your HTML document here</p> <div id="divContent"></div> </body> </html> The xsl file is as following: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/ Transform"> <xsl:param name="testDom"/> <xsl:template match="/"> <div> <xsl:value-of select="$testDom"/> </div> </xsl:template> </xsl:stylesheet> The xml file is as following: <?xml version="1.0" encoding="UTF-8"?> <root> <test>aaa</test> </root> In Safari, the output is [object Document] --It changes to string£¬but in IE and Firefox, the output is aaa. Any help will be much appreciated.Thanks!
Attachments
Alexey Proskuryakov
Comment 1 2008-08-19 04:58:19 PDT
*** This bug has been marked as a duplicate of 14101 ***
Note You need to log in before you can comment on or make changes to this bug.