Internet Explorer 9 и XSLT - PullRequest
       5

Internet Explorer 9 и XSLT

2 голосов
/ 04 мая 2011

У меня есть некоторый код JavaScript, который на основе используемого вами браузера применяет XSL-преобразование к полученному XML. Это работает во всех браузерах, кроме IE9. Хотя в логике IE есть условие (использовать tranformNode вместо new XSLTProcessor () ), может показаться, что IE9 больше не определяет transformNode.

Я искал какое-то время, чтобы понять, является ли это проблемой для других без удачи. Что озадачивает и заставляет меня думать, что я делаю что-то ужасно неправильно.

Вот код, который работает с IE7 / 8 (из jstree - хотя для ясности он немного изменен):

xm = document.createElement('xml');
xs = document.createElement('xml');
xm.innerHTML = xml;
xs.innerHTML = xsl;
xm.transformNode(xs.XMLDocument)

Все, что я мог найти относительно IE9 и XSLT, это то, что «оно было изменено, чтобы быть более совместимым со стандартами». Я думаю, что это было связано с тем, как выполнялись преобразования, а не с API.

1 Ответ

3 голосов
/ 05 мая 2011

От автора jsTree (который использует XSLT-преобразования для отображения исходных данных XML в дереве):

if(window.ActiveXObject) {      
   var xslt = new ActiveXObject("Msxml2.XSLTemplate");
   var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
   var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
   xmlDoc.loadXML(xml);
   xslDoc.loadXML(xsl);
   xslt.stylesheet = xslDoc;
   var xslProc = xslt.createProcessor();
   xslProc.input = xmlDoc;
   xslProc.transform();
   callback.call(null, xslProc.output);
   return true;
}

http://code.google.com/p/jstree/issues/detail?id=907&q=IE9&colspec=ID%20Type%20Status%20Priority%20Owner%20Summary

...