解析対象外エンティティを作成する
これまでは、内容としてテキストを含むエンティティについて説明しました。XMLパーサーはXML文書を読み込む際にこれらを認識して分析するので、テキストを含むエンティティのことを「解析対象エンティティ」と呼びます。ここで説明する「解析対象エンティティ」には、必ずしもテキストが含まれるとは限りません(テキストを含めることも可能です)。XMLパーサーは、このエンティティの解決を完全に会費します。この種のエンティティを使うと、テキスト以外またはXML以外の内容をXML文書に埋め込むことができます
1. XML文書に埋め込むデータを作成します。通常のテキストやイメージファイル、ムービー、PDFファイル、その他どのようなデータでも含めることができます。
JPEGイメージはよく解析対象外データとして使われます。ここで使われるイメージのファイル名はimage4c.jpgです。
DTDコード <!ELEMENT outline_specification (floor_chart*)>
<!ELEMENT floor_chart (name+, picture) >
<!ELEMENT name (#PCDATA)>
<!ATTLIST name language (Japanese | Latin) #REQUIRED>
<!ENTITY floor1_pic SYSTEM "image4c.jpg" NDATA jpg >floor_chartエンティティはimage4c.jpgという外部SYSTEMファイルを参照しています。jpgというNOTATION宣言にこのフィルの詳細が記述されています。
1. そのエンティティを使うXML文書のDTD内に <!ENTITY と入力してエンティティ定義を開始します。
2. abbreviation と入力します。
abbreviationの部分には、エンティティ参照のテキスト部分(そのエンティティを使うために入力するコード)を入力します。
3. SYSTEMと入力します。
これは、この略語がほかの文書内で定義されていることを示します。
4. "entity.url" と入力します。
entity.url の部分には、1.で作成したファイルのURLを入力します。
5. NDATA id と入力します。
idの部分には、解析対象外データを識別する名前を指定します。
6. > と入力して定義を終えます。
DTDコード <!ELEMENT outline_specification (floor_chart*)>
<!ELEMENT floor_chart (name+, picture) >
<!ELEMENT name (#PCDATA)>
<!ATTLIST name language (Japanese | Latin) #REQUIRED>
<!ENTITY floor1_pic SYSTEM "image4c.jpg" NDATA jpg >
<!NOTATION jpg SYSTEM "image/jpg">記法要素の名前は、エンティティ宣言のNCDATAの後ろの名前と同じでなければなりません。
1. DTD内の対照するエンティティ宣言の後に新しい行を作成し、<!NOTATION id と入力します。
<!NOTATION idの部分には、上の5.で使用した名前を入力します。
2. SYSTEMと入力します。
3. "content_information" と入力します。
content_informationの部分には、埋め込むデータについての除法を入力します。この情報には正式な形式はありません。
4. > と入力して記法宣言を終えます。
・解析対象外エンティティの内容にはどのようなものでも使用できます。一般には、イメージやサウンド、ムービー、その他のマルチメディアファイルを使います。通常のテキストでもかまいません。XMLパーサーはこのデータを解析しないので、何を使っても問題ありません。
・解析対象外エンティティは、XMLのデータ部分にしか含めることができません。DTDに含めることはできません。つまり、すべての解析対象がエンティティはパラメータエンティティではなく一般エンティティです。
・記法宣言の内容には、MIMEタイプ、解析対象外データを処理できるファイルアプリケーションのURL、その他どのようなものでも使用できます。正式な形式はありません。各XMLアプリケーションでは、記法宣言を自由に使うことができます。