Oracle 11g中的XSL转换失败

时间:2015-12-04 19:29:18

标签: xml oracle xslt oracle11g oracle10g

我使用XSLT转换从XML数据创建html内容。转换在Oracle 10g中完美运行。但是,它无法在Oracle 11g中生成html内容。给出了跟随错误

LPX-00660:不是格式良好的文件或外部实体。

以下是示例代码

declare
output clob;
   begin
       select XMLTRANSFORM(XMLType('<?xml version="1.0" encoding="utf-8"?>' ||
   '<DATA>' ||
   '    <ROWSET>' ||
   '        <ROW>' ||
   '            <TIME_CURRENT>04-DEC-2015 06:42 AM</TIME_CURRENT>' ||            
   '        </ROW>' ||
   '    </ROWSET>' ||
   '</DATA>'), '<?xml version="1.0" encoding="utf-8"?>' ||
   '<xsl:stylesheet version="1.0"' ||
   '    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">' ||
   '   <xsl:output method="html" encoding="UTF-8" indent="yes"' ||
   '        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"' ||
   '        doctype-system="http://www.w3.org/TR/html4/loose.dtd" />' ||
   '    <xsl:template match="DATA">' ||
   '        <p>' ||
   '            Time Now:' ||
   '            <xsl:value-of select="ROWSET/ROW/TIME_CURRENT" />' ||
   '        </p>' ||
   '            <xsl:call-template name="create_table"></xsl:call-template>'        ||
   '    </xsl:template>' ||
   '    <xsl:template name="create_table">' ||
   '            <br/>' ||
   '            Total row count = <xsl:value-of select="count(ROWSET/ROW)"        />' ||
   '    </xsl:template>' ||
   '</xsl:stylesheet>').getClobval() into output from dual;
   dbms_output.put_line(output);
   end;

我发现转换在<br/>标记失败了。

   '    <xsl:template name="create_table">' ||
   '            <br/>' ||
   '            Total row count = <xsl:value-of select="count(ROWSET/ROW)"        />' ||
   '    </xsl:template>'

当我删除它时,转换工作正常。因为,输出需要为html,从代码中删除任何此类标记对我来说不是解决方案。

Oracle 10g版本= 10.2.0.5.0

Oracle 11g版本= 11.2.0.4.0

任何帮助将不胜感激。

由于

0 个答案:

没有答案