Oracle PLSQL: xmltype.transform vs xmltransform

Desde que movemos o banco de dados de 11.2.0.2.0 para 11.2.0.4.0xmltype.transform função tinha um comportamento específico.

O problema é que, antes de não funcionar bem: substituía todas as tags pela versão de abertura e fechamento (por exemplo, substituía<br /> com<br></br>), mas eu poderia viver com isso. Agora ele se comporta de maneira inversa (substitui tudo por uma tag) e cria um grande problema com<script></script> tag, porque esta tagdevo ser explicitamente fechado com um</script> caso contrário, o navegador acha que não está fechado, mesmo se estiver fechado,<script /> => todas as páginas da web estão corrompidas agora.

Exemplo:

declare
  xml      xmltype := new xmltype('<?xml version="1.0" encoding="ISO-8859-1"?><document></document>');
  xsl      xmltype := 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>');
begin
  dbms_output.put_line(xml.transform(xsl,null).getclobval());
end;

No 11.2.0.2.0, funciona assim:

<html><head><script src="jquery-1.11.1.min.js"></script></head><body><br></br></body></html>

No 11.2.0.4.0, ele funciona diferente:

<html>
  <head>
    <script type="text/javascript" src="jquery-1.11.1.min.js"/>
  </head>
  <body>
    <br/>
  </body>
</html>

Acho que o problema está na formatação, mas não configurei mais nada para ativá-lo ...

O que é interessante, eu encontreiEste artigo com outro problema, mas com a mesma solução alternativa que uma solução:

select xmltransform(xmltype('<?xml version="1.0" encoding="ISO-8859-1"?><document></document>'),
                    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 src="jquery-1.11.1.min.js"></script>
                                   </head>
                                   <body>
                                     <br />
                                   </body>
                                 </html>
                               </xsl:template>
                             </xsl:stylesheet>')) html
from dual

isso só funciona em todas as versões e fornece um resultado adequado (aquele com o dobro<br />, mas como eu disse, isso não importa para mim).

Na documentação do Oracle, nada é dito sobre a diferença nessas funções; eles até dizem muitas vezes que são as mesmas funções (Veja aqui)

Obviamente, usarei esta solução alternativa, mas, por favor, diga-me: é possível fazê-la funcionar novamente sem alterar o código?

Qual é a razão desse comportamento?

Agradeço antecipadamente.

questionAnswers(0)

yourAnswerToTheQuestion