我得到以下错误,任何人都可以帮我解决它。
ORA-31011:XML解析失败ORA-19202:错误 发生在XML处理支持LPX-00663: VM 字符串堆栈溢出
我可以在某些网站上看到解决方案为在XmlXslVMCreate()中增加VM StringStack的大小,但没有给出如何执行此操作的步骤。
答案 0 :(得分:0)
来自Oracle文档。
PL / SQL包DBMS_XSLPROCESSOR提供了方便快捷的方法 将单个样式表应用于多个文档的方法。该 这个包的性能优于方法transform(), 因为样式表只被解析一次。
我遇到了同样的问题。解决方法是。这样的事情。
DECLARE
v_out_clob CLOB;
v_in_xml XMLTYPE;
v_in_xsl XMLTYPE;
ctx_xslproc dbms_xslprocessor.processor;
v_in_xsl_dd dbms_xmldom.DOMDocument;
v_in_xml_dd dbms_xmldom.DOMDocument;
v_styleshet dbms_xslprocessor.stylesheet;
BEGIN
v_in_xml := new xmltype('<?xml version="1.0" encoding="ISO-8859-1"?><document></document>');
v_in_xsl := new xmltype('<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<head>
<script type="text/javascript" src="jquery-1.11.1.min.js"></script>
</head>
<body>
<br />
</body>
</html>
</xsl:template>
</xsl:stylesheet>');
ctx_xslproc := dbms_xslprocessor.newProcessor;
v_in_xsl_dd := dbms_xmldom.newDOMDocument(v_in_xsl);
v_in_xml_dd := dbms_xmldom.newDOMDocument(v_in_xml);
v_styleshet := dbms_xslprocessor.newStyleSheet(v_in_xsl_dd, NULL);
dbms_lob.createtemporary(v_out_clob,FALSE);
dbms_xslprocessor.processXSL(ctx_xslproc,v_styleshet,v_in_xml_dd,v_out_clob);
dbms_xmldom.freeDocument(v_in_xsl_dd);
dbms_xmldom.freeDocument(v_in_xml_dd);
dbms_xslprocessor.freeProcessor(ctx_xslproc);
dbms_output.put_line(v_out_clob);
END;