30.2. XML DSL
XML DSL での Simple 式
XML DSL では、simple
要素内に式を配置することで、Simple 式を使用できます。たとえば、ヘッダー foo
の内容に基づいてフィルターリングを実行するルートを定義します。
<route id="simpleExample"> <from uri="seda:orders"/> <filter> <simple>${in.header.foo}</simple> <to uri="mock:fooOrders"/> </filter> </route>
代替プレースホルダー構文
たとえば、Spring プロパティープレースホルダーや OSGi Blueprint プロパティープレースホルダーを有効にしている場合、${Expression}
の構文が別のプロパティープレースホルダーの構文と競合することがあります。この場合、Simple 式に使用する代替構文 $simple{Expression}
を使用して、プレースホルダーの曖昧さを解決できます。以下に例を示します。
<simple>Hello $simple{in.header.name}, how are you?</simple>
開始トークンおよび終了トークンのカスタマイズ
XML 設定から、SimpleLanguage
インスタンスをオーバーライドすることで、開始トークンおよび終了トークン (デフォルトでは {
および }
) をカスタマイズできます。たとえば、開始トークンおよび終了トークンを [
および ]
に変更するには、以下のように XML 設定ファイルで新しい SimpleLanguage
Bean を定義します。
<bean id="simple" class="org.apache.camel.language.simple.SimpleLanguage"> <constructor-arg name="functionStartToken" value="["/> <constructor-arg name="functionEndToken" value="]"/> </bean>
開始トークンおよび終了トークンをカスタマイズすると、クラスパス上で同じ camel-core
ライブラリーを共有するすべての Apache Camel アプリケーションに影響します。たとえば、OSGi サーバーでは多くのアプリケーションに影響する可能性がありますが、Web アプリケーション (WAR ファイル) では、Web アプリケーション自体にしか影響を与えません。
XML DSL の空白と自動トリミング
デフォルトでは、XML DSL における Simple 式の前後にある空白文字は、自動的にトリミングされます。以下の式は空白で囲まれています。
<transform> <simple> data=${body} </simple> </transform>
よって、自動でトリミングされ、空白のない以下の式と同等になります。
<transform> <simple>data=${body}</simple> </transform>
式の前後に改行を入れたい場合は、以下のように改行文字を明示的に追加できます。
<transform> <simple>data=${body}\n</simple> </transform>
また、以下のように trim
属性に false
を設定すると、自動トリミング機能をオフにすることができます。
<transform trim="false"> <simple>data=${body} </simple> </transform>