-ノードクエリー

MayaのProcessorResolverは、コード書いて登録すればテンプレートのパース中に様々なことができます。ノード情報に従ってJSPカスタムタグをインジェクトしたり、ネイティブのテンプレートプロセッサを利用したり様々でこれがMayaのコアではガッチリとは提供しません。そのためメタなテンプレートエンジンとなっています。一方何も用意しないと利用が難しいのでmaya-standardを作ってもらっています。
コアの機構をうまくつかうとHTMLテンプレート上にformタグを見たら、すべてStrutsのhtml:formとして処理するというようなものも作れます。が、それは少数行でも、あくまでレゾルバをJavaで書けば。。。ということが前提でした。しかし、レゾルバ書かなくてもこういった機能が実現できるようにすれば、よさそうです。
HTMLテンプレートはまず対応するノードが割り当てられます。ノードとはテンプレート上のHTMLエレメントのデータをQNameと属性値の構造にて保持しているものですが、id値に該当するノード定義があればまずそれを引っ張るようにしてます。次にm:inject値があれば、その値をノードのQNameとしてます。これら二つの解決がされないときには、テンプレートのエレメントのQNameでノードを作ります。ここで、id値で引っ張る段階を抽象化すればいいんかなと。NirvanayunaさんからもXPathで検索したいみたいなことを飲み会のときに聞いたのですが、そのときは実装イメージまで落とせなかったのです。その後時間が経ってふと落ちるものがありました。XPathに限らず、要は一種のクエリーね。今はid値と完全一致の検索が行われているけど、これをQNameと属性値も含めて検索できればよいんだなと。この作業はビルド時で起動後の初回アクセス時(加えてテンプレート等のファイル更新時)に一発走るだけなので、少々重めの作業をやってもいい。
また、このノード検索機構もガッチリ作らずにいれかえ出来るようにしておけば近い将来のヘッジにもなるでしょう。上記機能を実装投入しても、エンジン利用時の仕様はまったく変りません。エンジンの受けのところで仕掛けを仕込んでおくのと、マニュアルを書くにとどめます。1.0スケジュール内でやるかは未定ですが。。。