#javascript #internet-explorer #xslt #dom #internet-explorer-8
#javascript #internet-explorer #xslt #dom #internet-explorer-8
Вопрос:
Просто для практики я пытаюсь отобразить одну и ту же разметку в двух разных местах на странице. Это отлично работает в FF Opera и т.д., Но не в IE8.
Есть ли лучший способ сделать это? помилуйте, я только что запустил xslt
Вот js:
function loadXMLDoc(fname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(fname);
return(xmlDoc);
}
// code for Mozilla, Firefox, Opera, etc.
else
{
xhttp=new XMLHttpRequest();
xhttp.open("GET",fname,false);
xhttp.send("");
return xhttp.responseXML;
}
}
function displayResult()
{
xmlcd=loadXMLDoc("cdcatalog.xml");
xslcd=loadXMLDoc("cdcatalog.xsl");
if (window.ActiveXObject)
{
exs=xmlcd.transformNode(xslcd);
document.getElementById("example").innerHTML=exs;
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
exs=xmlcd.transformNode(xslcd);
document.getElementById("eexample").innerHTML=exs;
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation
amp;amp; document.implementation.createDocument)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xslcd);
resultDocument = xsltProcessor.transformToFragment(xmlcd,document);
document.getElementById("example").appendChild(resultDocument);
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xslcd);
resultDocument = xsltProcessor.transformToFragment(xmlcd,document);
document.getElementById("eexample").appendChild(resultDocument);
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(displayResult);
И вот разметка:
<html>
<head>
<script>
include myscripts
</script>
</head>
<body onload="displayResult()">
<div id="example" />
<div id="eexample" />
</body>
</html>
Ответ №1:
Есть более простой способ 🙂
Установите инструмент XML от Microsoft — http://www.microsoft.com/download/en/details.aspx?displaylang=enamp;id=17280
Затем создайте свой XSL — example — под именем рабочего стола test.xsl
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:value-of select="/root"/>
</xsl:template>
</xsl:stylesheet>
Соответствующий — test.xml на рабочем столе
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>foo</root>
Открыть test.xml в IE и преобразование XSLT должно было быть выполнено.