updateXML() elemento contendo namespace e valor em atributo

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
williankleber
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 02 Abr 2008 2:40 pm
Localização: Joinville - SC
Contato:

Estou tentando atualizar em um XML um elemento que possui um namespace e o valor que irei atualizar é um atributo do elemento.

Seria mais simples se no mesmo elemento não houvesse diversos namespaces diferentes.

Esse é um trexo do XML que ilustra minha situação.

Selecionar tudo

<?xml version="1.0" encoding="ISO-8859-1"?>
<nmf:Mensagens xmlns:nmf="http://www.nmf.com/schemas" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nmf.com/schemas http://www.nmf.com/schemas/sample1.xsd">
<nmf:diversos_elementos>"diversos valores"</nmf:diversos_elementos>
</nmf:Mensagens>
Preciso alterar o caminho do SCHEMA que aponta para "http://www.nmf.com/schemas" para apontar para minha máquina local, ficando "http://localhost/XSD"

Seguindo as documentações da oracle cheguei a esse comando:

Selecionar tudo

UPDATE table_xml
   SET xml_data = UPDATEXML(xml_data
                           ,'/nmf:Mensagens/@xmlns:nmf/text()'
                           ,'http://localhost/schemas'
                           ,'nmf="http://www.nmf.com/schemas" xmlns="http://www.w3.org/2001/XMLSchema-instance"'
                           );
Alguém aí passou por isso? Irei aplicar isso na validação dos arquivos da TISS.

Aguardo retorno!
williankleber
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 02 Abr 2008 2:40 pm
Localização: Joinville - SC
Contato:

Ah, esqueci de dizer o erro que ocorre.

Se eu executar esse comendo o oracle me diz o Xpath (2° parametro do updateXML => '/nmf:Mensagens/@xmlns:nmf/text()') esta incorreto.

Creio que eu não esteja informando o xpath corretamente e esteja me perdendo nos namespaces.

Ah, esse xpath foi extraido do Altova XMLSpy Então creio que esteja correto (Esta no padrão da W3C), porém acredito que o ORACLE trabalhe diferente disso!
Responder
  • Informação