10个版本 (1个稳定版)

1.0.0 2024年7月26日
0.9.0 2023年12月13日
0.8.0 2023年2月22日
0.7.0 2022年6月30日
0.2.0 2021年6月4日

#1597 in 解析器实现

Download history 30/week @ 2024-04-27 1/week @ 2024-06-29 9/week @ 2024-07-06 98/week @ 2024-07-20 46/week @ 2024-07-27 1/week @ 2024-08-03

每月145次下载

Apache-2.0

1MB
21K SLoC

χrust

Rust的XPath、XQuery和XSLT

发音为"crust"。

此项目的目标是使用Rust实现XPath 3.1XQuery 3.1XSLT 3.0。还包括一个基于Nom启发的解析器组合器实现的XML解析器。

目前,该项目已实现了XPath v1.0和XSLT 1.0的功能等价。也就是说,v1.0 XPath和XSLT中的所有元素和函数都已实现。然而,它并不符合v1.0。这是因为它实现了v3.0数据模型。

除了实现XQuery和XPath数据模型3.1数据模型外,还实现了XPath和XSLT v2.0/v3.0的一些其他功能,例如FLWR表达式、分组(即xsl:for-each-group)和用户定义函数。

设计

库将解析和评估分开。XPath和XSLT被解析(或“编译”)成内部表示,即“转换”,然后进行评估。

这意味着表达式的写法无关紧要;它将被编译成相同的内部形式。例如,XPath表达式

if $a then "a is true" else ""

将产生与

<xsl:if test="$a">
  a is true
</xsl:if>

相同的结果。这种方法意味着XPath和XSLT模块只是它们各自的语法的映射到χrust转换。

计划

  1. 完成XPath 1.0的实现。(已完成!)
  2. 实现所有XSLT v1.0功能。(已完成!)
  3. 改进XDM、XPath;达到v2.0合规性。
  4. 向XSLT引擎添加v2.0功能。
  5. 进一步改进XDM、XPath;达到v3.1合规性。
  6. 将剩余的v3.0功能添加到XSLT引擎。

注意。我们首先选择低垂的果实。因此,语言的主要、基本功能首先被实现。细节将在以后添加。虽然最终目标是实现所有XSLT v3.0功能,但一些更高级的功能将尽早实现。

文档

请参阅XSLT模块,了解如何评估XSL样式表。

示例

合规性

XDM、XPath、XQuery和XSLT的标准化实现状态。

依赖关系

~5-7MB
~148K SLoC