有没有办法在JAXP或Xalan XSLT范围内绑定Java对象?

有没有办法在JAXP或Xalan XSLT范围内绑定Java对象?,java,xslt,xalan,jaxp,Java,Xslt,Xalan,Jaxp,Xalan-J允许我们使用它的扩展机制。我想做的是从Java(从调用Xalan的JVM)传递一个已经创建的对象,然后从xslt操作这个对象 例如,我想做这样的事情: Transformer transformer = tFactory.newTransformer(new StreamSource(xsl)); HashMap mymap = ... transformer.setParameter("MapToBeManipulatedByXsl", mymap); transformer.t

Xalan-J允许我们使用它的扩展机制。我想做的是从Java(从调用Xalan的JVM)传递一个已经创建的对象,然后从xslt操作这个对象

例如,我想做这样的事情:

Transformer transformer = tFactory.newTransformer(new StreamSource(xsl));
HashMap mymap = ...
transformer.setParameter("MapToBeManipulatedByXsl", mymap);
transformer.transform(...)
String fromXSL = mymap.get("some-key-added-by-xsl");

这是可能的吗?

这与使用Xalan-J时的集成程度不太一样,但到目前为止,使用XSL处理Java对象的最简单方法是使用JAXB将对象转换为XML或从XML转换为XML

JAXB允许您使用标记对Java对象进行注释,这些标记指定了您希望它们在等价的XML文档中的显示方式,然后完成将Java转换为XML和将XML转换为Java的所有工作。获取Java对象,通过JAXB运行它,在其上运行XSL,然后通过JAXB运行它以返回Java对象

这项技术的好处包括:

  • 您没有绑定到特定的XSL环境或解释器。你的 XSL只对XML进行操作
  • 从Java到XML再到XML的转换是JRE的核心部分, 并且不需要任何第三方库
  • 您可以独立于Java对XSL进行单元测试 应用程序环境,通过传递文本文件和验证 输出

虽然不是我想要的,但仍然是个好主意。谢谢