听起来我需要某种类型的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“”。
答案 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 Queries和eXist documentation。