第21回 物理構造の基本、「実体」の種類と意味を理解する Page 2

今回の主な内容
第4章「物理構造」の概要
Physical Structures(物理構造)の必要性
Physical Structures(物理構造)の本文
解析対象実体の用語定義
解析対象外実体の用語定義
実体の参照方法
一般実体とパラメタ実体の用語定義
川俣 晶
株式会社ピーデー
2004/5/11




解析対象実体の用語定義

 次は、parsed entity(解析対象実体)の用語定義である。

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

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

 ここを読む段階で解析対象実体と解析対象外実体の意味を知る必要はない。それらは後で説明される。ここで把握するのは、実体はこの2種類に分類できるということだけである。

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

解析対象外実体の用語定義

 次は、解析対象外実体の用語定義である。

[Definition: An unparsed entity is a resource whose contents may or may not be text, and if text, may be other than XML. Each unparsed entity has an associated notation, identified by name. Beyond a requirement that an XML processor make the identifiers for the entity and notation available to the application, XML places no constraints on the contents of unparsed entities.]

[定義:解析対象外実体は、内容がテキストでもそうでなくともよく、テキストの場合、XMLでなくともよいリソースとする。各解析対象外実体には、記法が関連付けられ、この記法は、名前で特定する。XMLプロセサが実体や記法の識別子を応用プログラムに渡すという要件以外は、XMLは解析対象外実体の内容を制限しない。]

 冒頭の文章の意味はつまり「何でもあり」である。何でもあり、と記述していないのは、内容の明確化のためだろう。つまり、誤解を減らすためである。ここでは、以下の3種類が対象になるとしている。

  • テキストではないもの
  • XMLではないテキスト
  • XMLであるテキスト

 これにより、「XMLはマーク付け言語で、マーク付け言語はテキストとして記述するのだから、解析対象外実体もテキストに限られるに違いない」といった誤解が回避できる。また、「XMLの構文に合致しないものは解析対象外実体になれない」という誤解も回避できる。さらに、「XML文書はXML文書として処理しなければならず、解析対象外実体として扱うことはできない」という誤解も回避できる。

 次はXMLの難物の1つ、記法がまた出てきた。解析対象外実体は記法を通じてのみ使用できるものである。記法については、後で「4.7 Notation Declarations(4.7 記法宣言)」に定義が出てくるが、本連載の「第17回 属性の型、列挙型を理解する」のNotationType(記法型)についての説明の中で、どのようなものかを簡単に述べている。ここでは、記法には名前が付けられていて、解析対象外実体はその名前を通して記法を関連付けるとだけ分かれば十分である。

 最後の文章は、解析対象外実体の性格をよく表している。解析対象外実体を参照する方法については規定しているが、参照される内容については何も指定されていない。ただ、実体や記法の識別子を、応用プログラムに渡すという機能だけが要求されている。逆にいえば、識別子つまり何らかの名前を与えられたものだけが解析対象外実体として参照できる。

 さて、余談だが、具体的に解析対象外実体はどんなものを指定するために使用するのか。例えば、バイナリ形式の画像データ(GIFやJPEGなど)の参照に使用できる。また、筆者が少しだけ縁のあった用途でいうと、ISO/IEC 10036の手順で登録されるグリフ識別子も指定できる。この識別子は、主に筆者が書いたJIS X TR 0047「XMLによる画像参照交換方式」ではXMLの属性による指定を行うようにしているが、本来は記法を通じて扱うものである。XMLでは通常記法を使わないために、属性を通じた指定を標準化したものである。もし、記法を使って扱うなら、JIS X TR 0047は必要がない。

実体の参照方法

 次は、実体を参照する方法についてである。

Parsed entities are invoked by name using entity references; unparsed entities by name, given in the value of ENTITY or ENTITIES attributes.

解析対象実体は、実体参照によって名前で呼び出す。解析対象外実体は、ENTITY型またはENTITIES型の属性の値として、名前で呼び出す。

 冒頭の文章は、解析対象実体を参照する方法を説明している。手段は実体参照であり、名前によって対象となる実体を指定する。

 次は、解析対象「外」実体を参照する方法を説明している。手段は、ENTITY型またはENTITIES型の属性であり、名前によって対象となる実体を指定する。ここで注意が必要なのは、解析対象実体と解析対象外実体の指定方法に、構文的な互換性がまったくないことである。解析対象実体は、実体参照を記述できるところなら、どこにでも書ける。要素内容の文字列中に入れてもよいし、属性値の中に入れてもよい。それに対して、解析対象外実体はENTITY型またはENTITIES型の属性以外では使用できない。また、属性値に記述する場合にも、両者は書き方が異なる。例えば、sampleという名前の実体を参照する場合、以下のように表記法が変わる。

解析対象実体の場合 attribute="&sample;"
解析対象外実体の場合 attribute="sample"

 解析対象実体は実体参照として、解析対象外実体は値として指定するという表現の相違は、上記のような表記法の差を意味する。

一般実体とパラメタ実体の用語定義

 次は、一般実体とパラメタ実体の用語定義である。

[Definition: General entities are entities for use within the document content. In this specification, general entities are sometimes referred to with the unqualified term entity when this leads to no ambiguity.] [Definition: Parameter entities are parsed entities for use within the DTD.] These two types of entities use different forms of reference and are recognized in different contexts. Furthermore, they occupy different namespaces; a parameter entity and a general entity with the same name are two distinct entities.

[定義:一般実体は、文書内容の中で使用する実体とし、あいまいにならない限り、この規格では、一般実体を単に実体と呼ぶ。][定義:パラメタ実体は、DTD内で使用する解析対象実体とする。] これらの2種類の実体は、異なる書式で参照し、異なる文脈で認識される。さらに、それらは異なる名前空間にあり、従って、同じ名前のパラメタ実体と一般実体は、2つの異なった実体である。

 最初の文は、一般実体の用語定義となっている。実体を参照できる個所は、文書内容の中とDTDの中があるが、これは前者である。特に断らない限り、ただ実体と呼んだ場合は、一般実体を示すという意図も記述されている。つまり、次に出てくるパラメタ実体を意味するために、単なる実体という言葉は使わないということである。

 次の文は、パラメタ実体の用語定義となっている。これは、文書内容の中ではなく、DTDの中で参照することが示されている。

 次からは用語定義ではない。異なる書式の具体的な内容は、この後で、「4.1 Character and Entity References(4.1 文字参照および実体参照)」の中で出てくる。ここでは書式が同じではないことだけ把握すれば十分である。

 次の文章でいう名前空間は、いわゆるXMLの名前空間ではない。もっと抽象的な意味において、名前が属する独立した範囲のことをいう。

 例えば、田中家に太郎という男の子がいるときに、隣の斉藤家に生まれた子どもに太郎という名前を付けても、特に問題はない。田中家の太郎という名前は、田中家名前空間に属するのに対して、斉藤家の太郎という名前は、斉藤家名前空間に属しているためである。区別したければ、斉藤家の太郎くんというだけで、容易に区別することができる。ところが、田中家に生まれた太郎くんの弟に、また太郎という名前を付けると混乱が起きる。この場合、同じ田中家名前空間に属するので、「田中家の」と前置きしても区別できない。

 もちろん、人間であれば、太郎兄、太郎弟、のように呼んで区別できるかもしれないが、実体は人間と違って名前が厳密に決まっていて、柔軟に変更して使えない。同じ名前空間に、同じ名前を持つ実体を複数持つことはできない。しかし、パラメタ実体と一般実体は同じ名前空間に属していないので、同じ名前で異なる内容の実体を宣言しても問題なく区別して使用できるわけである。

 さて、以上で「4 Physical Structures(4 物理構造)」の始まりから、「4.1 Character and Entity References(4.1 文字参照および実体参照)」に入る手前までを読み切った。次回は、「4.1 Character and Entity References(4.1 文字参照および実体参照)」を読んでいこう。ここでは、文字を直接入力する代わりにコードで記述する文字参照や、実体を参照する構文について記述されている。これらは、XML文書中によく見かける構文なので親しみやすいだろう。しかし、いろいろと細かい制約などもあるので、しっかりと取り組んで正しい知識を身に付けよう。(次回に続く)

Page 1 2/2  

 Index
やさしく読む「XML 1.0勧告」 第21回
物理構造の基本、「実体」の種類と意味を
理解する
  Page 1
第4章「物理構造」の概要
Physical Structures(物理構造)の必要性
Physical Structures(物理構造)の本文
Page 2
解析対象実体の用語定義
解析対象外実体の用語定義
実体の参照方法
一般実体とパラメタ実体の用語定義

 

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


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

注目のテーマ

HTML5+UX 記事ランキング

本日月間