2010-02-23 35 views
3

我发现只有一次尝试创建这样的编译器 - http://sourceforge.net/projects/xsltc/。 但是这个项目已经死了十年了。还有其他的例子吗?开源还是商业?是否有任何可用的XSLT到C++编译器?

构建此类软件是否存在任何基础技术困难?用本机编译XSLT的整个方法?

我想有很好的使用它的地方 - 我们不需要改变XSLT,但仍然希望获得更高的性能(可能会降低内存要求)。

是否有任何其他原因,该软件可能不像它看起来那么高效? - 是否将XSLT处理器解释为高效编译的?

+4

也许是因为,对于大多数问题,编写C++使用一个体面的XML库比使用XSLT更容易? – 2010-02-23 11:11:03

+1

海洋,**有好消息**。看到我的回答:) http://stackoverflow.com/a/20275114/36305 – 2013-11-28 21:42:53

回答

2

从我的理解来看,XSLT不再流行了。一般来说,使用自己喜欢的XML库作为选择语言,解析XML数据,编写代码以便按照需要的方式格式化输出会更容易,更强大。

另一方面,它似乎已经取得了一些成功。有些情况下它很有用。 Check this SO question了解更多关于XSLT优缺点的细节。

无论如何,软件开发人员通常并不是XSLT的忠实拥趸,这可以解释为什么在C++中编写优化的XSLT解析器没有什么大动作。

+1

XSLT绝对是一个后天的口味。算上我喜欢的一堆吧。 – ChaosPandion 2010-02-24 00:11:13

+2

更强大?这是无稽之谈。 XSLT是纯粹的权力。不受欢迎?谁在乎。重要的是,它不是死语言,并且不会很长时间。 – 2010-07-23 04:18:31

+0

@ChaosPandion同意,一旦你真的想处理XML转换,没有什么东西可以接近XSLT。我做过的最好的选择之一就是尝试XSLT。 – TechZilla 2015-12-23 23:12:47

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做过这些工作。

2

迈克尔Kay博士刚刚宣布萨克森/ C http://www.saxonica.com/saxon-c/index.xml

从产品的主页:

萨克森/ C是撒克逊-HE对C/C alpha版本++编程 平台。目前提供的API可以从C/C++或PHP 应用程序运行XSLT 2.0。

许可

该产品是开源。主许可证是Mozilla Public 许可证版本2.0。在大多数情况下,源文件被标记为 “与二级许可证不兼容”,这意味着 代码不能与根据GPL许可证发布的代码结合使用( 原因是难以联系所有以前的贡献者 以获得他们的同意。)

某些组件根据BSD样式许可证在Apache版本2.0许可证或 下许可。有关许可的详细信息,请参阅 许可证

下载

请点击下面的链接下载撒克逊-C的安装程序。

libsaxon-HEC-setup.zip(30 MB)

+0

嗨,关于PostgreSQL使用它的一些线索? – 2017-08-25 15:10:33

相关问题