Передать параметр в xslt как узел в Apache Camel - PullRequest
0 голосов
/ 24 октября 2018

Возможно ли передать параметр как узел, а не как строку?

контекст верблюда:

<setHeader headerName="document_as_node">
    <simple>${body}</simple>
</setHeader>

xslt:

<xsl:param name="document_as_node" />

тело представляет собой документ xml,но я передаю его как строку (я получаю ошибку, когда пытаюсь использовать этот параметр в xpath).Как я могу передать это как узел или как я могу преобразовать это?

1 Ответ

0 голосов
/ 24 октября 2018

Надеюсь, этот пример поможет:

from("timer:foo?period=30s")
            .setBody(constant("<oldWrapTag><someTag>123</someTag></oldWrapTag>"))
            .convertBodyTo(org.w3c.dom.Document.class)
            .setBody(xpath("//someTag"))
            .setHeader("insert", simple("body"))
            .to("xslt:/xslt/test.xsl")
            .to("log:body?showBody=true")
    ;

xslt:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="insert"/>

<xsl:template match="/">
    <xsl:element name="wrapTag">
        <xsl:copy-of select="$insert"/>
    </xsl:element>
</xsl:template>

Вывод:

2018-10-24 14:03:07,952 | INFO  | 10 - timer://foo | body                             | 247 - org.apache.camel.camel-core - 2.16.3 | Exchange[ExchangePattern: InOnly, BodyType: String, Body: <?xml version="1.0" encoding="UTF-8"?><wrapTag><someTag>123</someTag></wrapTag>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...