Qexo-XQuery的GNU Kawa实现

Qexo是XML查询语言.由于编译了查询,因此它实现了高性能使用卡瓦框架。Kawa还包括概念验证实现属于XSLT(XSLT).

Qexo邮件列表有地址qexo-general@gnu.org.要订阅、取消订阅或查看存档,请使用信息页面.

Qexo 1.9.1现已推出。这里有获取说明.

好处

文档

你可以读一段短文XQuery简介;
一篇关于XQuery数据模型和类型;
还有一篇关于生成XML和HTML使用XQuery。

你可以阅读有关运行Qexo的更多信息,请点击此处.
这里有一篇文章调试和查找错误在Qexo计划中。

如果你有兴趣servletweb应用程序,你可以阅读一篇文章如何编写和安装一个简单的web应用程序,或一篇文章较旧但有用的信息.

示例

数据转换

以下是转换表格的程序:

let$newline:=“",$result:=(document(“tab.xml”)/result)返回(<表>{对于中的$x($result/row)返回(<tr>{对于($x/fld1)return(<td><b>{children($y)}</b></td>)中的$y,对于$y in($x/fld2)return(<td>{list(100,children($y))}</td>)}</tr>,$newline)}</table>,$newline)

这将转换如下输入表:

<结果><行><fld1>a1</fld1><fld2>12</行><行><fld1>b1</fld1><fld2>22</fld2></行></result>
生成如下输出表:
<表格><tr><td><b>a1</b></td><td><list>100 12</list></td></tr><tr><td><b>b1</b></td><td><list>100 22</list></td></tr></表格>

格式化表格生成

以下程序生成10x10乘法表:

<表格>{1到10美元的回报(<tr>{1到10美元的回报设$bg:=(如果($x mod 2+$y mod 2<=0),则为“浅绿色”否则,如果($y mod 2<=0),则为“黄色”否则,如果($x mod 2<=0),则为“浅蓝色”否则为“白色”),$prod:=$x*$yreturn返回{如果($x>1和$y>1),则$prod else</td>}</tr>,"")}</table>,“"

这就是结果:
1245678910
2468101214161820
6912151821242730
481216202428323640
5101520253035404550
6121824303642485460
7142128354249566370
8162432404856647280
9182736455463728190
102030405060708090100

定义函数

下面是定义和使用递归函数的示例:

定义函数descentent-or-self($x){$x,对于children($x)中的$z,返回descender-or-self($z)}后代或自身(<a>text1<b>text2</b></a>)
结果是:<a>text1文本2

相册

我从XML重写到XQuery我的脚本用于组织我的数字照片.新的shell脚本哪一个电话图片.xql更具可读性,大小相似,但提供了更多功能。这里有一个一个输出示例(针对Mozilla进行了优化)。

如何获取和安装Qexo

Qexo是卡瓦.尝试Qexo的最简单方法下载可运行罐.或者,您可以获得源代码.两者均可从卡瓦ftp站点获得http://ftp.gnu.org/pub/gnu/kawa/或a镜子.跟随这些从源代码生成的指令.为了跟上最新的变化,您可能会更喜欢从SVN存储库获取Kawa,如前所述在卡瓦手册中.

用法

运行Kawa-XQuery的方式与运行Kawa的方式相同,但需要指定--xquery查询标志指定语言。(默认情况下,Kawa需要Scheme源代码。)

例如,您可以直接在命令中键入xquery表达式行。如果行的末尾出现在看到的输入是有效的XQuery表达式,则该表达式将被视为完整的表达式。(但是,在分析文件时文件被解析。)

$java-jar kawa-1.9.jar--xquery(3,4,5)中$x的(:1:)返回<a>{$x}</a><a>3</a><a>4</a><a>5</a>(:2:)字符串(<a>3+5是{3+5}</a>)3+5等于8(: 3 :)

您还可以将XQuery程序编译为Java应用程序:

$java-jar kawa-1.9.jar--xquery--main-C prog.xql$java-cp.:kawa-1.9.jar程序

你可以阅读有关运行Qexo的更多信息,请点击此处.

生成和运行Servlet

您可以将XQuery程序编译为Servlet。这里有一个简单的web应用程序示例.这篇文章有其他但较旧的信息.servlet可以在servlet软件web服务器中运行,也可以作为CGI脚本运行。

许可证

Qexo是卡瓦,谁的执照X11/MIT许可证.


Per Bothner公司