Chrome createAttribute格式错误的前缀

时间:2019-07-16 03:20:53

标签: javascript ajax google-chrome firefox exslt

我有一个简单的javascript片段,它向xsl文档添加了exslt命名空间。但是,Chrome和Firefox处理此问题的方式有所不同。 Firefox将使用完整的

将名称空间正确地添加到根目录中

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

Chrome只是塞进

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

您看到区别了吗? 'xmlns'在后者中消失了,Chrome本身认为xslt格式不正确:在转换时它返回null!如果您输入正确的前缀,即xmlns:exsl,然后Chrome会喜欢它。尝试使用下面的fiddle和Firefox,然后再使用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;

1 个答案:

答案 0 :(得分:0)

使用此

 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>