我在项目目录中的 XSLT 文件中有以下 StyleSheet 信息,正在读取此文件并将其存储在 HTML 的 TextArea 中,然后我使用 javascript 读取 Textarea。
当我使用 document.getElementByID("TestAreaID").value 在 IE9+ 浏览器中读取文本区域时,它会自动删除 namespace ,因此无法在 IE9+ 浏览器中生成 PDF。当我在 Debug模式下添加 namespace 时,它会在 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>
在javascript中使用document.getElementByID("TestAreaID").value读取文本区域后,只返回以下信息
<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 中读取它时, namespace 被删除
这是我们在 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;
最佳答案
我提出的问题在下面的链接中得到了明确的回答
关于javascript - 在 TextArea 中读取 XSLT 时删除命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38300171/