Запрос файлов, сохраненных в eXist-db, с помощью XQuery - PullRequest
0 голосов
/ 30 декабря 2010

Я использовал одну базу данных XML eXist-db для тестирования XQuery.У меня есть коллекция xml под названием «media_data_101109.xml», и я поместил ее в директорию

/ db / wb / portfolio / media_data_101109.xml

Тогда яперешел к песочнице eXist, которая является графическим интерфейсом для выполнения XQuery, и набрал следующий XQuery:

let $mediaNodes := doc('db/wb/portfolio/media_data_101109.xml')
return $mediaNodes//media[contains(@product,"wb")]

, но не смог получить никаких результатов обратно.

Однако, если я добавлюимя сервера перед строкой URI, например:

 let $mediaNodes := doc('http://localhost:8080/exist/rest/db/portfolio/media_data_101109.xml')

Тогда оно работало нормально (хотя и немного медленно).

Как я помнил, первый XQuery работал отлично в прошлом, но со вчерашнего дня он не смог получить ничего, если я не укажу имя сервера в строке URI.

Может кто-нибудь дать мне представление о том, где что-то может пойти не так?Я думал, что могут быть некоторые проблемы с моими настройками порта?Так что eXist-db может не работать нормально? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 января 2011

Изменить

let $ mediaNodes: = doc ('db / wb / portfolio / media_data_101109.xml')

на

let $ mediaNodes: = doc ('/db/wb/portfolio/media_data_101109.xml')

0 голосов
/ 30 декабря 2010

Базовый URI из статического контекста используется для разрешения относительного URI.

Если ваш XQuery не имеет URI (потому что он построен динамически, потому что вы не сохранили его в качестве ресурса с помощьюGUI и т. Д.), Тогда вам необходимо подробно определить базовый URI.

с http://www.w3.org/TR/2010/REC-xquery-20101214/#id-base-uri-decl

[Определение: объявление base URI определяетБазовое свойство URI статического контекста.Свойство base URI используется при разрешении относительных URI в модуле.] Например, функция fn:doc разрешает относительный URI, используя базовый URI вызывающего модуля.

Ниже приведен пример базовойОбъявление URI:

declare base-uri "http://example.org";
...