[trpg-xml:00038] 要素内容と属性の切り分けの指針

Goto (trpg-xml ML) HTML Log homepage


Index: [Article Count Order] [Thread]

Date: Thu, 5 Aug 1999 16:03:41 +0900
From: 花本 雅樹 <dark-jedi@mbb.nifty.ne.jp>
Subject: [trpg-xml:00038] 要素内容と属性の切り分けの指針
To: "XLM ML" <trpg-xml@trpg.net>
Message-Id: <001301bedf10$a71514c0$411ea8c0@toyotatsi.co.jp>
X-Mail-Count: 00038

 花本です。今回も DTD の内容には触れません(笑)。

 要素内容と属性の切り分けについて小林さんと梶田さんの間でまだまだ食い違いが
あるようなので、いくつかの視点から指針を出してみたいと思います。

--------
 XML を処理するアプリケーションから見た場合には、属性は「アプリケーションが
データを処理するために必要とする(かもしれない)情報」であり、要素内容は「アプ
リケーションが処理の対象とするデータそのもの」であるといえます。

 例えば、HTML の <A> タグは文書中にアンカーを設定するタグですが、<A> タグの
属性である name や href はアンカーに名前を付けたり、ハイパーリンクのリンク先
を指定するなどのアプリケーションの動作を指示しているのに対し、<A></A> で挟ま
れた内容はアプリケーションの動作には影響を与えません。

 つまり、アプリケーションは『「要素名および属性」によって処理内容を決定し、
「要素内容」に対してその処理を実行』します。アプリケーションが処理内容を決定
するのに必要とされない情報は属性ではなく要素内容とするべきです。

--------
 もう少しわかりやすい例で考えてみましょう。

 XML 文書をブラウザで表示する場合の動作を考えます。以前、XML のスタイル指定
言語として XSL の説明を少ししましたが、XML にはもう 1 つ CSS2 というスタイル
指定言語もあります。これは現在 HTML で使用されている CSS1 をバージョンアップ
したもので、基本的な機能は変化していません。

 CSS2 を使用してスタイルを指定する場合、XSL のような「ソースツリーから結果
ツリーへの変換」というプロセスは存在しません。CSS2 の基本は『「要素名および
属性」によって区別される各要素に対して画面表示のスタイルを定義する』という単
純なものです。XML 文書を頭から順番に読み込み、各要素に対して定義されているス
タイルを適用して要素内容を表示するため、ブラウザで表示されるのは要素内容のみ
であり、属性値などは表示されません。

 CSS2 によるスタイル指定で表示する場合を考慮すると、ユーザーに対してはっき
りと呈示したい情報は全て要素内容とするべきです。属性として定義されている情報
はユーザーが見る事が出来るとは限りません。

--------
 『原則的にはこうあるべきだ』と言う意味で指針を呈示してみましたが、厳密にこ
うしなければならないとは私自身も思っていません。アプリケーションの動作はプロ
グラムの組み方自体でどのようにでも変えられますし、XSL を使用してスタイルを指
定すれば属性値を表示する事も可能です。

 ただ、要素内容と属性の本質的な意味の違いを理解した上で両者を使い分ける必要
があると思います。

 好き嫌いで使い分けるのは良くないと思うよ>梶田さん

        [>>>>>
        [>>>>>  花本 雅樹/にゃった
        [>>>>>
        [>>>>>  E-mail : dark-jedi@mbb.nifty.ne.jp
        [>>>>>


    

Goto (trpg-xml ML) HTML Log homepage