相关疑难解决方法(0)

XQuery意外结束查询命名空间声明

我正在尝试执行此查询:

declare variable $doc as xs:string external;
declare namespace type4="http:///de/tudarmstadt/ukp/dkpro/core/api/segmentation/type.ecore";
fn:doc($doc)//type4:Lemma/@value
Run Code Online (Sandbox Code Playgroud)

在BaseX java驱动程序中.实际的代码段如下所示:

String queryString = "declare variable $doc as xs:string external; " +
        "declare namespace type4=\"http:///de/tudarmstadt/ukp/dkpro/core/api/segmentation/type.ecore\"; " +
        "fn:doc($doc)//type4:Lemma/@value";

Set<String> lemmata = new TreeSet<>();
try (ClientQuery query = this.clientSession.query(queryString))
{
    query.bind("$doc", this.getUriFromDocumentId(documentId));

    while (query.more())
    {
        String next = query.next();
        logger.info(next);
        lemmata.add(next);
    }

    return lemmata;
} catch (IOException e)
{
    e.printStackTrace();
    throw new QHException(e);
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外:

[XPST0003] Unexpected end of query: 'namespace type4...'
Run Code Online (Sandbox Code Playgroud)

在打电话时query.more().

我声明命名空间错了吗?java代码中的转义引号是否有错误?我不明白xquery从何处获取查询结束.

命名空间也在我查询的xml文档中声明.

编辑:this.getUriFromDocumentId(String documentId)只是预先设置数据库名称,以便uri完成并实际匹配我想要查询的文档.在上面的代码片段执行之前,我检查说该文档存在.

java xpath xquery basex

1
推荐指数
1
解决办法
405
查看次数

标签 统计

basex ×1

java ×1

xpath ×1

xquery ×1