【问题标题】:Is there a way of binding a Java object in JAXP or Xalan XSLT scope?有没有办法在 JAXP 或 Xalan XSLT 范围内绑定 Java 对象?
【发布时间】:2011-08-17 20:41:35
【问题描述】:

Xalan-J 让我们create and manipulate java objects 使用它的扩展机制。我想做的是从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");

这可能吗?

【问题讨论】:

    标签: java xslt xalan jaxp


    【解决方案1】:

    这与使用 Xalan-J 获得的集成级别并不完全相同,但到目前为止,我处理过的使用 XSL 操作 Java 对象的最简单方法是使用 JAXB 将对象转换为/从XML。

    JAXB 允许您使用标记来注释 Java 对象,指定您希望它们如何出现在等效的 XML 文档中,然后完成将 Java 到 XML 和 XML 到 Java 的所有翻译工作。获取您的 Java 对象,通过 JAXB 运行它,在其上运行您的 XSL,然后通过 JAXB 运行它以获取 Java 对象。

    这种技术的好处包括:

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

    【讨论】:

    • 虽然不完全是我想要的,但仍然是一个好主意。谢谢
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2022-01-20
    • 2011-05-10
    相关资源
    最近更新 更多