But others lack a wrapper collection and have only a single record element, which also lacks a namespace declaration, like so:</marc:collection></marc:record></marc:record>Some docs in the database have the following structure, with a wrapper collection element and two record elements:Hello,I have a small database of library catalog records that I am trying to run some simple queries on, but I'm running into a namespace problem.
<marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
<marc:record type="Bibliographic">
...
<marc:record type="Holdings">
...
<marc:record type="Bibliographic">
...
</marc:record>So, I run the following query (using the DBA query interface):
declare namespace marc = "http://www.loc.gov/MARC21/slim";
let $m := collection("marc-data")/marc:record[@type = "Bibliographic"]
return count($m)And the count returns 0. However, if I change the predicate in the let clause to:
let $m := collection("marc-data")/*[local-name() = "record"][@type = "Bibliographic"]the count returns 45.If I am declaring the namespace in my query prolog and associating it with the same prefix as the one used in my XML documents, why don't I get the desired prefix/namespace mapping? I'm probably missing something basic, but this didn't immediately make sense to me.Thank you,Tim--
Tim A. Thompson
Metadata Librarian (Spanish/Portuguese Specialty)
Princeton University Library