第26回 解析対象実体の「テキスト宣言」と「整形式」 Page 1

XML 1.0は、1998年にW3Cから勧告として公開された。当然中身は英語で、しかもEBNFと呼ばれる式によって重要な部分が記述してある。この連載では、XML 1.0を深く理解するために、そのXML 1.0勧告の最新版「Extensible Markup Language (XML) 1.0 (Third Edition)」をだれでも分かるように、やさしく読み解きながら解説していくことを目指している。(編集局)

川俣 晶
株式会社ピーデー
2004/10/15

解析対象実体の概要

主な内容
--Page 1--
解析対象実体の概要
解析対象実体とは何か
--Page 2--
テキスト宣言
--Page 3--
整形式の解析対象実体

 前回は、「4.2.2 External Entities(4.2.2 外部実体)」を読んだ。外部実体の場合、実体は外部にあるものなので、実体の内容よりも、どのようにして実体を参照するかが問題となる。そのためには、URIなどが使用されるが、URIには文字を別扱いする(エンコードする)という問題や、相対URIの基準点がどこにあるか、といった悩ましい問題がいろいろ出てくる。そのため、内部実体の宣言を規定する「4.2.1 Internal Entities(4.2.1 内部実体)」と比較して、はるかに長いものになっているが、それを読み切った。

 さて今回は、「4.3 Parsed Entities(4.3 解析対象実体)」から「4.3.2 Well-Formed Parsed Entities(4.3.2 整形式の解析対象実体)」までを読んでいこう。解析対象実体は、XML勧告で規定される構文に沿って記述される実体である。しかし、そのバリエーションは多岐にわたる。内部実体、外部実体のバリエーションもあれば、一般実体、パラメタ実体のバリエーションもある。また、XML文書のルートとなる文書実体も、一種の解析対象実体と見ることができる。これらを適切に記述し、活用するために、しっかり読み込もう。また、今回は似て非なるXML宣言とテキスト宣言の相違なども解説するので、こちらもチェックしておこう。

編集注:この連載では、XML 1.0勧告であるW3Cの「Extensible Markup Language (XML) 1.0 (Third Edition)」(英語)を参照し、その日本語訳として、日本工業規格 JIS X 4159:2002(Second Edition相当。リンク先は該当規格の原案ですが、最終版とほぼ同等の内容です)と追補1として出版予定の原稿(Third Edition対応)を参照しています。本文中のピンクの地の部分は、XML 1.0勧告の原文を示しています。

解析対象実体とは何か

 では、「4.3 Parsed Entities(4.3 解析対象実体)」を読み始めよう。ここには、解析対象実体とは何か、という定義は含まれていない。それは、これより手前の文章ですでに行われている。読み始める前に、軽くそれを復習しておこう。

 まず、Parsed Entities(解析対象実体)という用語は、「4 Physical Structures(4 物理構造)」に記述されていて、本連載第21回で読んだ。該当部分を以下に引用しておこう。

[Definition: The contents of a parsed entity are referred to as its replacement text; this text is considered an integral part of the document.]

[定義:解析対象実体の内容は、解析対象実体の置換テキストと呼び、このテキストは、文書の本体の一部として解釈する。]


次はparsed entity(解析対象実体)の用語定義である。この中に出てくるreplacement text(置換テキスト)の定義は、「4.5 Construction of Entity Replacement Text(4.5 実体置換テキストの構築)」に出てくるのだが、この文章も十分に、置換テキストという用語の意味を説明している。つまり、置換テキストとは解析対象実体の内容であり、文書本体の一部となる
連載第21回の該当部分を再掲載

 文章としては、解析対象実体の用語定義には見えにくいが、確かにこれが用語定義の文である。

 もう1つ、「2.2 Characters(2.2 文字)」でも解析対象実体に言及していて、これは本連載第5回に読んだ。該当部分を以下に引用しておこう。

解析対象実体は、テキストを含む。テキストは、文字の並びである。それは、マーク付けまたは文字データを表現する
連載第5回の該当部分を再掲載

 これらの文章から読み取れることを要約すると、解析対象実体とは以下のようなものである。

  • 文字で記述されている
  • 文書本体の一部となる

 つまり、文書実体とは同一のファイル上に存在していないとしても、その内容は文書の一部となるということである。そして、解析対象実体も、文書実体と同様に、文字によって記述されるものである。文字によって記述されるとは、文字データもマーク付けも、すべて文字で表現されることを意味する。

 さて、簡単に解析対象実体の使い道をおさらいしておこう。解析対象実体には、主に以下のような使い道が考えられる。

特殊な記号などに名前を付けて実体参照で記述可能にする

 最もよく見掛けるのは、特殊な記号などに名前を付けて実体参照で記述可能にする使い方だろう。例えば、以下はXHTML 1.1のDTDから引用した実体宣言である。

<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->

 これは、著作権を示す○付きのC記号「©」を&copy;という実体参照で記述可能にする定義である。これも解析対象実体の一種である。この記号は、よく使われる割に入力が面倒である。アメリカのPCではキーボードから直接入力できない(ALT+数字キーなら入力できるが)だけでなく、シフトJISでも表記できないため、シフトJIS対応のテキストエディタでXML文書を作成する場合にも直接入力できない。もちろん、文字参照で&#169;と入力すれば表現できるが、169という特別な数字(マジックナンバーと呼ばれる)をそのまま記述するように要求することは効率が悪過ぎる。そのような数字は覚えるのが面倒であり過ぎる。しかし、copyという名前を与えてしまえば、覚えやすさは格段に向上する。覚えやすければ、書きやすく、読みやすいというメリットを享受できる。

 定義済み実体(&lt;など)も、この使い方のバリエーションの1つといえる。

容易に置き換え可能な用語の記述

 特定の用語を、解析対象実体を使って間接的に記述することで、容易に置き換え可能にするために使われる。簡単な例を1つだけ挙げておこう。旧日本陸軍と旧日本海軍は、いわゆるセンチメートルの表記として違うものを使っていた。陸軍は「センチ」だが、海軍は「サンチ」なのである。同じ文書を陸軍と海軍に提出する必要がある場合、両者の用語の違いにできるだけ少ない手間で対処したいと思ったとしよう。もはや陸軍も海軍も存在しないが、このような組織固有の流儀、用語などはいまでもあちこちに見られるので、おそらく参考になる人も多いと思う。

 このような例は、以下のような実体宣言を使い分ければ解決できる。

<!ENTITY centi "センチ">
<!ENTITY centi "サンチ">

 本文中に単位を記述する場合は、センチと書く代わりに、&centi;と実体参照を記述するようにすればよい。

文書の分割

 これまでの例は、1文字、あるいは数文字の文字データを実体参照経由で扱うものであった。しかし、もっと文字データが多くてもよいし、その中にマーク付けを含んでもよい。さらに、外部解析対象実体であれば、実体宣言の中にすべて書き込む必要もないので、いくらでも長いものを記述できる。これを活用すれば、1つのXML文書を、複数の実体に分けて作成することも容易である。大きなXML文書を扱う場合は、適切なサイズに分割して作成すると楽である。

 例えば、第1章、第2章、第3章とファイルを分けて作成する文書の場合、以下のように実体を宣言しておく。

<!ENTITY chapter1 SYSTEM "chapter1.xml">
<!ENTITY chapter2 SYSTEM "chapter2.xml">
<!ENTITY chapter3 SYSTEM "chapter3.xml">

 そして、文書実体の中で、以下のように各章の外部解析対象実体を参照する。

&chapter1;
&chapter2;
&chapter3;

 そして、もちろんchapter1.xmlなどのファイル名を持つ外部解析対象実体を用意しなければならない。そして、外部解析対象実体の具体的な書き方を、これから読んでいくことになる。

 以上が解析対象実体の使い方のすべてというわけではないが、頭に入れておくとこの先を読みやすくなるだろう。(次ページへ続く)

  1/3

 Index
やさしく読む「XML 1.0勧告」 第26回
解析対象実体の「テキスト宣言」と「整形式」
Page 1
・解析対象実体の概要
・解析対象実体とは何か
  Page 2
・テキスト宣言
  Page 3
・整形式の解析対象実体


連載 やさしく読む「XML 1.0勧告」


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間