[mayaa-user:339] Re: HTMLバリデーションエラーについて
suga
ko.suga @ gmail.com
2006年 11月 16日 (木) 07:56:55 JST
suga です。
デザイナーさんの手作業に関するものは、基本的にお願いして
理解してもらって気をつけてもらうしかないとして……
On 11/15/06, 佐藤 邦夫 <kuni527 @ gmail.com> wrote:
> ■デザイナーによる保守時の問題点
> ・空のspanタグ(m:idのみのspanタグ)が消される
中にダミーの文を書くのが良いでしょう。
Struts の errors タグはダミーのボディまで出力してしまうという
余計な処理がありますので、なんとか回避しないといけません。
小細工1:暗黙の <m:doBody/>を無効にする
例)
Mayaa ファイル
<m:with m:id="...."><html:errors name="..." /></m:with>
小細工2:中身をビルド時に消す
例)
html ファイル
<span m:id="...."><span m:id="dummy">ダミー</span></span>
Mayaa ファイル (default.mayaa に置くと便利)
<m:null m:id="dummy" />
> ・インライン要素でブロック要素くくることによるバリデートエラーの発生(例えばspanタグでtableタグを括ったりする場合)
これはテンプレートを作る人が気をつけるというのが一点、
Mayaa ファイル側での工夫が一点ですね。
<span> で <table> を囲むというのは、<div> で囲むようにすれば済みます。
Firefox の Extension などで簡単にバリデーションできますし。
問題は <ul><li> のように余分なタグを含められない場合ですが、
Mayaa ファイルが多少複雑になることとのトレードオフです。
サンプル集を作ろうと思いつつ手が回っていません……。
例) 内部のみタグを残したままループさせる
html ファイル
<ul>
<li m:id="loop">内部省略</li>
<li m:id="dummy">二行以上のダミーが必要なら m:null で消す</li>
</ul>
Mayaa ファイル
<m:forEach m;id="loop" items="..." replace="false" />
例) 外側を echo で当て、内部のみループさせる
html ファイル
<dl m:id="loop">
<dt>内部省略</dt><dd>内部省略</dt>
<dt m:id="dummy">二行以上のダミーが必要なら m:null で消す</dt>
<dd m:id="dummy">二行以上のダミーが必要なら m:null で消す</dd>
</dl>
Mayaa ファイル
<m:echo m;id="loop">
<m:forEach items="..." var="...>
<m:doBody/>
</m:forEach>
</m:echo>
> ツール(Dreamweaver)が勝手に消してしまったりすることがあるようで
> バリデーションエラーを起こさないようにmayaa化を検討(m:id→id属性使う等)してますがなかなか難しく
m:id や xmlns が Dreamweaver のバリデーションに引っかかる問題は、
Dreamweaver の設定で回避できます。
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_19404
Exceptions.xml に
<attribute tag="html" attribute="xmlns:m"/>
<attribute tag="html" attribute="xml:lang"/>
<attribute tag="div" attribute="m:id"/>
のような形で書いていき、このファイルを設定してもらえば良いでしょう。
正直なところバッドノウハウだと思いますけど。
# xmlns に対応して欲しい……
--
suga ( ko.suga @ gmail.com )
mayaa-user メーリングリストの案内