Модуль импорта в XQuery (PHP + Zorba)
Я пишу приложение в php для запроса огромных XML-файлов (ГБ) с процессором Zorba XQuery (v2.6.0), и для этого я пытаюсь использовать поток XML, описанный здесь:
http://www.zorba-xquery.com/html/entry/2012/05/31/XML_Streaming
Вот код:
<?php
require_once 'XQueryProcessor.php';
$xquery = new XQueryProcessor();
$query = '
import module namespace file = "http://expath.org/ns/file";
import module namespace p = "http://www.zorba-xquery.com/modules/xml";
import schema namespace opt = "http://www.zorba-xquery.com/modules/xml-options";:)
let $raw-data as xs:string := file:read-text("C:\TEMP\traces\2011_03\Orders201103.xml")
let $pages := p:parse($raw-data, <opt:options>
<opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>
</opt:options>)
for $page in $pages
return
$page
';
$xquery->importQuery($query);
$result = $xquery->execute();
echo $result;
?>
Код выше не работает. Нет кодов ошибок, нет следов стека, просто ничего не возвращает в веб-браузер.
Я думаю, что проблема в том, что он не импортирует пространства имен, потому что, когда я выполняю простой запрос без импорта, он делает это успешно, а когда я добавляю предложение импорта, он терпит неудачу. Когда это терпит неудачу, веб-браузер показывает мне, что если URI не нашел ресурс, как сказано здесь:
Если после поиска по всем каталогам путей URI не найдено совпадений для данного URI, Zorba по умолчанию вернется к интерпретации URI как URL и загрузке ресурса через HTTP (при условии, что URI имеет схему http:)
http://www.zorba-xquery.com/html/documentation/2.7.0/zorba/uriresolvers
Я также посмотрел в папку установки Zorba и способ преобразования URI импорта (по ссылке выше), и кажется, что все в порядке.
Например, файловый модуль находится по следующему пути (будьте осторожны, это основной модуль):
C: \ Program Files \ Zorba XQuery Processor 2.6.0 \ share \ zorba \ uris \ core \ 2.6.0 \ org \ expath \ ns \ file.xq
Я занимаюсь разработкой под Windows и использую стандартную установку WAMP для Apache и PHP.
Кто-нибудь знает, что не так с моим кодом или средой?
редактировать: я только что заметил, что запрос работает нормально из командной строки, так что, возможно, это не преобразование URI