2015-05-19 2 views
0

После загрузки XML и XSLT невозможно преобразовать его в IE11.
, преобразовывая я получаю Object doesn't support property or method transformNodeПреобразование встроенных XML и встроенных XSL в XHTML

<!DOCTYPE html> 
<html> 
<head> 
<title>XML Data Block Demo</title> 
<script id="GUI" type="application/xml"> 
<GUI> 
    <option> 
    <name>My Inbox</name> 
    </option> 
    <option> 
    <name>My Home</name> 
    </option> 
</GUI> 
</script> 

<script id="GUIxsl" type="application/xml"> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 

    <h2>GUI</h2> 
    <table border="1"> 
     <tr bgcolor="#9acd32"> 
     <th style="text-align:left">Option</th> 
     </tr> 
     <xsl:for-each select="GUI/option"> 
     <tr> 
     <td><xsl:value-of select="name"/></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
    </xsl:template> 
</xsl:stylesheet> 
</script> 
<script> 
function loadOnPage() { 
    debugger; 
    var xml = document.getElementById("GUI").textContent; 
    var xsl = document.getElementById("GUIxsl").textContent; 
    var parser = new DOMParser(); 
    var docxml = parser.parseFromString(xml, "application/xml"); 
    var docxsl = parser.parseFromString(xsl, "application/xml"); 
    ex = docxml.transformNode(docxsl); 
    document.getElementById("example").innerHTML = ex; 

} 
</script> 
</head> 
<body onload="loadOnPage()";> 
<div id="example" /> 

Demo did not run 
</body> 
</html> 
+0

https://www.w3schools.com/xml/xsl_client.asp пример – Premraj

ответ

1

Если вы хотите использовать XSLT внутри IE, то вы не можете использовать DOMParser для синтаксического анализа XML, вам нужно использовать документ MSXML DOM с new ActiveXObject('Msxml2.DOMDocument.6.0') и метод loadXML, я не думаю, что пытаются поставить XML или код XSLT в HTML является хорошей идеей, однако, образец http://home.arcor.de/martin.honnen/html/test2015051901.html работает для меня в IE 11:

function loadOnPage() { 
 
    var xml = document.getElementById("GUI").textContent; 
 
    var xsl = document.getElementById("GUIxsl").textContent; 
 

 

 
    var docxml = new ActiveXObject('Msxml2.DOMDocument.6.0'); 
 
    docxml.loadXML(xml); 
 

 
    var docxsl = new ActiveXObject('Msxml2.DOMDocument.6.0'); 
 
    docxsl.loadXML(xsl); 
 

 
    var htmlFrag = docxml.transformNode(docxsl); 
 
    document.getElementById("example").innerHTML = htmlFrag; 
 

 
} 
 

 
window.onload = loadOnPage;
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Test</title> 
 
    <style> 
 
    </style> 
 
</head> 
 

 
<body> 
 
    <script id="GUI" type="application/xml"> 
 
    <GUI> 
 
     <option> 
 
     <name>My Inbox</name> 
 
     </option> 
 
     <option> 
 
     <name>My Home</name> 
 
     </option> 
 
    </GUI> 
 
    </script> 
 

 
    <script id="GUIxsl" type="application/xml"> 
 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
 
     <xsl:template match="/"> 
 

 
     <h2>GUI</h2> 
 
     <table border="1"> 
 
      <tr bgcolor="#9acd32"> 
 
      <th style="text-align:left">Option</th> 
 
      </tr> 
 
      <xsl:for-each select="GUI/option"> 
 
      <tr> 
 
       <td> 
 
       <xsl:value-of select="name" /> 
 
       </td> 
 
      </tr> 
 
      </xsl:for-each> 
 
     </table> 
 
     </xsl:template> 
 
    </xsl:stylesheet> 
 
    </script> 
 

 

 
    <div id="example"> 
 

 
    Demo did not run 
 
    </div> 
 

 
</body> 
 

 
</html>

+0

http://home.arcor.de/martin.honnen/html/test2015051901.html имеет опубликованный код и отлично работает для меня с IE 11 на Windows 8.1. Я не знаю других методов с IE для скрипта XSLT в браузере. Я не думаю, что другая ссылка в вашем комментарии относится к скрипту 'new ActiveXObject ('Msxml2.DOMDocument.6.0')'. –

Смежные вопросы