【发布时间】:2014-11-13 21:45:52
【问题描述】:
似乎除了 IE 之外的所有浏览器在 Javascript 中进行 XSLT 转换时都省略了 xml 声明——甚至样式表在输出标记中指定不应省略 xml 声明。
有没有办法防止这种情况发生?
【问题讨论】:
-
为什么声明与您相关?
标签: javascript xml xslt browser
似乎除了 IE 之外的所有浏览器在 Javascript 中进行 XSLT 转换时都省略了 xml 声明——甚至样式表在输出标记中指定不应省略 xml 声明。
有没有办法防止这种情况发生?
【问题讨论】:
标签: javascript xml xslt browser
这是一个使用 Firefox 为我输出 XML 声明的测试用例:
var xmlDoc = new DOMParser().parseFromString('<root>foo</root>', 'application/xml');
var xslDoc = new DOMParser().parseFromString([
'<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">',
'<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="no"/>',
'<xsl:template match="/"><xsl:copy-of select="."/></xsl:template>',
'</xsl:stylesheet>'].join('\n'), 'application/xml');
var xsltProc = new XSLTProcessor();
xsltProc.importStylesheet(xslDoc);
var resultDoc = xsltProc.transformToDocument(xmlDoc);
var serializedXml = new XMLSerializer().serializeToString(resultDoc);
console.log(serializedXml);
var pre = document.createElement('pre');
pre.textContent = serializedXml;
document.body.appendChild(pre);
【讨论】: