90.9. 名前空間の使用
使用する名前空間の標準セットがあり、それらを多くの XPath 式で共有する場合は、次のように Java DSL を使用するときに org.apache.camel.support.builder.Namespaces を使用できます。
Namespaces ns = new Namespaces("c", "http://acme.com/cheese");
from("direct:start")
.filter(xpath("/c:person[@name='James']", ns))
.to("mock:result");
2 番目のパラメーターとして渡される ns 変数を使用して、名前空間が xpath にどのように提供されるかに注意してください。
各名前空間はキー=値のペアで、この場合に接頭辞がキーです。XPath 式では、名前空間はその接頭辞によって使用されます。たとえば、次のようになります。
/c:person[@name='James']
名前空間ビルダーは、次のように複数の名前空間の追加をサポートしています。
Namespaces ns = new Namespaces("c", "http://acme.com/cheese")
.add("w", "http://acme.com/wine")
.add("b", "http://acme.com/beer");
XML DSL で名前空間を使用する場合は、XML ルートタグ (または camelContext、routes、route タグの 1 つ) で名前空間を設定するため、異なります。
以下の XML の例では、Spring XML を使用します。この名前空間は、ルートタグ beans の xmlns:foo="http://example.com/person" の行で宣言されています。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:foo="http://example.com/person"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<filter>
<xpath logNamespaces="true">/foo:person[@name='James']</xpath>
<to uri="mock:result"/>
</filter>
</route>
</camelContext>
</beans>
この名前空間は接頭辞として foo を使用するため、<xpath> 式は /foo: を使用してこの名前空間を使用します。