J
Jason
Hi all,
Are you familiar with Safari? I have a site that works perfectly in
IE6 IE7 FF2 FF3 but not in the
latest Safari. When I test xsltProcessor, there is a error as
following, I have dealt with this issue for several days, but there is
no result. Could someone help me?
Are you familiar with Safari? I have a site that works perfectly in
IE6 IE7 FF2 FF3 but not in the
latest Safari. When I test xsltProcessor, there is a error as
following, I have dealt with this issue for several days, but there is
no result. Could someone help me?
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('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load(xmlFile);
//load xsl file
xsltDoc = new ActiveXObject('Microsoft.XMLDOM');
xsltDoc.async = false;
xsltDoc.load(xsltFile);
//append the xml result to the main html file
var target=document.getElementById("divContent");
target.innerHTML = xmlDoc.documentElement.transformNode(xsltDoc);
}
}
</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>ccc</test>
</root>
In Safari, the output is [object Document] --It changes to
string$B!$(Bbut in IE and
Firefox, the output is aaa.
Could someone help me? Thanks!