我有以下代码行来转换来自两个文档的XMLfragment,这段代码在Firefox和chrome中运行没有问题,但每当我在Edge中使用它时,它返回null(SchemaStylesheetObj是一个XSLTprocessor对象): / p>
xmlFragment = SchemaStylesheetObj.transformToFragment(xmldoc, ownerDocument);
我的xmldoc和ownerDocument都有正确的textContents,下面是我用于转换的XSLT文件的一部分:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:exsl="http://exslt.org/common"
xmlns:func="http://exslt.org/functions"
xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
xmlns:dyn="http://exslt.org/dynamic"
xmlns:saxon="http://icl.com/saxon"
xmlns:dtbl="http://docbook.sourceforge.net/dtbl"
xmlns:ptbl="http://nwalsh.com/xslt/ext/xsltproc/python/Table"
xmlns:stbl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Table"
xmlns:xtbl="com.nwalsh.xalan.Table"
xmlns:lxslt="http://xml.apache.org/xslt"
xmlns:str="http://exslt.org/strings"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:t="http://thresholds.data"
xmlns:lip="http://listItemPrefix.data"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
extension-element-prefixes="str"
version="1.0">
....
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" encoding="UTF-8"/>
<xsl:preserve-space elements="*" />
<xsl:template name="debug_spec_version">
<div class="debug_pane xslt_debug">Processed with 2361E v5.00 style sheet</div>
</xsl:template>
</xsl:stylesheet>
使用以下行生成ownerDocument:
var ownerDocument = document.implementation.createDocument("", "test", null);
正在生成xmldoc:
var xmldoc = xmlparser.parseFromString(xmlContents, "text/xml");
xmlContents的前几行如下:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--Arbortext, Inc., 1988-2013, v.4002-->\n<!DOCTYPE macwp PUBLIC \"-//USA-DOD//DTD MIL-STD-2361 TM Assembly REV E 5.0 20131101//EN\"\n \"production.dtd\">\n<?Pub Inc?>\n<macwp chngno=\"0\" wpno=\"A0002\">\n<wp.metadata><portionmark/>\n<proponent>\n<name></name>\n<address><city></city><state></state></address>\n</proponent>\n<tracking>\n<change.history>\n<author>\n<name>vansycke</name>\n<proponent>\n<name></name>\n<address><city></city><state></state></address>\n</proponent>\n</author>
如何解决此问题?
答案 0 :(得分:0)
我最近在努力使我的应用程序与EDGE兼容时遇到了这个问题,几个小时后我找到了它的解决方案和根本原因。
transformToFragment失败的根本原因是样式表中使用的以下命名空间。
xmlns:exsl="http://exslt.org/common"
请删除此命名空间并使用
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
我希望这能解决你的问题。