Bug 20444 - Could not post dom to xsl by setParameter in Safari
Summary: Could not post dom to xsl by setParameter in Safari
Status: RESOLVED DUPLICATE of bug 14101
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-08-18 20:31 PDT by Jason.Shang
Modified: 2008-08-19 04:58 PDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jason.Shang 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!
Comment 1 Alexey Proskuryakov 2008-08-19 04:58:19 PDT

*** This bug has been marked as a duplicate of 14101 ***