2002年4月28日(日)更新 |
■外部エンティティ
たけち: 今回は、複数のXMLファイルでひとつのXMLドキュメントを作る方法について学んでみよう。 さらら: えっ、複数のXMLファイルで? どういうことなの? たけち: そうだね。たとえば、万葉集は20巻あるよね。そのひとつひとつの「巻」をそれぞれXMLファイルとしてつくって、それをまとめるXMLファイルを作るってことなんだ。図のようなことなんだよ。 |
さらら: へぇ〜、そういうことなの。でもどんな風に書けばいいのかしら。 たけち: 前回に、エンティティ参照について学んだよね。 さらら: うん。⌣みたいにして参照したわね。 たけち: 基本的にはそれと同じようなやり方をすればいいんだよ。つまり、"エンティティの宣言と参照"をすればいいんだね。ただ、XMLドキュメントから他のファイルとして保存されている外部のファイルを参照するところが違うところだね。この外部のファイルのことを、"外部エンティティ"と呼んでいるんだ。 さらら: そうなの。"外部エンティティの宣言と参照"をすれば、複数のXMLファイルでひとつの大きなXMLドキュメントを作ることができるってことなのね。 |
■外部エンティティの宣言と参照
たけち: じゃぁ、外部エンティティの宣言と参照の書き方を見てみようね。 さらら: だっ、大丈夫かしら (^ ^; たけち: 大丈夫だよ。ともかく次の図を見てみて。DOCTYPEのところで宣言をして、ルート要素の中の必要なところで&エンティティ名;のように書いて参照するんだよ。 |
さらら: あ・・・前回のエンティティの宣言と参照と似ているのね。ちょっと、安心。 たけち: じゃあ、万葉集を例にXMLドキュメントを書いてみよう。 さらら: うん! |
■外部エンティティを使ったXMLドキュメントのサンプル
たけち: じゃあ、つぎの図を見てね。サンプルドキュメントmanyosyu(万葉集)は第1巻と第2巻から構成されていると考えているね。 |
さらら: volume1.xmlとvolume1.xm2がそれね。 たけち: そうそう。それぞれをDOCTYPEでvolume1とvolumeというエンティティ名で宣言しているね。 さらら: うんうん。で、外部エンティティを参照する場所には、&volume1;と&volume2;って書くのね。そうすると、それぞれのXMLファイルの内容がその場所に入るのね。 たけち: そうだね。じゃあ、サンプルのリストを次に載せておこうね。 |
万葉集サンプルドキュメント |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
たけち: 次の二つは、volume1.xmlとvolume2.xmlのリストだよ。 |
volume1.xmlのリスト |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
volume1.xm2のリスト |
---|
<?xml version="1.0" encoding="Shift_JIS"?> |
さらら: うんうん。だいたいわかるわ。 たけち: じゃあ、サンプルのリストを次に載せておくからクリックしてみて(Internet Explorer 6.0をお使いくださいね。)。あっ、XSLスタイルシートは指定していないから、構造とテキストが見えるだけど、ちゃんと外部エンティティ参照されてvolume1.xmlとvolume2.xmlのドキュメントが組み込まれたドキュメントが見えると思うよ。 |
外部エンティティ参照のサンプル: ext_sample.xml
さらら: あっ、見えた見えた。へぇ〜、外部エンティティねぇ〜。こういう風にして万葉集も20巻までつくって行けばいいのよね。 たけち: そうだね。今回はここまでね。次回はXSLTスタイルシートを適用してみようか。 さらら: うん。ありがとね。 → 次回はXSLスタイルシートの適用です。 |
注 (1) ここでのサンプルをご覧になる場合は、Microsoft社のInternet Explorer 6.0をお使いください。Internet Explorer 5.5ではうまく表示できないようです。Internet Explorer 6.0のインストールについては、XMLページをIEで表示させよう(基礎編-1)ほご参照ください。 注 (2) volume1.xml, volume2.xmlのそれぞれのファイルは次をご参照ください。 |