如果我有一个空的XSL文档,如下所示:
<body>
<div id="myList">
</div>
</body>
如何访问div标签并将XSL附加到标签上?例如,我想在我的js代码中执行以下操作,但不输出任何内容。但是,如果我手动将innerHTML值插入div标签,则它可以工作:
document.getElementById("myList").innerHTML = `<xsl:value-of select="Movies/Authors/FirstName"/>`
我尝试使用不同的引用样式,但是似乎无法获得预期的输出。有没有办法解决?
最佳答案
假设您拥有XSLT样式表作为XML DOM文档以及支持XML元素上innerHTML
的浏览器的最新版本(我已经在Windows 10 Creators Update上成功使用最新版本的Chrome,Firefox和Edge进行了测试),则可以使用例如
var xslString = `<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="Root">
<div id="myList">
</div>
</xsl:template>
</xsl:stylesheet>`;
var xmlString = `<Root>
<Movies>
<Authors>
<FirstName>Steven</FirstName>
</Authors>
</Movies>
</Root>`;
var domParser = new DOMParser();
var xsltDoc = domParser.parseFromString(xslString, 'application/xml');
var xmlDoc = domParser.parseFromString(xmlString, 'application/xml');
var div = xsltDoc.querySelector('#myList');
div.innerHTML = `<xsl:value-of select="Movies/Authors/FirstName"/>`;
var proc = new XSLTProcessor();
proc.importStylesheet(xsltDoc);
document.getElementById('result').appendChild(proc.transformToFragment(xmlDoc, document));
<section>
<h1>Result</h1>
<div id="result"></div>
</section>