【问题标题】:Possible to use Camel's XSLT component with dynamic templates?可以将 Camel 的 XSLT 组件与动态模板一起使用吗?
【发布时间】:2017-07-06 02:08:47
【问题描述】:

我所说的动态模板并不是指动态 URI。我的意思是模板本身,它由数据库中的片段组装而成,以各种方式进行转换,将图像插入其中等等。所有这些都是在我的骆驼路线中完成的。完成的 XSLT 模板位于交换属性中,现在我想通过该 XSLT 运行消息正文 XML。

与提供很大灵活性的 XQuery 组件不同,模板文件似乎只能来自具有 XSLT 组件的外部源。我是不是必须先把它写成一个文件?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

    设置选项contentCache=false,然后在每条消息上重新读取模板。然后它可以从文件中加载,然后您可以根据需要使用新内容更新文件。

    添加对使用 bean 或 ref 作为资源的支持,以便您可以调用 bean 等,目前不支持,但我记录了一张票,因此我们将在未来的版本中添加:https://issues.apache.org/jira/browse/CAMEL-11514

    【讨论】:

    • 使用简单表达式中的 bean 或值的选项肯定会让生活更轻松!使用自定义 URIResolver 怎么样?它可以从任何地方返回源,不是吗?我在想return new StreamSource(new StringReader(myBean.myXslCode));
    • 如果您使用最新版本之一,则该 bean 可能已经受支持,我不记得确切添加了哪个版本。是的,您始终可以使用自定义 URIResolver 并实现自己的逻辑。但将内容缓存保持为 false,以便为每条消息使用解析器
    • 我目前使用的版本是2.19.0,我去看看。如果没有,我会尝试 URIResolver 路由。感谢您提供有关contentCache=false 的信息。我知道那以后会搞砸我!
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多