首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助从basex独立执行XQuery

需要帮助从basex独立执行XQuery
EN

Stack Overflow用户
提问于 2014-10-16 15:21:36
回答 1查看 710关注 0票数 0

我在ubuntu 14.04上使用Basex 8.0测试版

我的数据库包含XML文档,其元素如下

20141004 193843 -0400

我可以在BaseX gui中使用以下xquery更新所有带有连接时间戳的消息时间戳节点

声明变量$data := db:open('testdb');(:查找带时间的所有元素并返回$n的父元素:),在$$n//./ time /.返回(如果(存在($n/utc-时间戳))然后()插入节点{fn:concat ( fn:substring($n/date,1,4),"-",fn:子字符串($n/date,5,2),"-",fn:子字符串($n/date,7,2),"T",fn:子字符串($n/time,1,2),":",fn:子字符串( $n /time,3,2),":",fn:子字符串($n/time,5,2),fn:子字符串($n/utc-偏移,1,3),fn:子字符串($n/utc-偏移,4,2)}

我将查询嵌入到basex脚本test_bxs.xqy中,如下所示:

声明变量$data := db:open('testdb');(:查找带时间的所有元素并返回$n的父元素:),在$$n//./ time /.返回(如果(存在($n/utc-时间戳))然后()插入节点{fn:concat ( fn:substring($n/date,1,4),"-",fn:子字符串($n/date,5,2),"-",fn:子字符串($n/date,7,2),"T",fn:子字符串($n/time,1,2),":",fn:子字符串( $n /time,3,2),":",fn:子字符串($n/time,5,2),fn:子字符串($n/utc-偏移,1,3),fn:子字符串($n/utc-偏移,4,2)}

并按以下方式执行:

$ basex -d -c test_bxs.xqy org.basex.query.QueryException:语法:查询at org.basex.core.parse.XMLParser.check(XMLParser.java:313) at org.basex.core.parse.XMLParser.command(XMLParser.java:167) at org.basex.core.parse.XMLParser.parse(XMLParser.java:47) at org.basex.core.parse.CmdParser.parse(CmdParser.java:57) at org.basex.core.parse.CommandParser.parse(CommandParser.java:75) at org.basex.core.parse.CommandParser.parse(CommandParser.java:54) at org.basex.core.CLI.execute(CLI.java:88) at org.basex.core.CLI.execute(CLI.java:77) at org.basex.BaseX.(BaseX.java ):85) at org.basex.BaseX.main(BaseX.java:42) org.basex.core.BaseXException:语法:查询org.basex.core.CLI.execute(CLI.java:93) at org.basex.core.CLI.execute(CLI.java:77) at org.basex.BaseX.(BaseX.java:85) at org.basex.BaseX.main(BaseX.java:42) by: org.basex.query语法:查询org.basex.core.parse.XMLParser.error(XMLParser.java:323) at org.basex.core.parse.XMLParser.check(XMLParser.java:313) at org.basex.core.parse.XMLParser.command(XMLParser.java:167) at org.basex.core.parse.XMLParser.parse(XMLParser.java:47) at org.basex.core.parse.CmdParser.parse(CmdParser.java:57)在org.basex.core.parse.CommandParser.parse(CommandParser.java:75) at org.basex.core.parse.CommandParser.parse(CommandParser.java:54) at org.basex.core.CLI.execute(CLI.java:88) .3更多的语法:查询

如果删除insert语句并插入db:output("."),脚本将从命令行运行良好,但当然不会更新数据库。

声明变量$data := db:open('testdb');(:查找带时间的所有元素并返回$n的父元素:),在$$n//./ time /.返回(如果(存在($n/utc-时间戳))然后(db:output("."))(db:output("."))

由于脚本在GUI中按预期执行,所以当从命令行使用时,我希望得到类似的结果。

如能提供任何帮助,将不胜感激。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 15:40:43

BaseX命令脚本应该始终有一个以.bxs结尾为文件概述的文件。

您的方法失败的原因是,在XML命令脚本中,您不能使用XML元素,因为脚本语言本身由XML元素组成。但是,看起来您只想执行xquery文件,所以只需将XQuery本身(即没有周围的命令和xquery元素)存储在一个文件中,然后使用

代码语言:javascript
复制
basex test_bxs.xqy

假设您覆盖了现有文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26408085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档