我发现只有一次尝试创建这样的编译器 - http://sourceforge.net/projects/xsltc/。 但这个项目已经过去十年了。还有其他例子吗?开源还是商业?
构建此类软件是否存在任何基本技术难题?用本机编译XSLT的整个方法?
我认为使用它有很好的用例 - 我们不需要更改XSLT但仍希望获得更高性能(可能还有更低的内存要求)。
是否还有其他原因导致该软件看起来效率不高? - 将XSLT处理器解释为编译效率可能是多少?
答案 0 :(得分:2)
据我了解,XSLT不再受欢迎了。通常,使用您喜欢的XML库作为您选择的语言更容易,更强大,解析您的XML数据,并编写代码以按您希望的方式格式化输出。
另一方面,你似乎已经取得了一些成功。有些情况下它很有用。 Check this SO question了解有关XSLT优缺点的更多详细信息。
无论如何,软件开发人员一般都不是XSLT的忠实粉丝,这可以解释为什么在C ++中编写优化的XSLT解析器没有太大动作。
答案 1 :(得分:2)
博士。 Michael Kay刚宣布Saxon / C http://www.saxonica.com/saxon-c/index.xml
从产品主页:
Saxon / C是Saxon-HE在C / C ++编程上的alpha版本 平台。目前提供API以从C / C ++或PHP运行XSLT 2.0 应用
<强>许可证强>
该产品是开源的。主要许可证是Mozilla Public 许可证版本2.0。在大多数情况下,源文件标记为 “与二级许可证不兼容”,这意味着 代码不能与GPL许可下发布的代码相结合( 原因是难以联系所有过去的贡献者 获得他们的同意。)
某些组件是根据Apache 2.0版许可证或 根据BSD式许可证。有关许可的更多信息,请参阅 许可证
下载强>
请点击以下链接下载Saxon-C安装程序。
libsaxon-HEC-setup.zip (30 MB)
答案 2 :(得分:0)
XSLT是一种功能语言,具有一些模式匹配。
你可以将它编译为一组模式导向规则,使用元匹配确保瞬间适用的所有模式都得到有效处理。
编译模式导向的规则很好理解;看看80年代早期Charles Forty的Rete网络的工作以及过去二十年的衍生工具。
所以,如果有人想这样做,他们可以。经济激励在哪里?
如果您 希望这样做,您需要一个可以将XSLT作为一组模式处理的工具 而不是使用XML处理器将其视为asdumb XML文档,否则看起来就像。而且您希望能够操纵/组合模式并生成目标机器代码。您需要一个旨在操纵符号结构的工具。
LISP会很好,但是解析XML并不是特别好(可以用汗水修复),并且在处理生成的C ++代码方面并不是特别擅长(只有大量的汗水才能解决这个问题)。
我们的DMS Software Reengineering Toolkit是一个系统,旨在将正式文档视为部分,与编译器将源代码视为一组语言结构的方式基本相同。 它具有XML解析器,并且可以在组合中部分地操作C ++代码片段,并且可以通过应用C ++优化源到源程序转换规则来优化结果。 (已经投入大量汗水进行C ++操作)。
我们使用DMS完成了模式导向的规则编译器,而不是XSLT,而是通过元模式匹配和跟踪诱导变化的状态来编译这些源到源程序转换规则。你可以获得真正意义上的大型自动机(有点像LR解析表一样大),可以实现翻译。
但是没有为XSLT做过这个。