- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 BaseX XQJ API 在我的 Java 应用程序中对 XML 文件执行 xquery 查询。我构建的以下 xquery 很好地生成了我想要的输出:
let $doc := doc("eprints")
for $i in distinct-values($doc//issn)
let $jn := $doc//paper[issn = $i]/publication
where (count(distinct-values($jn)) > 1)
return <issn num="{$i}">"{$jn}"</issn>
通过在 BaseX 应用程序中测试此查询使自己确信它有效后,我用 Java 代码实现了此查询。
public static void main(String[] args) throws XQException{
XQDataSource ds = new BaseXXQDataSource();
ds.setProperty("serverName", "localhost");
ds.setProperty("port", "1984");
ds.setProperty("user", "xxxx");
ds.setProperty("password", "xxxxx");
ds.setProperty("databaseName", "eprints");
XQConnection conn = ds.getConnection("admin", "admin");
XQExpression xqe = conn.createExpression();
XQResultSequence result = xqe.executeQuery("let $doc := doc(\"eprints\")"+
"for $i in distinct-values($doc//issn)"+
"let $jn := $doc//paper[issn = $i]/publication"+
"where (count(distinct-values($jn)) > 1)"+
"return <issn num='{$i}'>'{jn}'</issn>"
);
}
然而,这段代码导致了一个错误,表明找不到 $jn 变量:线程“main”中的异常 javax.xml.xquery.XQQueryException:[XPST0008]: undefined variable $jn。查看查询时,可以看到 $jn 实际上是在 for 语句中的 let 语句中定义的。
但是,当我在使用 $jn 的地方直接插入分配给 $jn 的表达式时,代码确实可以正常工作:
public static void main(String[] args) throws XQException{
XQDataSource ds = new BaseXXQDataSource();
ds.setProperty("serverName", "localhost");
ds.setProperty("port", "1984");
ds.setProperty("user", "admin");
ds.setProperty("password", "admin");
ds.setProperty("databaseName", "eprints");
XQConnection conn = ds.getConnection("admin", "admin");
XQExpression xqe = conn.createExpression();
XQResultSequence result = xqe.executeQuery("let $doc := doc(\"eprints\")"+
"for $i in distinct-values($doc//issn)"+
"where (count(distinct-values($doc//paper[issn = $i]/publication)) > 1)"+
"return <issn num='{$i}'>'{$doc//paper[issn = $i]/publication}'</issn>"
);
}
似乎 BaseX XQJ API 无法处理在 for 语句中包含 let 语句的查询。有谁知道错误的原因是什么?
最佳答案
原始查询中的 publication
和 where
之间没有空格(被字符串连接伪装),因此这两行都被解释为轴路径和动态函数应用程序:
let $jn := $doc//paper[issn = $i]/publicationwhere (count(distinct-values($jn)) > 1)
这会产生错误,因为递归变量定义是不允许的。只需在 publication
后插入一个空格,就可以正常运行了。
关于java - undefined variable 上的 BaseX XQJ API 错误,而变量已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532735/
我正在尝试使用 Java BaseX XQJ API 将数据插入 到 XML 文件中。 代码如下(忽略导入): public class BaseXTest { public static void
我有以下java代码。我正在使用 XQJ 编写一个使用 XQJ api 的测试 XQuery 程序。我已经下载了 JSR-000225 XQuery API for Java 1.0 Final Re
我需要在我的 java 应用程序中使用 XQJ 查询 xml 数据。我想知道 xml/xquery 处理器的选项。 我探索并了解了: Oracle 11g 附带的 Oracle xquery 处理器
maven 仓库是 added正确吗?是必需的吗? 如果是这样,添加xqj的语法是什么? 异常(exception): thufir@dur:~/NetBeansProjects/helloWorld
我正在使用 BaseX XQJ API 在我的 Java 应用程序中对 XML 文件执行 xquery 查询。我构建的以下 xquery 很好地生成了我想要的输出: let $doc := doc("
为了模拟 XQuery 更新中的自动增量值,以下工作正常,假设 第一次运行时: let $count := /root/@count return ( insert node into /roo
我已经尝试过:- 撒克逊XQJ XQJ 与 BaseX XQJ 与 Sedna XQJ 与 eXist 我无法在其中任何一个中使用 XQuery 3.1。有什么线索吗? 最佳答案 您需要详细说明您做了
我是一名优秀的程序员,十分优秀!