开发者

xQuery on XML file with namespace

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&g开发者_StackOverflow社区t;
            <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.


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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜