在Ruby中执行XSL转换(XSLT 2.0)的最佳方法是什么?

7

在Ruby中执行XSL转换的最佳高效方式是什么? 我尝试过Nokogiri,但无论我尝试什么,它总是会产生以下结果:

compilation error: element stylesheet

这个样式表在我的XML编辑器中完美运行。

我在Linux上使用Ruby 1.9.3。


经过一番探索,我发现Nokogiri不支持XSLT 2.0:

Nokogiri使用的是libxml2,只支持XPath 1.0/XSLT 1.0

我的样式表是使用XSLT 2.0语法编写的。我更新了这个问题的标题以反映这一点。我希望Nokogiri能够以更有意义的方式回应它。

你为什么要执行XSL转换?只是好奇。

我正在开发一个网站,向其他网站提交XML数据源。每个数据源都有不同的格式,但数据源的来源是相同的。因此,我决定使用从数据库提供的XSL样式表,而不是为每个数据源编写自定义代码。这样,我只需上传新的样式表就可以创建新的数据源。


你为什么想要执行XSL转换?只是好奇吗? - Mark Thomas
3
请发布用于进行转换的源代码。另外,请发布最简单的测试案例以演示问题。包括一个 XML 片段、使用的 XSL 和调用 XSL 转换器的 Ruby 代码。 - Dave Jarvis
1
请参见https://dev59.com/ZUfRa4cB1Zd3GeqP-6d3,其中涉及XSLT 2.0和在OS X上使用Ruby的问题。 - ghoppe
2
我希望Nokogiri能以更有意义的方式做出回应。我认为这指责了Nokogiri无法控制的事情,所以你的说法应该是“我希望libxml2具备那种能力。” - the Tin Man
我能够理解这里的问题;我认为他想要的是Nokogiri提供一个比“错误”更有用的错误信息,这将导致更明显的路径,即他所做的实际上不受支持。 - Skrylar
1个回答

5
可以通过使用 saxon-xslt gem 在 JRuby 中使用 XSLT 2.0。我认为不能通过其他 Ruby 实现来实现它。当然,MRI Ruby 会依赖于尚未实现 XPath 2.0 的 libxml。请参阅此线程获取更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接