Oracle 10g XSLT преобразование в HTML с DOCTYPE - PullRequest
0 голосов
/ 24 февраля 2011

Я пытаюсь создать HTML-страницу с помощью XSLT, но Oracle не генерирует! DOCTYPE. Работает на других инструментах XSL. Вот что я пытаюсь сделать:

declare
    v_xml XMLType;
    v_xsl XMLType;
    v_result XMLType;
begin

    v_xml := XMLType('<?xml version="1.0" encoding="utf-8"?><bindings></bindings>');
    v_xsl := XMLType('<?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="/">
        <html>
            <head>
                <title>Saluton</title>
            </head>
            <body>
                <p>Saluton</p>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>');

    v_result := v_xml.transform(v_xsl);

    /* According to the docs, XMLTransform would be equivalent to the above.
    -- But I get an error message stating that I must declare XMLTransform.
    -- Why? What kind of declaration/import is expected? */
    --v_result := XMLTransform(v_xml, v_xsl);

    dbms_output.put_line(v_result.GetClobVal());
end;

Вывод:

<html>
  <head>
    <title>Saluton</title>
  </head>
  <body>
    <p>Saluton</p>
  </body>
</html>

Есть ли лучшее решение, кроме конкатенации типа документа, как в:

'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">'
|| v_result.GetClobVal()?
...