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 解析器实现
每月145次下载
1MB
21K SLoC
χrust
Rust的XPath、XQuery和XSLT
发音为"crust"。
此项目的目标是使用Rust实现XPath 3.1、XQuery 3.1和XSLT 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转换。
计划
- 完成XPath 1.0的实现。(已完成!)
- 实现所有XSLT v1.0功能。(已完成!)
- 改进XDM、XPath;达到v2.0合规性。
- 向XSLT引擎添加v2.0功能。
- 进一步改进XDM、XPath;达到v3.1合规性。
- 将剩余的v3.0功能添加到XSLT引擎。
注意。我们首先选择低垂的果实。因此,语言的主要、基本功能首先被实现。细节将在以后添加。虽然最终目标是实现所有XSLT v3.0功能,但一些更高级的功能将尽早实现。
文档
请参阅XSLT模块,了解如何评估XSL样式表。
示例
合规性
依赖关系
~5-7MB
~148K SLoC