XSLT与XPath 2.0和Java表达式结合使用。

3
我想使用XPath 2.0,更具体地说是distinct-values函数。我下载了Saxon Home Edition,因为它可以执行XPath 2.0和XSLT 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实现得这么少?它已经有几年了,但所有重要的处理器都不能做到... :-(

1
关于你的问题:开发XSLT 2.0处理器可能并不太赚钱,特别是当许多人都在寻求“一些免费处理器”的时候。 - Dimitre Novatchev
1
Saxon 9.1.0.8已不再在Saxon SourceForge网站上提供下载。但仍可在Maven Repo上获取。http://mvnrepository.com/artifact/net.sourceforge.saxon/saxon/9.1.0.8 - Cheeso
2个回答

4
如果您想使用Saxon 9和扩展函数(extension functions),则需要使用商业版本之一,或者使用(新的集成扩展函数机制), 或者使用仍然可用的Saxon 9.1。 至于日期格式化,XSLT和XPath 2.0支持模式数据类型xs:date和xs:dateTime,并且有相应函数进行格式化,例如http://www.w3.org/TR/xslt20/#format-date。 关于对XSLT和XPath 2.0的支持,XPath 2.0是XQuery 1.0的子集,您应该能够在Saxon之外找到其他实现。XSLT 2.0是一个复杂的规范,还有IBM和Intel等公司的其他实现,但不是开源项目。

4
第二个问题的答案(为什么XPath 2.0和XSLT 2.0很少被实现?)已经隐含在第一个问题中了——这是由于软件市场的经济原因——很多人都希望免费获取一切,这使得开发此类软件的商业案例变得困难。
如果您无法支付50英镑购买Saxon专业版许可证,您可以选择使用Martin建议的“集成扩展函数”或Dimitre建议的Saxon-B 9.1版本。

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