gpt4 book ai didi

javascript - 未定义 : undefined error when calling XSLTProcessor. 原型(prototype).importStylesheet

转载 作者:行者123 更新时间:2023-12-04 01:53:18 25 4
gpt4 key购买 nike

我想美化一些 XML,我发现了以下代码( in this answerJSFiddle )。我是这样修改的:

const xsltDoc = new DOMParser().parseFromString([
// describes how we want to modify the XML - indent everything
'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">',
' <xsl:output omit-xml-declaration="yes" indent="yes"/>',
' <xsl:template match="node()|@*">',
' <xsl:copy><xsl:apply-templates select="node()|@*"/></xsl:copy>',
' </xsl:template>',
'</xsl:stylesheet>',
].join('\n'), 'application/xml');
function prettifyXml(sourceXml) {
var xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');
var xsltProcessor = new XSLTProcessor();
// Error happens here:
xsltProcessor.importStylesheet(xsltDoc);
var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
var resultXml = new XMLSerializer().serializeToString(resultDoc);
return resultXml;
};

我在运行代码时遇到错误,但错误没有任何消息。在 Firefox 控制台中看起来像这样:

enter image description here

这是我在调试器中看到的:

enter image description here

原始答案中的 Fiddle 中也确实发生了错误。我想知道这是什么类型的错误以及如何修复它。

我加入了 Firefox 标签,因为我认为这不是正常的浏览器行为。我的版本是 61.0.2(64 位)。

最佳答案

就 XSLT 而言,您需要 version样式表的根元素上的属性,所以尝试 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> .这似乎修复了 importStylesheet 上的错误打电话,见https://jsfiddle.net/sgeryvyu/361/ .

另一方面,众所周知,Firefox/Mozilla 的 XSLT 处理器可以执行树到树的转换,因此 transformToDocument和 Mozilla 你不会得到 xsl:output 的任何序列化选项应用,这意味着尝试通过 XSLT 推送您的 DOM 树只会给您另一个没有所需缩进的 DOM 树。

关于javascript - 未定义 : undefined error when calling XSLTProcessor. 原型(prototype).importStylesheet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51989864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com