Xerces 2.9.1 を使用して XML 解析を実行しています。XML には名前空間が含まれており、名前空間を認識するように Xerces を構成しました。
recとcomの 2 つのプレフィックスが定義されています。rec はルート タグで定義され、comはそれを使用する各ノードで宣言されます。
<rec:root xmlns:rec="...">
<rec:dummy ...>
<com:item xmlns:com="..." />
...
次の XPath 式を解析すると、例外が発生します。
/rec:root/rec:dummy/com:item
XPathStylesheetDOM3Exception: プレフィックスは名前空間に解決する必要があります: com
これはブログで見つけたもので、Xalan について述べていますが、Xerces も同じ動作をしていることに気付きました。
それは、渡されたノードで見つかったマッピングのみを使用するためです。つまり、この場合は最上位の名前空間宣言にマッピングされます。そこで、名前空間宣言を最上位に移動して、次の XML 入力を取得します。
xmlns:comをルート タグに移動すると問題は解決しますが、そのファイルを制御することはできません。