Получение имени файла XML-файла с помощью XQuery

Я храню свои объекты в базе данных eXist XML и использую имя файла (идентификатор ресурса) в качестве идентификатора объекта.

Пример:

String xquery = "for $movie in collection('/db/movie')//movie "
    + "return $movie";

После выполнения этого запроса я получаю org.xmldb. api.base.Resource , содержимое которого я использую для создания объекта. Когда я хочу установить идентификатор этой сущности, я делаю это так:

dvd.setId(rs.getId());

Проблема в том, что если я выполняю такой запрос:

String xquery = "for $dvd in collection('/db/dvd')//dvd "
        + "return "
        + "{$dvd/title}"
        + "{$dvd/type}"
        + "{"
        + ""
        + " {"
        + " for $movie in $dvd/content//movie"
            + "     let $movieIn := doc(concat(\"/db/movie/\", $movie/@id))/movie"
        + "     return "
            + "                    "
            + "                          {$movieIn/name}"
            + "                          {$movieIn/director}"
            + "                          {$movieIn/year}"
            + "                          {$movieIn/country}"
            + "                          {$movieIn/actors}"
            + "                          {$movieIn/genres}"
            + "                    "
        + " }"
        + ""
        + "}"
        + "";

rs.getId () возвращает null . Я также пробовал метод getDocumentId () из этого класса , но он также возвращает null . Есть ли способ заставить его возвращать идентификатор ресурса (который является именем файла, в котором хранится объект)?

Если это невозможно, есть ли способ (функция или что-то в этом роде) получить файл имя файла, с которым я работаю (я имею в виду, что база данных извлекает данные) с помощью запроса XQuery?

Я попытался заменить эту строку:

+ "return "

на это:

+ "return "

(чтобы я мог получить имя файла из атрибута), но имя файла не возвращается.

8
задан joewiz 25 December 2016 в 19:26
поделиться