附属書D 実体参照及び文字参照の展開

この附属書は,実体参照及び文字参照を認識し,展開する,一連の流れを,例に使って示す。

DTDが,次の宣言を含む場合を考える。

<!ENTITY example "<p>An ampersand (&#38;#38;) may be escaped
numerically (&#38;#38;#38;) or with a general entity
(&amp;amp;).</p>" >

XMLプロセサは,実体の宣言を構文解析した時点で文字参照を認識し,これを解決する。実体"example"の値として,次の文字列を保存する。

<p>An ampersand (&#38;) may be escaped
numerically (&#38;#38;) or with a general entity
(&amp;amp;).</p>

文書内で"&example;"を参照すると,このテキストは,再び構文解析される。このとき,要素"p"の開始タグ及び終了タグを認識し,三つの参照を認識し展開する。その結果,要素"p"は,次の内容をもつ(すべてデータとし,区切り子又はマーク付けは存在しない。)。

An ampersand (&) may be escaped
numerically (&#38;) or with a general entity
(&amp;).

規則及びその効果をより詳細に示すため,さらに複雑な例を示す。次の例で,行番号は,参照の便宜のためだけに付ける。

1 <?xml version='1.0'?>
2 <!DOCTYPE test [
3 <!ELEMENT test (#PCDATA) >
4 <!ENTITY % xx '&#37;zz;'>
5 <!ENTITY % zz '&#60;!ENTITY tricky "error-prone" >' >
6 %xx;
7 ]>
8 <test>This sample shows a &tricky; method.</test>

これを処理すると,次のとおりとなる。