-インジェクションの意味

インジェクションの意味を変えるかもしれません。風呂につかって考えてました。今は、テンプレートのタグに機能をインジェクションしています。が、もうちょっと一般的に、名前空間とローカル名をインジェクションするほうにしたら、レゾルバの一般化と整合性よく、より柔軟なエンジンになるかと思います。今でもぐにゃぐにゃですけどね(笑。
マジックカスタムタグを、テンプレートに書くときにはm:inject="$magic"のように書いてます。またテンプレートにJSPカスタムタグを定義するには、m:inject="c:out"のように書いてます。これらを設定XMLに書き出すと、<m:magic/>および、<tag inject="c:out"/>になります。
この組み合わせを、名前空間とローカル名の考え方に変えると、m:inject="m:magic"、m:inject="c:out"と書いたものが、<m:magic/>および、<c:out/>となるように。さらには、http://www.seasar.org/mayaという特別な名前空間はプレフィックス省略可能にすると(いまでもそうなってます)、テンプレートでm:inject="magic"が、設定XMLで<magic/>となる。

<html xmlns:m="http://www.seasar.org/maya"
         xmlns:c="http://java.sun.com/jstl/core_rt"/>
<span m:inject="remove">remove text</span>
<span m:inject="c:out" m:value="${ binding }">binding text</span>
</html>

これがImplicit型で、もしくは以下の設定XMLを使うパターン。

<html/>
<span id="removeID">remove text</span>
<span id="outID">binding text</span>
</html>

<maya xmlns:c="http://java.sun.com/jstl/core_rt"/>
<remove id="removeID"/>
<c:out id="outID" value="${ binding }"/>
</maya>

こうすると、マジックカスタムタグとJSPカスタムタグの境界線がなくなります。ある名前空間URIとローカル名で入ってきたときに、たまたまJSPカスタムタグのTLDなURIならそういう分岐になるし、そうでなければ、レゾルバがどういう解釈をするかによって異なります。また、ユーザー定義マジックカスタムタグは別の名前空間を張ることによって、固有名が重複しません。。。こういう概念的なものを別にすると、JSPカスタムタグのインジェクションを設定XMLに書くときに、とても直感的(JSPとまったく同じ)になります。
と、ここまで書いたけど、以下がXMLパーサーでNGなら考え直します。たぶん単なる識別だからOKだと思うんだけどね。

<maya xmlns:x="/WEB-INF/components"/>

明日ためしてみて、再度考察しましょう。