第31回 実体置換テキストの構築と定義済み実体 Page 2
川俣 晶
株式会社ピーデー
2005/3/9
次は定義されたこれらの言葉を活用した文章となる。
The literal entity value as given in an internal
entity declaration (EntityValue) MAY contain
character, parameter-entity, and general-entity references. Such references MUST be contained entirely
within the literal entity value. The actual replacement text that is included (or included in literal) as described above MUST contain the replacement text of
any parameter entities referred to, and MUST contain the character referred
to, in place of any character references in the literal entity value;
however, general-entity references MUST be left as-is, unexpanded. For
example, given the following declarations: <!ENTITY % pub "Éditions Gallimard" > <!ENTITY rights "All rights reserved" > <!ENTITY book "La Peste: Albert Camus, © 1947 %pub;. &rights;" > book " is: La Peste: Albert Camus, © 1947 Éditions Gallimard. &rights; &rights; " would
be expanded should the reference "&book; " appear in
the document's content or an attribute value. |
内部実体宣言内で与えるリテラル実体値(EntityValue)は、文字参照、パラメタ実体参照および一般実体参照を含んでもよい。これらの参照は、リテラル実体値内に完全に含まれていなければならない。先に示したとおりに取り込まれる(またはリテラル内で取込まれる)実際の置換テキストは、参照されるパラメタ実体の置換テキストを含まねばならず、リテラル実体値に含まれる文字参照の代わりにそれが表す文字を含まねばならないが、しかしながら、一般実体参照はそのまま残し、展開してはならない。例えば、次の宣言を与えたとする。 <!ENTITY % pub "Éditions Gallimard" > <!ENTITY rights "All rights reserved" > <!ENTITY book "La Peste: Albert Camus, © 1947 %pub;. &rights;" > 実体の置換テキスト"book"は、次のとおりとなる。 La Peste: Albert Camus, © 1947 Éditions Gallimard. &rights; 参照"&book;"が文書の内容または属性値内に出現すれば、一般実体参照"&rights;"は展開される。 |
実例が入るので長くなるが、順番に読んでいこう。冒頭の文章で「EntityValue」が英語のまま残されているのは、それが生成規則[9] EntityValueのことだからである。内部実体の場合に、リテラル実体値が「EntityValue」に対応するのは前段落で読んだとおりである。そして、これには3種類の参照を含めてよいとしている。「含めてよい」というのはMAYという言葉により示されるニュアンスである。さて、3種類の参照とは、文字参照、パラメタ実体参照、一般実体参照である。これは、生成規則[9] EntityValueからも明らかになることである。生成規則[9] EntityValueは、生成規則[69] PEReferenceと生成規則[67] Referenceへの参照を含んでいるが、前者はパラメタ実体参照、後者は一般実体参照と文字参照を含んでいる。つまりは、この3種類の参照を記述できることが、生成規則によっても示されていることになる。
次の文章にある「ならない」はMUSTである。参照が完全に含まれている、というのは、参照を記述する構文の最初から最後までのすべてがリテラル実体値内に収まっていなければならないことを意味する。例えば「%abc;」という参照があるなら、最初の「%」記号から最後の「;」記号までがすべてリテラル実体値内に収まっていなければならないことを意味する。
次の文章にはそれぞれ3つのMUSTが使われている。この文章が述べていることは、ある意味で、それまでの文章で述べたことのいい直しである。すでに述べられているとおり、文字参照とパラメタ実体参照の置き換えは要求されているが、一般の実体参照の置き換えは要求されていない。そのことをMUSTを用いて明確に規定しているわけである。
その後に3つの実体宣言を含む例が記述されている。そして、「book」に対応する置換テキストの内容が記述されている。
この例の内容もひととおりチェックしておこう。最初の実体宣言はパラメタ実体「pub」を宣言している。この中には、文字参照「É」が含まれている。2番目の実体宣言は内部一般実体の「rights」を宣言している。内容はシンプルな文字列である。最後の実体宣言は内部一般実体の「book」を宣言している。これには、文字参照「©」、パラメタ実体参照「%pub;」、一般実体参照「&rights;」の3つが含まれている。さて、実体「book」への参照を処理するための実体の置換テキストは、もちろん、文字参照とパラメタ実体参照の置き換えは要求されるが、一般の実体参照の置き換えを行ってはならない。それ故に、「©」は「©」に、「%pub;」は「Éditions Gallimard」に置き換えられるが、「&rights;」は置き換えられていない。またパラメタ実体参照に含まれる文字参照「É」も「É」に置き換えられていることに注意を払おう。これらの結果が、「La Peste: Albert Camus, © 1947 Éditions Gallimard. &rights;」という文字列に示されている。
最後の文章は、コンテキストを意識した問題である。ここまでの話題は、上記の例を見ても明らかであるとおり、実体宣言の中に記述した参照をどう扱うかという問題を扱っている。それが、この場のコンテキストである。しかし、そのコンテキストとは異なるコンテキストでは、異なる解釈があり得るのは当然のことである。より具体的にいえば、文書の内容や属性値内に出現した場合は、一般実体参照も置き換えの対象になる。というより、それを置き換えるためにそこに記述されるものだから、置き換えるべきものである。つまり置換テキストは、一部の参照を置き換え済みの存在ではあるが、さらに置き換えの対象になり得る存在であり、参照が文書の内容や属性値内に出現した場合には、置換テキストからさらに置き換えが発生するのである。
さて、最後に短い段落が1つだけ存在する。
These simple rules may have complex interactions; for a detailed discussion of a difficult example, see D Expansion of Entity and Character References. |
これらの単純な規則は、複雑な相互作用を持ち得る。難しい例についての詳細は、D Expansion of Entity and Character Referencesを参照のこと。 |
ここで述べている「D Expansion of Entity and Character References」は、AppendicesのDであり、「JIS X 4159」では「附属書4. 実体参照および文字参照の展開」に当たる。
さて、単純な規則が複雑な相互作用を持つ、というのは決して奇異ではない。だれもがあっという間に把握できる単純な規則であっても、それが相互に影響を及ぼし合って、人間には把握しきれないほど複雑な状況を示すことはよくある。例えば、白と黒の2種類の石しか使わないシンプルなゲームである囲碁は、長い歴史を持ちながらいまだに必勝法を確立できていない。また、数学の世界でも、ごく短くシンプルな非線形方程式が解けないことがあるそうである。単純な規則が、容易に予測できないような複雑な状況を発生させることがあるという認識は、21世紀を生きるわれわれには非常に重要ではないかと思う。それを認めず、単純な規則から起こり得ることは何でも容易に予測可能であるという前提を取ることは、一見科学万能主義のように見えながらも、実際には非科学的な宗教的信念にすぎない。ともあれ、詳細はAppendicesのDに記述されていることが示されているので、ここでは詳細に立ち入らず、そこを読むときまで待つことにしよう。(次ページへ続く)
2/3 |
Index | |
やさしく読む「XML
1.0勧告」 第31回 実体置換テキストの構築と定義済み実体 |
|
Page
1 ・実体を置換するタイミングの規定 ・実体置換テキストの構築 |
|
Page
2 ・実体置換テキストの活用例 |
|
Page
3 ・定義済み実体の規定 |
連載 やさしく読む「XML 1.0勧告」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|