JavaScript 中 XSLTProcessor.transformToFragment 的空结果

问题描述 投票:0回答:1

我在 JavaScript 中使用 XSLT 转换 XML 数据时遇到问题。我的设置涉及获取 XML 数据和 XSLT 样式表,该样式表嵌入在我的 HTML 中的标签内。当我尝试使用 XSLTProcessor 转换 XML 时,结果为 null。当我从标记访问 XSLT 时会出现此问题,但当我在 JavaScript 代码中直接将 XSLT 指定为字符串时不会出现此问题。

html:

<script id="xslt-code" type="text/xsl"> <!-- XSLT content here --> </script>

js:

    async function fetchXMLAndApplyXSLT() {
    // Fetch XML data...
    const xsltCode = document.getElementById("xslt-code").textContent;
    const xslParser = new DOMParser();
    const xslStylesheet = xslParser.parseFromString(xsltCode, 'text/xml');
    const xsltProcessor = new XSLTProcessor();
    xsltProcessor.importStylesheet(xslStylesheet);
    const transformedXML = xsltProcessor.transformToFragment(xmlDoc, document);

    if (!transformedXML) {
        console.error('Transformation resulted in null');
    }
    // Further processing...
}

尝试的解决方案:

  1. 确保脚本标签具有 type="text/xsl"。
  2. 检查脚本是否在 DOM 完全加载后执行。
  3. 确认脚本标签的textContent返回正确的XSLT字符串。

尽管做出了这些努力,transformedXML 仍然为空。在 JavaScript 中直接将 XSLT 指定为字符串可以正常工作,但从标记中获取它则不行。

任何人都可以建议可能导致此问题的原因或如何解决它吗?

javascript xml xslt domparser
1个回答
0
投票

删除

<script ...>
<?xml version="1.0" encoding="UTF-8"?>
之间的换行符修复了我的错误

© www.soinside.com 2019 - 2024. All rights reserved.