Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义:调用XSLTProcessor.prototype.importStylesheet时出现未定义错误_Javascript_Firefox_Xslt_Domparser - Fatal编程技术网

Javascript 未定义:调用XSLTProcessor.prototype.importStylesheet时出现未定义错误

Javascript 未定义:调用XSLTProcessor.prototype.importStylesheet时出现未定义错误,javascript,firefox,xslt,domparser,Javascript,Firefox,Xslt,Domparser,我想美化一些XML,我发现了以下代码(,)。我这样修改它: 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 om

我想美化一些XML,我发现了以下代码(,)。我这样修改它:

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;
};
const xsltDoc=new DOMParser().parseFromString([
//描述如何修改XML-缩进所有内容
'',
'  ',
'    ',
'      ',
'    ',
'',
].join('\n'),'application/xml');
函数prettifyXml(sourceXml){
var xmlDoc=new DOMParser().parseFromString(sourceXml,'application/xml');
var xsltProcessor=new xsltProcessor();
//此处发生错误:
导入样式表(xsltDoc);
var resultDoc=xsltProcessor.transformToDocument(xmlDoc);
var resultXml=new XMLSerializer().serializeToString(resultDoc);
返回结果xml;
};
运行代码时出现错误,但该错误没有消息。在Firefox控制台中看起来是这样的:

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

原始答案中的错误也发生在小提琴中。我想知道这是什么类型的错误以及如何修复它


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

就XSLT而言,样式表的根元素上需要一个
version
属性,所以请尝试
。这似乎修复了
importStylesheet
调用上的错误,请参阅

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