[12] SGML には、 SGML に従って解釈できない任意のデータを扱うためのデータ実体という構造が存在していました。
[13] XML には同様の非解析対象実体が存在していました。 ただし SGML に比べると極めて限定的でした。
[16] 文字データ実体や特定文字データ実体は、 バイトと文字の変換に当たる部分は SGML の通常の方法により、その結果の解釈は応用と実装に依存した方法により定めるものでした。 特定文字データ実体は文字実体の記述によく使われていました。
[14] 非SGMLデータ実体や非解析対象実体は、 例えば SGML文書に JPEG 画像を埋め込むような場合に使う想定だったようです。 それ以外にも SGML だけで記述しきれないものを扱うための拡張点として運用可能な仕組みでした。
[15] ただその柔軟性ゆえに具体的な利用方法や処理方法の規定が一切存在せず応用や実装に委ねられており、 相互運用性に欠け使いづらいという面もありました。
[1] データとして宣言し、参照のときに構文解析しない実体。 data entity。 備考 これには、文字データ実体, 特定文字データ実体及び非SGMLデータ実体の3種類がある。 (JISX4151‐1992 定義 (174))
[2] <!ENTITY name CDATA "data"> のようにして宣言される実体のことですね。
[3] データ実体を宣言するときに使用する鍵語 (規格参照具象構文の場合):
(名無しさん)
NDATA
は使えません。
また、内部データ実体にデータ内容記法を指定することはできません。(名無しさん)
[5] データ実体は、文字データ実体・特定文字データ実体は0文字以上のSGML文字の列、非 SGML データ実体は0文字以上の文字の列です。 (JIS X 4051‐1992 5.3 参照。)
内部データ実体は、実体宣言の実体値です。 (JIS X 4051‐1992 9.5.3 参照。)
[8] XML としての構文に合致しない実体を、 非解析対象実体といいます。
[9] ありがちな使用例としては、埋め込み画像とか、音とか、動画とか。 TeX の数式とか。
[10]
もっとも、 TeX みたいな text 系は SGML とも親和性が悪くないから、内容モデルが CDATA
な要素の内容にでもしておいて、 NOTATION
属性でその書式を明示しておくのが常套手段かも。
[11] 非解析対象実体は内部実体にはできませんから、必ず別のファイルなり資源なりが必要になってしまいます。だからやっぱり >>10 のような手が可能ならそうしたいかもしれません。特に短い内容ならね。
[6] あ、念のため。 >>10 は解析対象実体の一部を応用が SGML 以上の解釈をするだけであって、その部分に非解析対象実体が埋め込まれているとは言いません。