[Seasar-user:13714] Re: [Teeda] DynamicPropertyのid

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 4月 13日 (日) 22:00:33 JST


小林 (koichik) です.

Date:    Sun, 13 Apr 2008 16:45:34 +0900
From:    "Masao NADAI" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13710] Re: [Teeda] DynamicPropertyのid

> > <span id="xxx" class="T_omittag" />
(略)
> 実装していただけないでしょうか。

たぶんしません.

> > class 属性は複数の値が使えるので必要なら
> >
> > <span id="xxx" class="foo T_omittag" />
> >
> > のように CSS で指定するための値と共存できます.
> 
> この使い方はしないでしょう。
> タグ消えちゃいますから。

そういうことではなくて,規約の「体系」として
考えていただきたいのですが.

> <span id="xxx" class="foo T_omitid" />
> 
> これは、素敵です。

つまり,この「体系」にはそれだけ一貫性と
柔軟性があるということです.

> こちらも、実装していただけないでしょうか。

たぶんしません.
理由は

> > が,class 属性を活用するのは評判がよくなくて

です.

> > > ただ、"this"は、入れて欲しいです。
> >
> > これは無しということで.
> > xxxMessage や xxxLabel 等の接尾辞の意味を
> > 打ち消すには不自然なキーワード&用法なのと,
> 
> 接尾辞の意味を打ち消すキーワードではなく、
> 明示的にPageクラスのプロパティを参照するキーワードです。

つまり,このキーワードには

・Page クラスの
・プロパティを

という二つの意味が込められているわけですよね.
そして現状必要なのは,xxxMessage という
プロパティを表示したい場合など,

・プロパティを

の方ですよね?
これを言い換えると,

・(メッセージでもラベルでもなく) プロパティを

です.
それに対して this というキーワードは
不適切で応用が利かないということです.
つまり,

・プロパティを
・メッセージを
・ラベルを
・〜を...

というように展開できないのです.

> > id 値を使うのであれば,
> >
> > <span id="property:xxxMessage" />
> >
> > のような形の方が直感的だし,
> 
> propertyというプロパティ名が使えなくなり(互換性を
> 損ね)ませんか?

property: はその右がプロパティであることを示す意味で
書いたもので,これ自体はプロパティ名ではありません.
よって,Java のキーワードと重なっても問題は微塵も
ありません.
# とはいってもこの案もたぶん採用しませんが.

> > <span id="message:xxx" />
> > <span id="label:xxx" />
> >
> > のように応用も利きます.
> 
> <span id="message.xxx" />
> <span id="label.xxx" />
> 
> で、よいのでは?

property: と同様に,message: はその右の
プロパティに対するエラーメッセージの表示,
label: はその右をキーとするラベルを表示
するという意味で書いたのですが,おそらく
誤解しておられますよね?

public class XxxPage
  public String xxx;
  public String xxxMessage;
  public MessageDto message;
}
public class MessageDto {
  public String xxx;
}

とあった時に,

<span id="property:xxx" />        <!-- xxx を表示 -->
<span id="property:xxxMessage" /> <!-- xxxMessage を表示 -->
<span id="property:message.xxx" /><!-- MessageDto の xxx を表示 -->
<span id="message:xxx" />         <!-- xxx に対するメッセージ -->
<span id="message:xxxMessage" />  <!-- xxxMessage に対するメッセージ -->
<span id="message:message.xxx" /> <!-- MessageDto の xxx に対するメッセージ -->
<span id="label:xxx" />           <!-- xxx をキーとするラベル -->

ということです.
つまり

<span id="message:xxx" />
<span id="label:xxx" />

はそれぞれ現在の

<span id="xxxMessage" />
<span id="xxxLabel" />

と同等で,それを命名規約より明確な指定を
可能にする記法の例として書いたものです.
# とはいってもこの案もたぶん採用しませんが.

一方,

> <span id="message.xxx" />

はどうでしょうか?
明確といえるでしょうか?
以下のどちらと同等でしょうか?

<span id="property:message.xxx" /><!-- MessageDto の xxx を表示 -->
<span id="message:xxx" />         <!-- xxx に対するメッセージ -->

> > これも個人的な考えですが,テンプレートの妥当性に
> > ついては,XHTML 名前空間の要素・属性だけ取り出して
> > valid であれば,まずは十分ではないかと考えています.
> 
> そうですか。
> 私は、モックもプロジェクトの成果物なので、
> これも validであるにこしたことはないと思います。

その成果物は Teeda で処理するテンプレートであって,
公開される XHTML そのものではない,ということです.

モックとして「も」ブラウザで確認できるように配慮は
しますし,それが Teeda Extension の売りの一つですが,
それが無条件で valid であるべきとまでは考えていません.
XHTML ボキャブラリに関して valid に記述できれば,
モックとしての役割は完全に果たせると考えています.

> > 最近の Teeda は condition や foreach を使える要素が
> > 増えたので随分と改善できたと思いますが,それでも
> > まだまだ表現力不足なので,そっちを何とかしたいなと.
> 
> 業務系システムでは、十分な表現力です。
> どのようなことをお考えなのでしょうか。興味津々。

できる・できないという意味では十分な表現力を
持ってるかと思いますが,例えば条件によって
動的な内容を持つ <script> を出力するという場合,

<div id="isXxx">
  <script type="text/javascript">
    <span id="script" te:omittag="true"></span>
  </script>
</div>

のようになってしまいます.
これは冗長だし直感的でもありません.
これを

<script type="text/javascript" te:if="xxx" te.out="script">
</script>

のように書けるようにしたいと考えています.

> > テンプレートが valid であることにこだわるなら,
> >
> > http://www.w3.org/TR/MathML2/appendixa.html#parsing.module
> >
> > みたいに,XHTML1.1 のモジュールに Teeda 独自の
> > 要素・属性を加えた DTD を用意すればいいだけじゃ
> > ないかと言ってみるテスト.
(略)
> 詳しく知らないのですが、理にかなっているような。

そう思うのはどうかと.(^^;
オレオレ DTD で valid であることに何の意味が
あるのでしょうか?
valid であることが目的化しちゃってるんじゃ
ないでしょうか?
何のために valid を目指すのか考え直した方が
いいのでは?


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内