我目前在研究使用XSLT 2.0,但是我找不到任何开源的java实现(Saxon-B似乎符合要求,但不支持架构感知)。
我有遗漏什么吗?
是的,我在回答自己2.5年前的问题:
我还没有尝试过,但我刚刚偶然发现了Eclipse PsychoPath,这是(根据文档)一个XPath 2.0 XML Schema Aware处理器,通过了96%的XPath 2.0测试套件(版本1.1M1)。
唯一可用的是Saxon-HE:
W3C为测试托管了在线版本:
还有类似JSFiddle的版本:
Frameless项目提供了JavaScript版本的XSLT Fiddle:
还有一个使用它的App Engine项目:
除此之外,还有一个不完整的Xerces扩展,实现了XPath 2.0:
一个Eclipse扩展,实现了XPath 2.0:
一个不完整的Xalan-J分支,部分实现了XSLT 2.0:
在2003年,Xalan-J解释器进行了一些XSLT 2.0的原型工作,但后来就不了了之。这些原型工作仍然可以在xslt20分支上找到http://svn.apache.org/repos/asf/xalan/java/branches/xslt20/, 但自那以后没有人站出来继续进行初始的原型设计,并且Xalan PMC没有制定任何XSLT 2.0支持计划。除了可以在Nashorn/Avatar.js上运行的Saxon-CE的服务器端实现:
参考资料
关于档案存档,还有一个名为AltovaXML的免费、支持模式感知的XSLT 2.0引擎可供使用,XMLSpy等软件都在使用它。
不幸的是,像XMLSpy一样,它只能在Windows系统上运行。
你确定你真的需要一个schema aware processor吗?它可能会帮助更快地发现样式表中的错误,但成本可能会超过收益(无论是在金钱上还是许可证方面)。
Saxon-SA是Saxon B的schema-aware版本。它完全包括了开源的Saxon B(根据Mozilla Public License发布)。只有“schema-aware”部分是闭源的,因此大部分仍然是自由软件(尽管只是言论自由的自由..)。