外部実体
外部一般実体
内部実体は文書実体の内部に定義されている実体でしたが
外部実体は、これとはことなり、参照する文書とは異なる場所に配置されているものです
外部一般実体は、実体が文書のファイルとは別の場所にあるもので
DTD で実体のアドレスを指定して、文書はそのアドレスの文書を展開します
これは、XML 文書は単一ではなく、複数の文書を結合することによって
一つの、完成した文書になる方法を持っていることを意味します
外部の実体を参照するには、DTD の ENTITY 要素で
置き換える文字列ではなく、SYSTEM キーワードと URL を指定します
<!ENTITY 実体名 SYSTEM "URL">
こうすれば、文書内の実体参照は、指定した URL のファイルを展開します
すなわち、部分ごとに XML ファイルを分割することができることを表します
<!--01.005.xml-->
<head>
<title>&KITTY;</title>
<copyright>Leon Akasaka</copyright>
</head>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE object [
<!ENTITY HEAD SYSTEM "01.005.xml">
<!ENTITY KITTY "Kitty on your lap">
<!ELEMENT object (head | document)>
<!ELEMENT head (title , copyright+)>
<!ELEMENT document (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
]>
<object>
&HEAD;
<document>
&KITTY;
</document>
</object>
サンプルを見る
この文書のサンプルを見れば、いかにこれが素晴らしいことかわかるでしょう
&HEAD 実体参照は、上の別の XML ファイルを、実際に表示する文書に挿入します
これによって、複数の XML 文書が同一のヘッダファイルを含むことができるようになります
HTML で、このように一つのページで複数のファイルを組み合わせる方法はありません
これを擬似的に行うためには、フレームを用いる方法がもっとも一般的でしたが
この方法も利用者を混乱させるばかりで、完全なものではありません
XML は、異なる文書を柔軟に組み合わせたり、共有したりすることができるのです
HTML ではできなかった高度な整合性を保つことができるようになるでしょう