Я хочу написать запрос, который возвращает определенный элемент в XML-документе, но когда я использую выражение пути для возврата элемента в документе (то есть за пределами узла документа), он всегда возвращает пустую последовательность.
Вот несколько первых строк XML, которые я хочу запросить:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
<?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>LMW Day Book, pp. 160-161</title>
Я могу запускать запросы на узлах документов. Например, следующее возвращает узлы документа в обратном алфавитном порядке:
for $file in collection("/db/apps/Step3_LMWdbk_Jana's_Files")
order by $file descending
return $file
Я также могу использовать функцию doc () для возврата одного узла документа. Однако я не могу использовать выражения пути для возврата узлов в пределах узла документа. Например, следующее возвращает пустую последовательность:
let $title := doc("/db/apps/Step3_LMWdbk_Jana's_Files")/TEI/teiHeader/fileDesc/titleStmt/title
return $title
Что я исключил:
Для дальнейшего тестирования я написал еще несколько запросов, в том числе один для доступа к самому внешнему элементу (то есть doc(...)/TEI
) и один для доступа ко всем элементам (то есть doc(...)//cell
): все они вернули пустую последовательность. Это говорит о том, что ошибки в выражениях пути не являются основной проблемой.
Я запускаю XQuery в редакторе XML oXygen. Я подключил базу данных eXist к oXygen и использую механизм XQuery, предлагаемый базой данных eXist. Я проверил, что я подключен к eXist, и что мой сценарий преобразования использует eXist в качестве преобразователя.