Как загрузить текстовый файл из XQuery? - PullRequest
0 голосов
/ 03 декабря 2010

Существует ли команда XQuery для загрузки текстового файла?

Я могу загрузить документ XML, выполнив следующие действия:

declare variable $text := doc("test.xml");

Но, похоже, это работает, только если test.xmlявляется правильно сформированным XML-документом.Я хочу загрузить обычный файл test.txt в строковую переменную.Примерно так:

declare variable $str as xs:string := fn:loadfile("test.txt");

Можно ли это сделать?

Я использую саксонский движок, но не могу найти ответ в документации по саксону.

Ответы [ 5 ]

2 голосов
/ 03 декабря 2010

Действительно, вы можете найти одну реализацию файловых функций в Zorba: http://www.zorba -xquery.com / doc / zorba-1.4.0 / zorba / xqdoc / xhtml / www.zorba-xquery.com_modules_file.html

2 голосов
/ 07 декабря 2010

XQuery 3.0 имеет функцию fn:unparsed-text (которая была изначально определена в XSLT), которая делает именно то, что вы хотите. XQuery 3.0 все еще находится в стадии разработки, но хотя процессоров XQuery 3.0 не так много, многие процессоры XQuery уже поддерживают эту функцию (включая Saxon).

1 голос
/ 03 декабря 2010

Для этого требуется EXPath.Спецификация для модуля XQuery File уже существует, который способен выполнять то, что вы описываете: Спецификация файлового модуля EXPath .

Пока не знаю, сколько существует реализаций.К сожалению, Саксон не реализовал это (или, пожалуйста, укажите мне на это).Пример реализации поставляется с zorba (см. XQDoc Site of Zorba ).Если вы хотите узнать, как начать работу с Zorba, вы можете обратиться к этому руководству: Начало работы с XQuery и Zorba .

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

Saxon, начиная с версии 9.2, имеет расширение fn: collection, которое можно использовать для чтения неразобранного текста. Вот пример:

    collection('file:///c:/TEMP?select=text.txt;unparsed=yes')

Это описано в разделе " Изменения в этом выпуске " для 9.2. Видимо, это не упоминается в документации библиотеки функций. Тем не менее, он работает хорошо, и я часто его использую.

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

XQuery по умолчанию (означает, что fn: namespace) не имеет методов доступа к файлу.

MarkLogic: xdmp: файловый-файл () xdmp: файловая система-каталог ()

Зорб: уже упоминалось пользователем 457056

Exist Существующий файловый модуль

...