命名空间在读取文本区域中的 XSLT 时被删除



我在项目目录中的XSLT文件中有以下样式表信息,正在读取此文件并将其存储在HTML的文本区域中,然后我使用javascript读取TextArea。

当我使用 document.getElementByID("TestAreaID").value 读取 IE9+ 浏览器中的文本区域时,它会自动删除命名空间,因此无法在 IE9+ 浏览器中生成 PDF。 当我在调试模式下添加命名空间时,它会在 IE9+ 浏览器中打开。

<textarea id="TestAreaID>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo="http://www.w3.org/1999/XSL/Format"
        xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"
        xmlns:svg="http://www.w3.org/2000/svg"
        xmlns:java="http://xml.apache.org/xslt/java"
        xmlns:xalan="http://xml.apache.org/xalan"
        xmlns:barcode="http://barcode4j.krysalis.org/ns"
        xmlns:pagematrix="http://phi.thc.com/pagematrix"
        xmlns:math="xalan://java.lang.Math" extension-element-prefixes="math" version="1.1">
        <xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/>
</textarea>

使用 document.getElementByID("TestAreaID").value 读取 javascript 中的文本区域后,仅返回以下信息

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" extension-element-prefixes="math" version="1.1">
        <xsl:output method="xml" omit-xml-declaration="no" indent="yes" version="1.0" doctype-system="http://www.w3.org/TR/2000/CR-SVG-20000802/DTD/svg-20000802.dtd" doctype-public="-//W3C//DTD SVG 20000802//EN"/>

我很困惑为什么它没有完全读取 TextArea 值并省略一些命名空间,但它在 Chrome、FireFox 和 IE8 浏览器中运行良好。

下面是 HTML 代码

<textarea id="TestAreaID" name="TestAreaID_index_0" style="display:none">
  $formInputData.getField("PrintControl").getValue()
</textarea>

getField() 是一个读取并返回 xsl 文件内容的静态方法,它正确返回 xsl 文件内容,但是当我在 javascript 命名空间中读取它时

被删除

这就是我们在javascript部分中所拥有的

 var xmlText = document.getElementById("TestAreaID").value;                                             
  xmlText = xmlText.replace(/~1/g, "~");  // This gets set back to ampersand later
  xmlText = xmlText.replace(/~2/g, "<");

  if (window.DOMParser)
  {
    parser=new DOMParser();
    _xmlDoc=parser.parseFromString(xmlText,"text/xml");
  }
  else // Internet Explorer
  {
    _xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    _xmlDoc.async="false";
    _xmlDoc.loadXML(xmlText); 
  }
document.getElementById("TestAreaID").value = xmlText;

我提出的问题在下面的链接中得到了明确的回答

https://dzone.com/articles/domparsers-parsefromstring

相关内容

  • 没有找到相关文章

最新更新