-3層以上深いところのID

http://d.hatena.ne.jp/dekodeko/20050607
すいません、見逃してました。実際にパッチまで作っていただいています。ありがとうございます。このパッチのポイントは、

 - String xpathExpr = "/m:maya/*[@m:id='" + id + "']"; 
 + String xpathExpr = "/m:maya//*[@m:id='" + id + "']"; 

上記のように、XPath式が2層目のみのm:idを見に行ってたところを3層目以上深いところのm:idも探しに行くようにしていることです。この副作用としてネスト状態のそれぞれのm:id付加エレメントが重複出力されるのを避けるためネストの子にm:idが見つかったときはその下を捨ててインジェクションツリーを作ることです。
これは悩ましい。私の実装時に脊髄反射的にこの重複出力を嫌ったのと、再帰的にXPath検索がかからないように2層目のみにm:id(および別のレゾルバではm:xpathなど)を記述できるようにしましたが、n層でm:idがかけてよいように「も」思います。しかし、決め手がない。アプリケーションを記述する際にどちらが直感的で、どちらが柔軟なのかですね。まずはこのアイディアを取り込んでみたいと思います(0.9.7にて)。特別ネガティブな要因がその後に出ない限り、n層OKで。引数にわたってくる実装クラスがSpecificationNodeImplとは限らないのと、このn層概念はm:idに限らず、m:xpathでも同じですし、さらにはユーザーがInjectionResolverを実装する場合に同じ問題に直面する可能性はありますので、copyTo(SpecificaitonNode, boolean)の機能はAPIレベルで対応してしまおうと思います。
追記
ということで、実装しました。API的にはどうかなぁ(org.seasar.maya.engine.specification.CopyToFilter)。ま、様子見で。