パラメータエンティティ参照 | |
%name; XML パーサーがドキュメントの DTD 内でパラメータエンティティ参照を発見すると、その参照をエンティティのテキストで置き換えます。置換テキストがリテラルとして含まれているか、外部エンティティからのものであるにかかわらず、XML パーサーは、それが常にドキュメントの一部であったかのように置換テキストの解析を継続します。この解析は、ネストされたエンティティ参照に興味深い影響を与えます。 <!ENTITY % YEAR "2001"> <!ENTITY COPYRIGHT "© %YEAR;"> . . . <copyright_notice>©RIGHT;</copyright_notice> 必要なエンティティ置換が行われると、前述の例では次のような規定の要素が生成されます。 <copyright_notice>© 2001</copyright_notice> XML は、それが DTD 内に現れるかどうかにより、パラメータエンティティ参照を異なる方法で処理します。エンティティ宣言のリテラル値 (Copyright © %YEAR; など) 内の参照は、外部サブセットの一部としてのみ有効です。内部サブセット内では、完全なマークアップ宣言が存在できる場合のみ、パラメータエンティティ参照を指定できます。つまり、内部サブセット内では、完全なマークアップ宣言を含める場合のみ、パラメータ参照を使用できます。 パラメータエンティティ参照は DTD 内のみで認識されます。このため、% 文字は文字データ内で意味を持たず、エスケープする必要がありません。 |