http://www.sw.it.aoyama.ac.jp/2007/PB1/lecture7.html
duerst@it.aoyama.ac.jp, O 棟 529号室
© 2006-7 Martin J. Dürst 青山学院大学
Well-formed (整形):
Valid (整合):
<para1>
, <para2>
,
<para3>
の例があったデータを種類別にまとめる:
<ELEMENT 書籍 (著者, 出版, 販売)> <ELEMENT 著者 (著者名, 住所)> ...
データを区切りなく並べる:
<ELEMENT 書籍 (著者名, 住所, 出版社, 出版年, 販売値段,...)>
複数のものがある場合、全部一つの要素でまとめた方がよい
<ELEMENT authors (author+)> <ELEMENT author (name, address,...)>
日本語の場合、<著者集>
などが使える
英文の DTD で単数形と複数形の違いに注意
要素の場合:
<ELEMENT 要素 (必須, (任意?))>
属性の場合:
<ATTLIST 要素 必須属性 CDATA #REQUIRED>
<ATTLIST 要素 任意属性 CDATA #IMPLIED>
開発途中には任意にする方がよい。
任意のものは必須のものの後が良い。
括弧内は自動生成可能なので省略が多い
<ELEMENT 本 (章+)> <ELEMENT 章 (節+)> <ELEMENT 節 (段落+)> <ELEMENT 段落 (#PCDATA)>
章や節をそれぞれ別の構造にしたい場合に便利
ある部分を章から節に変更したいときに不便
同じものを再利用する時:
<ELEMENT 本 (章節+)> <ELEMENT 章節 ((章節+)|(段落+))> <ELEMENT 段落 (#PCDATA)>
「章節」は入れ子になっている。情報テクノロジーで「再帰」(recursion) ともいう。
章を必ず節に分けないといけない:
<ELEMENT 章 (見出し, 節+)>
章の先頭に節に属してない部分が可能:
<ELEMENT 章 (見出し, (段落*), (節+))>
章に節が必ずしも必要ない:
<ELEMENT 章 (見出し, (段落*), (節*))>
段落の中:
<ELEMENT 段落 (#PCDATA | 図 | リスト)*>
段落の外 (e.g. HTML の <li>
, ...):
<ELEMENT 節 (段落 | 図 | リスト)*>
図などの場合には表示の時に必ずマークアップと同じ位置にする必要がない。
文書の構造の設計の時、一番よく議論される点
要素 | 属性 | |
---|---|---|
順番 | ○ | × |
複数 | ○ | × |
構造 | ○ | × |
普通の時の表示 | ○ | × |
自然言語の文書 | ○ | × |
XML で要素の順番は重要。勝手に入れ替わることはない。
<a><b/><c/><d/></a>
≠
<a><c/><d/><b/></a>
XML で属性の順番は適当。入れ替わることもある。
<a b='x' c='y' d='z'/>
= <a c='y' d='z'
b='x'/>
結論: 順番が大切なときは要素を使う。
要素は複数あっても良い:
<b/><b/><b/>
同じ名前の属性は一個しかできない:
<a b='x' b='y' b='z'/>
結論: 複数必要なときは要素を使う。
要素には内部構造がある:
属性には内部構造がない
結論: 内部構造が必要な時には要素を使う。
人間が読む文書の場合に、内部構造が必要になるときがあるので、要素にした方がよい。
(例: 見出しに数式や振り仮名などが必要なとき)
要素は普段 (例えば空の CSS スタイルシートでも) 表示される。
要素ごとにスタイルを細かく設定できる。
属性は普段表示されない。スタイルも細かくは指定できない。
表示したいものは要素にした方が良い。
6月10日 (日曜日) の 22:00 までに Moodle に投稿。
先々週作った本のデータを book.dtd
に合わせて修正する。
足りない項目を追加する。
属性値などについて、DTD のコメントも参照する。
必ず検証してから提出 (検証には W3C の Validator を使用)。
複数の人から同じ本についてのデータが出されたら減点。