Chrome createAttribute 格式不正确的前缀

Chrome createAttribute malforms prefix

我有一段简单的 javascript 可以将 exslt 名称空间添加到 xsl 文档。但是,Chrome 和 Firefox 对此的处理方式不同。 Firefox 将使用完整

将命名空间正确添加到根目录

xmlns:exsl="http://exslt.org/common"

Chrome 然而只是在

exsl="http://exslt.org/common"

你看出区别了吗? 'xmlns' 在后者中消失了,Chrome 本身认为 xslt 格式错误:它 returns 转换时为空!如果前缀正确,即 xmlns:exsl 然后 Chrome 喜欢它。在 Firefox 中尝试使用下面的 fiddle,然后使用 Chrome 来查看区别。这是简单的代码

var styleString = '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><div>hi</div></xsl:template></xsl:stylesheet>';
var xslDoc = (new DOMParser()).parseFromString(styleString, "text/xml");
var docRoot = xslDoc.documentElement;
a = document.createAttribute("xmlns:exsl");
a.nodeValue = "http://exslt.org/common";
docRoot.setAttributeNode(a);
var xmls1 = new XMLSerializer();
var outputXHtmlString = xmls1.serializeToString(xslDoc);
document.getElementById("content").innerText = outputXHtmlString;

使用这个

 var styleString = '<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform" xmlns:exsl="exslt.org/common"><xsl:template match="/"><div>hi</div></xsl:template></xsl:stylesheet>