SGML実体
Standard Generalized Markup Language (SGML) における実体(英: entity)は、プリミティブデータ型の1つであり、固有のエイリアス(ユーザーが指定した名前など)またはSGML予約語(#DEFAULT など)を1つの文字列と関連付けるものである。XMLやHTMLにおける実体 (entity) も同様である。
実体はSGML文書の構造と定義の基盤である。SGML仕様では様々な実体型 (entity type) を定義しており、キーワード修飾子と文脈で決まる。実体文字列の値としては、プレーンテキスト、SGMLタグ、事前定義された実体への参照から成る。外部文書を参照する実体型もある。実体は参照渡しである。
内部実体 (internal entity) の値はリテラル文字列か、同一文書内(DOCTYPEや部分文書など)で定義されたマークアップと実体から成る構文解析された文字列である。外部実体 (external entity) は外部文書を呼び出す宣言を持つため、外部文書への参照を解決するために実体管理系とやりとりする必要がある。
SGMLの標準実体群やそこから派生した一部には、タイピングが難しかったり文字コードが特殊などの理由で毎回本文に記述するのが面倒な文字を置き換えるという用途もある。そのような実体の中身は国際符号化文字集合の中の1文字である。どんな文字も数値文字参照で参照できるが、文字実体参照を使えば文字コードを使わずに名前で参照できる。
たとえば HTML 4 には252の文字実体が組み込まれており、宣言する必要はない。XML には5つがある。XHTML にも XML と同じ5つがあるが、DTD を明示的に使えば 253 になる(追加の1文字は &apos;)。
実体は包括実体とパラメータ実体に分類される。
包括実体 (general entity) はその文書の中からのみ参照できる。
パラメータ実体 (parameter entity) は DTD の中でのみ参照できる。
また、実体は解析対象と非解析対象に分類される。
解析対象実体 (parsed entity) は文書に組み入れられるテキストを含み、その実体を組み入れて参照すると中身のテキストが構文解析される。パラメータ実体は常に解析対象実体である。
非解析対象実体 (unparsed entity) は一種のデータを含み、その参照が文書内にあるとアプリケーションには単にその実体の存在が通知されるだけである。実体の中身が単なるテキストだったとしても構文解析されない。非解析対象実体は常に外部実体である。