2012-03-31 50 views
3

我想使用XPath 2.0,更具体地说是distinct-values函数。我下载了Saxon Home Edition,因为它可以执行XPath 2.0和XSLT 2.0,但现在它呻吟着无法调用java的东西。XSLT与XPAth 2.0和Java表达式

Cannot find a matching 1-argument function named {http://xml.apache.org/xslt/java}java.text.SimpleDateFormat.new(). Note that direct calls to Java methods are not available under Saxon-HE;

内置的处理器JRE与Java表达式没有问题。有没有什么方法可以混合Saxon-HE和默认的JRE处理器?还是有一些免费的处理器可以兼得?

问题:为什么很少实现XPath 2.0和XSLT 2.0?这是几年,但所有的大假发处理器不能这样做...... :-(

+3

尝试使用Saxon 9.1。 – 2012-03-31 15:13:34

+1

在你身边的问题:开发XSLT 2.0处理器可能不太有利,尤其是当许多人要求“一些免费的处理器”时。 – 2012-03-31 15:18:29

+1

Saxon 9.1.0.8不再可以从saxon sourceforge网站下载。它仍然可用于Maven回购。 http://mvnrepository.com/artifact/net.sourceforge.saxon/saxon/9.1.0.8 – Cheeso 2013-01-15 18:53:43

回答

4

如果你想使用撒克逊9和extension functions您需要使用其中一个商业版本或您需要使用new mechanism of integrated extension functions或者您需要使用Saxon 9.1(仍然可用) 至于格式化日期,XSLT和XPath 2.0支持模式数据类型xs:date和xs:dateTime,并有格式化这些函数的功能,如http://www.w3.org/TR/xslt20/#format-date As为了支持XSLT和XPath 2.0,XPath 2.0是XQuery 1.0的一个子集,你应该能够在Saxon旁边找到它的实现。XSLT 2.0是一个复杂的规范,还有其他来自IBM和Intel的实现,但不是开源项目。

4

第二个问题(为什么很少实现XPath 2.0和XSLT 2.0?)的答案隐含在您的第一个问题中 - 这是因为软件市场的经济性 - 许多人希望免费提供所有的东西,很难创建开发软件的商业案例。

如果您无法承担Saxon Professional Edition许可证的50英镑,您可以选择使用Martin提出的“集成扩展功能”,或者按照Dimitre的建议使用Saxon-B 9.1。