Как отобразить несколько XSLT-файлов onLoad() в IE8

#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 должно было быть выполнено.