SGML実体
実体は文書のDTD内の「実体宣言 (entity declaration)」で定義される。以下に例を挙げる。
このDTDマークアップで宣言されているのは以下の通りである。
"greeting1" という名前の内部包括実体があり、その内容は "Hello world" という文字列である。
"greeting2" という名前の外部包括実体があり、URI "file:///hello.txt" で示されるリソースの中のテキストを内容とする。
"greeting3" という名前の内部パラメータ実体があり、"¡Hola!" という文字列から成る。
"greeting4" という名前の内部包括実体があり、"¡Hola! means Hello!" という文字列から成る。
実体の名前はSGML名前の規則に従わなければならず、参照できる場所も制限されている。
パラメータ実体は実体名を "%" と ";" で挟んで参照する。解析対象包括実体は実体名を "&" と ";" で挟んで参照する。非解析対象実体はENTITY型で宣言された属性の値としてその名前を置くことで参照される。
上の例にある包括実体を文書内で参照した例を以下に示す。
これを構文解析するとき、hello.txt の内容が "Salutations" というテキストだったとすると、次のような結果になる。
宣言されていない実体を参照すると、デフォールトの実体を定義していない限りエラーとなる。例えば、次の通りである。
その他のマークアップ要素や処理オプションによって実体の処理の仕方が影響されることもある。例えば、オプション指定で外部実体を無視して処理することもある。