with - xml xsl examples
xQuery en un archivo XML con espacio de nombres (1)
Estoy usando eXist-DB para almacenar documentos XML. Aquí hay un archivo XML de muestra con la información del espacio de nombres:
<?xml version="1.0" encoding="utf-8"?>
<ClinicalDocument xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:hl7-org:v3">
<name>
<family>Smith</family>
<middle>Blade</middle>
<first>John</first>
</name>
<name>
<family>Frost</family>
<middle>Bill</middle>
<first>Conrad</first>
</name>
</ClinicalDocument>
La consulta es:
declare namespace xsd = "http://www.w3.org/2001/XMLSchema";
declare namespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
for $x in doc("/db/HL7/cda2.xml")/ClinicalDocument/name
return $x/family
Traté de declarar el tercer espacio de nombres dentro de la consulta, pero parece que no funciona.
El tercer atributo de espacio de nombres (xmlns = "urn: hl7-org: v3") vincula el espacio de nombres predeterminado.
La sintaxis para definir el espacio de nombres predeterminado para los elementos en XQuery es:
declare default element namespace "urn:hl7-org:v3";
Sin embargo, la redefinición del espacio de nombres de elementos predeterminado evita que su consulta pruebe nodos sin espacio de nombres.
Una mejor forma de hacerlo es tal vez vincular un nuevo prefijo a este espacio de nombres:
declare namespace xsd = "http://www.w3.org/2001/XMLSchema";
declare namespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
declare namespace h17 = "urn:h17-org:v3";
for $x in doc("/db/HL7/cda2.xml")/h17:ClinicalDocument/h17:name
return $x/h17:family