2017-02-07 1 views
2

У меня есть следующая строка кода для преобразования XMLфрагмента из двух документов, этот код работает в Firefox и Chrome без проблем, но всякий раз, когда я использую это в Edge, он возвращается нуль (SchemaStylesheetObj является XSLTProcessor объект):XSLTProcessor.transformToFragment() возвращает null на границе Microsoft

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 это время генерируется с использованием следующих l ине:

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

Вы хотите увидеть содержимое xmldoc и ownerDocument, это то, что вы имели в виду? –

+0

Итак, вы имели в виду, что мне нужно также разместить содержимое этих объектов XML, а затем ... извините, я не знаю, что важно в тех файлах, которые могут представлять интерес. –

ответ

0

Я недавно столкнулся с этой проблемой, работая над тем, чтобы сделать мое приложение совместимым с EDGE, и через несколько часов я нашел его решение и первопричину.

Корневая причина неудачного преобразованияToFragment - это пространство имен, используемое в вашей таблице стилей.

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

удалите это пространство имен и использовать

xmlns:msxsl="urn:schemas-microsoft-com:xslt" 

Я надеюсь, что это решит вашу проблему.

Смежные вопросы