Как загрузить XML (с xslt), сгенерированный JavaScript, в IFRAME? - PullRequest
0 голосов
/ 19 августа 2010

Я генерирую некоторый простой XML через javascript, а затем использую doc.open, doc.write и doc.close для записи xml в iframe.

Моя проблема в том, что в iframeон не отображается должным образом.Это похоже на рендерер xslt, который не включается, и пытается отобразить его в формате html (просто показывая значения текстового узла).

Сам xml корректен, и при вставке в файл xml и загрузке отображается правильнос xslt.

Это вопрос о том, чтобы как-то сказать браузеру, какой тип данных сгенерированный xml (и как мне это сделать?) или есть ли способ перевести его в режим рендеринга xslt?

Ответы [ 3 ]

2 голосов
/ 19 августа 2010

Я думаю, что лучшим подходом было бы запустить преобразование с помощью javascript, а затем добавить результат в DOM. Например, от http://www.w3schools.com/xsl/xsl_client.asp

<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("cdcatalog.xml");
xsl=loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>
1 голос
/ 19 августа 2010

Если поддерживается, URL данных может быть полезен.

iframe.src = 'data:text/xml,' + encodeURI('<x m="l"/>');
0 голосов
/ 19 августа 2010

Настройка типа документа для вывода: http://www.bernzilla.com/item.php?id=763

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...