Пространства имен в документах XML в eXist-db возвращают пустые вызовы API - PullRequest
0 голосов
/ 19 июня 2019

У меня есть eXist-db с коллекцией документов XML.Все документы имеют пространство имен в верхнем узле, которое выглядит следующим образом

<TEI xmlns="http://www.tei-c.org/ns/1.0" version="5.0" xml:id="No-MM_N0001-01">

Когда я пытаюсь запросить документы для получения информации в // div / p из REST API, я получаю пустой ответ:

Request:
/data?_query=%2F%2Fdiv%2Fp

Response:
<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="0" exist:start="1" exist:count="0" exist:compilation-time="3" exist:execution-time="3"/>

Но когда я редактирую один из документов, удаляя xmlns, я получаю данные из отредактированного документа.

Request:
/data?_query=%2F%2Fdiv%2Fp

Response:
<exist:result xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:hits="2" exist:start="1" exist:count="2" exist:compilation-time="1" exist:execution-time="1">
<p>
Jeg fik ikke sove –
<del rend="overstrike">j</del>
så den
<lb/>
lille striben mellem ridauerne lysne
<lb/>
mere og mere –
<del rend="overwritten">v</del>
jeg vendte mig hed
<lb/>
i sengen – Det var
<del rend="overstrike">jo</del>
så tydeli –

Итак, вопрос в том, как я могу запроситьXML-документы в моей коллекции без редактирования пространства имен во всех них?

1 Ответ

0 голосов
/ 19 июня 2019

У вас есть много вариантов.Несколько слов о моей голове:

  1. Вы можете отправить XPath //*:div/*:p В основном используется префикс подстановки, что означает "любое пространство имен".

  2. Вместо использования HTTP GET с _query, вы можете HTTP Опубликовать XQuery в REST API, это позволит вам объявить привязку пространства имен в вашем XQuery и использовать соответствующий XPath, например

    declare namespace tei = "http://www.tei-c.org/ns/1.0";
    
    //tei:div/tei:p
    
  3. Аналогично (2), но вы можете предварительно сохранить свой XQuery в базе данных в виде файла, а затем вызвать его через HTTP GET в API REST, что приведет к тому, что XQuery будетвыполнено.

Возможны и другие варианты ...

...