如果我有一个空的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>
  

10-04 16:57