XQuery - Obtener default namespace de un campo o variable XML

Posted on
  • lunes, 23 de noviembre de 2009
  • by
  • Román
  • in
  • Etiquetas: , , , , , , ,
  • Después de dar unas cuantas vueltas, apremiado para resolver un store procedure que tenía que procesar un campo xml (usando sp_preparedocument y OpenXML) que podía tener distintos namespaces en distintos registros, es que me puse a buscar la forma de recuperar el namespace predeterminado de un xml y encontré que la forma es la siguiente.

    Select CampoXML.value('namespace-uri(/*[1])','VARCHAR(100)')
    u obviamente
    Select @variableXML.value('namespace-uri(/*[1])','VARCHAR(100)')
    Esto por ejemplo puede regresar:
    urn:proyecto-version-numero-1.1
    Otro ejemplo:
    SELECT CampoXML.value('local-name(/*[1])', 'varchar(100)'), CampoXML.value('namespace-uri(/*[1])','VARCHAR(100)') from tabla
    Donde tenemos que:
    local-name devuelve el nombre del elemento raiz
    y
    namespace-uri devuelve el namespace predeterminado.

    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea