http://www.sw.it.aoyama.ac.jp/2006/PB1/lecture7.html
duerst@it.aoyama.ac.jp, O 棟 529号室
© 2006 Martin J. Dürst 青山学院大学
米ブラウン大学の Scholarly Technology Group の XML Validation Form を使用。
内部の DTD のある XML ファイルを「Local file: 」として指定、「Validate」(検証) を押す。
又は: フォーものページを「表示」→「文字符号化」→「UTF-8」で強制した後、「Text:」のところに文書をコピーして、「Validate」(検証) を押す。
結果のページに "Document validates OK." とだけあると検証が成功した。
"Errors" の場合には完全に失敗した。
"Warnings" (警告) の場合には修正した方がよい。
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 スタイルシートでも) 表示される。
要素ごとにスタイルを細かく設定できる。
属性は普段表示されない。スタイルも細かくは指定できない。
表示したいものは要素にした方が良い。
自分の「手紙」の XML 文書のために作った DTD と文書をもう一度整合検証する。
今日のうちに内部 DTD を含む文書を Moodle に投稿。
先々週作った本についてのデータのための内部 DTD を作る。
今日の授業も参照にして構造を修正する。
自分のデータにはないがありそうな項目も DTD に追加する。
トップのところは
<books><book>...</book><book>...</book>...</books>
みたいな構造にする。
6月11日 (日曜日) の 23:55 までに Moodle に投稿。