XQuery中的导入模块(PHP + Zorba)

时间:2012-11-27 11:48:13

标签: php xpath xquery zorba

我正在用PHP编写一个应用程序来使用Zorba XQuery处理器(v2.6.0)查询大型xml文件(GB)并且这样做我正在尝试使用此处描述的XML Streaming:

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;
?> 

上面的代码不起作用。没有错误代码,没有堆栈跟踪,根本不会向Web浏览器返回任何内容。

我认为问题在于它没有导入名称空间,因为当我执行一个没有导入的简单查询时,它会成功地执行它,当我添加导入语句时,它会失败。当它失败时,网络浏览器会告诉我,如果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并使用Apache和PHP的标准WAMP安装。

有人知道我的代码或环境有什么问题吗?

编辑:我刚刚注意到查询从命令行运行正常,所以可能不是URI转换

0 个答案:

没有答案