9

I'm using eXist-DB to store XML documents. Here's a sample XML file with the namespace info:

<?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>

The query is :

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

I tried to declare the third namespace within the query but it doesn't seem to work.

1

1 Answer 1

11

The third namespace attribute (xmlns="urn:hl7-org:v3") binds the default namespace.

The syntax to define the default namespace for elements in XQuery is:

declare default element namespace "urn:hl7-org:v3";

However, redefining the default element namespace prevents your query from testing for nodes with no namespace!

A better way to do this is perhaps to bind a new prefix to this namespace:

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
Sign up to request clarification or add additional context in comments.

2 Comments

@Oliver If an XML document has a default namespace, is it possible for any nodes to have no namespace?
XML lets you use xmlns="" to undeclare the default namespace.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.