77.13.2. 名前空間の監査
Camel は、XPath 式を評価する前に、受信するすべてのメッセージに存在するすべての名前空間を検出してダンプすることができ、名前空間の問題の可能性を分析し特定するために必要なすべての豊富な情報を提供します。
これを実現するために、内部では特別に調整された別の XPath 式を使用して、メッセージに現れるすべての名前空間マッピングを抽出し、個々のマッピングの接頭辞と完全な名前空間 URI (s) を表示するようになっています。
注意すべき点もあります。
-
暗黙の XML 名前空間
(xmlns:xml="http://www.w3.org/XML/1998/namespace") は、何の価値ももたらさないので、出力から抑制されます。 -
デフォルトのネームスペースは、出力の
DEFAULTキーワードの下に表示されます。 - 名前空間は、異なるスコープで再マップできることに留意してください。トップレベルの 'a' 接頭辞が内部要素で異なる名前空間を割り当てられるか、あるいは内部スコープでデフォルトの名前空間が変更されると考えてください。発見された各接頭辞について、関連するすべての URI をリストアップします。
このオプションは、Java DSL と XML DSL で有効にすることができます。
Java DSL の場合
XPathBuilder.xpath("/foo:person/@id", String.class).logNamespaces()
XPathBuilder.xpath("/foo:person/@id", String.class).logNamespaces()
XML DSL の場合
<xpath logNamespaces="true" resultType="String">/foo:person/@id</xpath>
<xpath logNamespaces="true" resultType="String">/foo:person/@id</xpath>
監査の結果は、org.apache.camel.language.xpath.XPathBuilder logger の下の INFO レベルに表示され、以下のようになります。
2012-01-16 13:23:45,878 [stSaxonWithFlag] INFO XPathBuilder - Namespaces discovered in message:
{xmlns:a=[http://apache.org/camel], DEFAULT=[http://apache.org/default],
xmlns:b=[http://apache.org/camelA, http://apache.org/camelB]}
2012-01-16 13:23:45,878 [stSaxonWithFlag] INFO XPathBuilder - Namespaces discovered in message:
{xmlns:a=[http://apache.org/camel], DEFAULT=[http://apache.org/default],
xmlns:b=[http://apache.org/camelA, http://apache.org/camelB]}