似乎除了IE之外的所有浏览器在Javascript中进行XSLT转换时都省略了xml声明 - 即使样式表在输出标记中指定不应省略xml声明。
有没有办法防止这种情况发生?
答案 0 :(得分:0)
这是一个使用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);
&#13;