在命令行上运行XQuery

时间:2017-06-06 00:48:32

标签: command-line xquery saxon

听起来我需要某种类型的XML处理器

看起来像是一个名为Saxon的程序,我可以用它来运行XQuery

当我尝试this websites示例时,我得到了

Error: Could not find or load main class net.sf.saxon.Query

我不知道如何从我下载的saxon package设置java包。

我想知道是否有更简单的选项可以从除此java包之外的命令行运行XQuery?我想要做的就是处理一个xml文件,其命令如“Select where type =”something“”。

4 个答案:

答案 0 :(得分:7)

我的Xidel是一个命令行XQuery 3.0工具。

 xidel your-file.xml --xquery 'your-xquery'

但是“选择哪里”不是XQuery。 XQuery看起来像for ... in .. where .. return//*[..where..],例如

xidel your-file.xml -e "//*[@type = 'something']"

使用Xidel -e--xpath--xquery的缩写,具体取决于以下参数(如果您不尝试创建新的XML文档,XPath与XQuery几乎相同) ,如果您需要"',则取决于您是从bash还是cmd控制台调用它

答案 1 :(得分:4)

BaseX提供XQuery 3.0支持,并与封装调用Java的脚本打包在一起,包括设置类路径:

$ basex --help
BaseX 8.5.3 [Standalone]
Usage: basex [-bcdiIoqrRstuvVwxXz] [input]
  [input]     XQuery or command file, or query string
  -b<pars>    Bind external query variables
  -c<input>   Execute commands from file or string
  -d          Activate debugging mode
  -i<input>   Assign file or database to context
  -I<input>   Assign input string to context
  -o<output>  Write output to file
  -q<expr>    Execute XQuery expression
  -r<num>     Set number of query executions
  -R          Turn query execution on/off
  -s<pars>    Set serialization parameter(s)
  -t[path]    Run tests in file or directory
  -u          Write updates back to original files
  -v/V        Show (all) process info
  -w          Preserve whitespaces from input files
  -x          Show query plan
  -X          Show query plan before/after compilation
  -z          Skip output of results

答案 2 :(得分:2)

听起来您并不熟悉从命令行运行Java应用程序。前进有两种方法:学习如何操作,或者通过在不使用命令行的情况下找到运行XQuery的方法来避免问题。让我们尝试用两者来帮助你,你可以选择。

(A)使用命令行

这里有关于安装和运行Saxon的基本信息:

http://www.saxonica.com/documentation/index.html#!about/gettingstarted/gettingstartedjava

你以某种方式找到了这个页面的旧版本。

一旦您完成了前4个步骤,您就可以开展业务了。您已完成步骤(1)(安装Java) - 我们知道,否则您将无法收到此错误消息。您告诉我们您已完成步骤(2)(下载软件)。你是否做了第(3)步(解压缩)并不清楚。你明确尝试了第(4)步 - 从命令行运行XQuery,但它失败了。该消息告诉我们它因为Java正在运行而失败,但无法在类路径上找到Saxon(这是Java寻找Saxon入口点的地方,net.sf.saxon.Query < / p>

如果这对您没有帮助,请告诉我们您的确切操作:确切地找到了哪些文件,您在命令行中输入的内容,以及您收到的确切消息。

当您已经过了那个阶段时,有关于XQuery命令行的更多信息

http://www.saxonica.com/documentation/index.html#!using-xquery/commandline

(B)避免命令行的工具

Saxon本身并没有为运行XSLT或XQuery提供任何图形用户界面,但是有很多工具可以做,包括商业和开源,并且大多数工具都使用Saxon作为底层的XSLT / XQuery引擎(或至少提供撒克逊作为选项)。他们可能并不总是支持最新版本,但最初可能不是一个问题。

这些工具中最好的是商业软件:来自与Saxonica密切合作以集成产品的供应商的两种产品(例如通过添加调试功能)是oXygen和Stylus Studio。 Editix是一种性能较低的便宜产品。其中大多数可能都有免费的评估许可证,所以请试试。

我所知道的Saxon唯一的开源GUI是来自Andrew Welch的KernowforSaxon。这对做简单的事情很有帮助,但我认为它已经有一段时间没有更新了。

答案 3 :(得分:1)

eXist提供XQuery 3.1支持,并打包用于执行查询和从命令行访问数据库的脚本:

$ bin/client.sh -s

Using locale: en_US.UTF-8
eXist version 3.3.0-SNAPSHOT (00c8bb256), Copyright (C) 2001-2017 The eXist-db Project
eXist-db comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; for details read the license file.

Connecting to database...
Connected :-)

type help or ? for help.

exist:/db>help
--- general commands ---
ls                   list collection contents
cd [collection|..]   change current collection
put [file pattern]   upload file or directory to the database
putgz [file pattern] upload possibly gzip compressed file or directory to the database
putzip [file pattern] upload the contents of a ZIP archive to the database
edit [resource] open the resource for editing
mkcol collection     create new sub-collection in current collection
rm document          remove document from current collection
rmcol collection     remove collection
set [key=value]      set property. Calling set without 
                     argument shows current settings.

--- search commands ---
find xpath-expr      execute the given XPath expression.
show [position]      display query result value at position.

--- user management (may require dba rights) ---
users                list existing users.
adduser username     create a new user.
passwd username      change password for user. 
chown user group [resource]
                     change resource ownership. chown without
                     resource changes ownership of the current
                     collection.
chmod [resource] permissions
                     change resource permissions. Format:
                     [user|group|other]=[+|-][read|write|execute].
                     chmod without resource changes permissions for
                     the current collection.
lock resource        put a write lock on the specified resource.
unlock resource      remove a write lock from the specified resource.
svn                  subversion command-line client.
threads              threads debug information.
quit                 quit the program

另请参阅Using the Command-line Client中的Executing QuerieseXist documentation