Comments
Description
Transcript
XML入門
XML入門 ® 1 1 Agenda 1. What is XML? 2. Structure of XML 3. Stylesheet 4. XML API's 5. Conclusion ® 2 2 What is XML? ® 3 3 What is XML? • • • • HTMLの限界 SGMLとは? XMLとは? XMLの利用例 ® 4 4 WWWの飛躍的成長 • コストがかからない • 比較的文法が簡易であるHTMLの誕生と普及 ® 5 ここ数年の間に、WWW(Worle Wide Web)は爆発的に普及しました。このことは、HTML文 書の存在と深く関わりがあることは否定できないでしょう。 それでは、何故これほどまでに WWW、HTMLが普及してきたのでしょうか? HTMLの普及には、以下のような要因が考えられます。 • HTML文書中で使用するタグ、タグセットは非常に単純で種類も限られているた め、習得するのが容易 •作成されたHTML文書は、WWWサーバー上の指定されたディレクトリに置き、世 界中にあるクライアントマシン上のブラウザから、URLを入力するだけで参照するこ とが可能 • HTMLエディタ等のツール類が充実しているため、作成・メンテナンスが容易 • 配信、文書作成にかかる時間等のコストが低い 5 例: 書籍購入システム • インターネットを利用して、オンライン書店と企業 のデータベースを連携する • 書籍の購入データをHTMLで表現することは容易 だが、そのデータを企業のデータベースに入力す るには、人の作業が発生してしまう ® 6 ある企業の社員が、オンライン書店から書籍を購入し、会社でその書籍に関する管理を行う 場合について考えてみます。ここでいう管理には、経費精算処理や書籍管理などが含まれ ます。この登録作業を、インターネットとHTML文書を使用して構築した場合について考え てみます。 ※ ここでいう「人の作業」とは、手動で入力作業を行うことと、入力のためのしくみ(プログラ ム)を作成することを指しています。 6 例: 書籍購入システム 企業B データベース M HTML 文書 M 7 オンライン書店 データベース 手入 力 インターネット 書 書名・著者 籍 定価・出版日 デ ISBN ー 出版社 タ ..... 企業A データベース 手入力? or CGI? CGI? 書名・著者 定価・出版日 ISBN ..... ® 書籍には、上図の四角で囲まれた書籍データにあるようなもの(書名、定価など)があります。 これらのデータは書籍購入時に企業側が知りたい情報です。そこで、オンライン書店、企業 Aそれぞれで設定する事項は以下のようになります。 【オンライン書店】 1. 書籍データをデータベースに人が(手動で)登録する 2. 書籍情報を表すHTML文書を作成する 3. 許可するサイト(提携企業など)からのみ参照が可能となるように、セキュリティ対 策を行う 【企業A】 1. オンライン書店の書籍情報(HTML文書)をブラウザを使用して参照する 2. 表示された各データをデータベースに手動で入力する、またはコピー・ペースト を行う 上記のようなシステムを利用することにより、従来紙ベースで行っていた作業は大幅に軽減 されるでしょう。しかしながら、データ入力を行う際に、一つ一つのデータを手動で入力して いる箇所は改善する余地がありそうです。オンライン書店のデータベースから必要なデータ を取得し、まとめて企業Aのデータベースに保存するのが理想です。 従来は、この問題を解決するためにCGIとHTMLの組み合せ を使用して解決しました。 し かしながら、この方法ではデータを扱うためのコーディング作業が複雑になりがちで、拡張 性や保守性にも欠けていました。 7 HTML vs XML HTMLの場合 <html> <head> <title>XML入門</title> </head> <body> <h1>著者</h1> <ul> <li>赤坂 たろう</li> <li>男</li> </ul> <h1>書籍情報</h1> <p>1999年4月20日</p> <ul> <li>オラクル出版</li> <li>千代田区紀尾井町</li> </ul> </body> </html> デ ー タ 情 報 追 加 デ ー タ 情 報 脱 落 インターネット HTML 文書 ® 8 HTMLはあらかじめ規定された限られたタグのみを使用して文書を作成することしかできま せん。例えば、HTML上では、名前や性別といった要素が <li> という同じタグで表現されて いるため、ブラウザはこれらのデータを区別することができません。つまり、名前も性別も渡 されたブラウザ側では同じ種類のデータとしてしか参照されません。そのため、どのデータ が受け取り側データベースのどこに保存されるべきなのかを識別することができないのです。 HTMLの場合でも、各データの前に <!-- 名前 --> のようなコメントを追加することによって、 データを区別することができるかもしれません。ただし、多くのコメントを文書に記述するの は大変な作業量になりますし、データベースにデータ入力を行うためのプログラムも、コメン トを考慮して作成しなければなりません。このことから、プログラムが複雑で信頼性を欠くも のとなってしまう可能性が大きくなるでしょう。また、メンテナンス作業が大変になることも予 想されます。 8 HTML vs XML XMLの場合 <?xml version="1.0"?> <書籍情報> <書名>XML入門</書名> <著者 性別="男"> <名字>赤坂</名字> <名前>たろう</名前> </著者> <出版日 年="1999" 月="4" 日="20"/> <出版社> <社名>オラクル出版</社名> <住所>千代田区紀尾井町</住所> </出版社> </書籍情報> 情必 報要 をな 保デ 存ー タ 情必 報要 をな 保デ 存ー タ インターネット XML 文書 ® 9 XMLでは、規定されたタグだけではなく、独自のタグを作成して使用することが可能である ため、各項目に対して特別な作り込みをすることなく、それぞれの項目をデータ要素として プログラム上で扱うことができます。HTMLの場合のように、文書にコメントを追加し、データ 入力のプログラムに対してはタグを識別するためのコードを追加するといった複雑な作業は 必要ありません。各タグ(データ要素)がどのように扱われるのかを表すコードだけを追加し てやればよいのです。 9 HTMLの限界 • 拡張性がない・独自のタグの作成が不可 • データの意味を持たない トピア トピア 仕様で定められ ているタグのみで 記述されている <html> <body> <head> <title>お買い物リスト</ </title> title> </title> </head> </head> <p>1999年4月25日</ </p> <p> </p> <h1>スーパー</ </h1> <h1> </h1> <ul> <li>イチゴ</ </li> <li> </li> <li>牛乳</ </li> <li> </li> <li>クラッカー</ </li> <li> </li> <li>ミネラルウォーター</ </li> <li> </li> </ul> <h1>薬局</ </h1> <h1> </h1> <ul> <li>目薬</ </li> <li> </li> <li>トイレットぺーバー</ </li> <li> </li> </ul> </body> </html> ® 10 □ 拡張性がない HTML文書は、あらかじめ仕様で定められた限られた種類のタグのみで記述され ます。データの意味を含む独自のタグを作成することは、仕様上許可されていませ ん。 たとえ、HTMLで独自タグを使用したとしても、ブラウザはそのタグを認識する ことはできません。ブラウザがそれを認識するためには、そのタグがブラウザにイン プリメントされている必要があります。ただし、世の中に存在するすべてのブラウザ にインプリメントさせることは、現実的には不可能です。 我々に必要なのは、ブラウ ザに依存することなく、独自タグを作成することができる言語です。 □ データの意味を持たない HTMLにおいて、各タグはデータの意味を持ちません。HTMLで規定されているタ グは、文書を表示することに目的が集中しており、そのデータが何を意味している のかはタグから推測することはできません。例えば、「イチゴ」 も 「トイレットペー パー」 も同じ <li></li> というタグで囲まれています。この場合、各データを指定し ているタグ <li></li> から、それぞれのデータが、どのような要素・属性を持ってい るかはわかりません。 10 HTMLの限界 • WWWブラウザによる文書表示と閲覧の機能に限定される • 文書の再利用が直接的でない • 単一表示形態(view)しか提供しない word文書 word文書 HTML文書に変換 文書に変換 一部のデータ を変更 変更を反映させるためには、 再度変換する必要がある ® 11 □ 文書表示と印刷の機能に限定される HTMLにおけるタグの仕様は、非常に単純で限定されているため、今日のWWW の発展に大きく貢献してきました。 HTMLは、電子文書を表示・閲覧することに関 しては優れています。 しかしながら、仕様が厳密に規定されているがゆえに、アプ リケーションの要求に合わせて拡張することはできません。 □ 文書の再利用が直接的でない 例えば、ワードプロセッサで作成した文書のHTML文書への変換は、ボタン一つで 自動的に実行されますが、変換結果のための出力ファイルが要求されます。 この ため、オリジナル文書の一部のデータだけを変更した場合でも、再度HTMLファイ ル全体を再作成する必要があります。 データとして扱っていないため、データの変 更部分のみをHTML文書に反映させることはできないのです。 □ 単一表示形態 (view) しか提供しない ユーザーの要求に応じて、同じデータを異なる方法で表示するHTMLを記述する のは容易ではありません。 一度のブラウズで全ての情報・データを得たのち、それ らをクライアント側において様々な方法で参照できる手段が必要です。 例えば、時刻表データベースから乗車したい電車の時刻を検索するとき、まず「午 前10時から正午まで」 という条件を指定して検索します。しかし、該当データが予 想外に多かったため、条件を「午前10時から11時まで」 に絞って再検索を行いま した。このような場合に、サーバーへの再アクセスを行わず、一度目の検索で得た データをクライアント側で絞り込む処理ができれば、サーバーへの負荷を軽減する ことが期待できます。 11 SGMLとは? • • • • Standard Generalized Markup Language ISOが1986年に国際規格として制定 構造化文書 独自タグの作成が可能 ® 12 SGMLは、1986年にISOによって制定された、独自のマーク付け言語を作成するための仕 様です。 データを構造化し、文書管理システムが情報をスムーズに見つけられるようにしま す。 そのため、裁判所記録、統計資料やマニュアルといった、同じように構造化されたデー タを大量に扱う状況に非常に適しています。 しかしながら、あまりに複雑で難解なため、政 府、大手企業、大学などの一部のユーザーにしか受け入れられませんでした。 12 SGMLにおける構造化文書とは? • 各データは論理構造として認識される • レイアウトに関する情報はスタイルシートを用いる • 論理構造のテンプレート(DTD)を導入し、様々な文書を作 成する スタイルシート 論理構造化された 文書データ 変 換 表示・印刷が可能な文書形式 (レイアウト後) 構造化文書(レイアウト前) ® 13 □ 各データは論理構造として認識される 構造化文書では、レイアウトに関する指定はスタイルシートに任せて、文書が論理 的にどのように分割されているかのみが表されています。 例えば、ある本を執筆するときに、その本に存在する序や章といった論理構造とそ れぞれの内容文のみを意識して記述します。そのようにして出来上がったものに 対して、どのようなレイアウトにするかということを決めます。こうすれば、レイアウト に関することは意識しないで文書を作成することができるため、効率良く文書を作 成することが可能になります。 □ テンプレートの導入 構造化文書では、テンプレートという考え方があります。あらかじめ論理構造に関 する規定を作成しておき、それに合わせて文書を作成していけば、文書の統一化 を実現することが可能になります。また、そのテンプレートに合わせたスタイルシー トを作成しておくことにより、各文書に対するレイアウトをその都度考える必要がなく なります。 例えば、ある会社の製品マニュアルのテンプレートについて考えてみましょう。この テンプレートには、章、節、段落、図、付録があります。これに対してスタイルシート も作成しておきます。そうすれば、新しいマニュアルが必要になったときに、テンプ レートに対して必要な情報を入れるだけで、この会社で統一した製品マニュアルを 作成することが可能です。さらに、既存の製品マニュアルのレイアウトをすべて同じ ように変更したい場合、スタイルシートの変更と文書データの再変換のみで完了さ せることができます。このとき、文書データを変更する必要はありません。 13 SGMLの問題点 • • • • • 構造が複雑なため習得に時間がかかる 開発ツールの不足 DTDの作成が困難 厳格すぎる仕様 URLなどのインターネットに対応した機能が不足 ® 14 先に延べたように、SGMLは様々な利点があるにもかかわらず、それほど普及はしていませ ん。なぜでしょうか? その原因には、以下のようなものが挙げられます。 □ 構造が複雑すぎるために、習得や開発に時間がかかる XMLがわずか30ページほどの規格であるのに対し、SGMLの規格は500ページ にもなります。SGMLの仕様は非常に繁雑で、今となっては時代遅れの必要のな い機能までが規定されています。このため、習得するための時間を費やさなけれ ばならず、その仕様の複雑さから開発を行うにも時間を要します。 □ 開発ツールが不足している SGMLは、一般ユーザーにはあまり受け入れられなかったため、開発するためのツー ルは数が少なく、しかも高価です。そのため、SGMLを開発するためのツールは、 政府や大手企業などの一部ユーザーにしか利用されませんでした。 □ DTDの作成・管理が難しい DTDを作成する際には、対象文書の分析を十分に行わないと、その利点を有効 活用させることができません。そのため、作成には時間と労力を要しなければなら なくなります。 また、SGML文書では、DTDを含むことが必須条件となっているため、 文書の管理を論理構造だけでなく、DTDも含めた形で行わなければなりません。 以上のことから、文書がDTDに振り回されることになり、結果として、文書としての自 由度が制限されてしまっています。 ※ DTDでは、独自タグの定義を行います。詳しい内容については後述の「文書型 定義(DTD)」を参照してください。 □ インターネット対応機能が不足している SGML制定開始当時、インターネットというもの自体がそれほど浸透していなかった ため、それを意識した機能については触れられていません。そのため、URLサポー トなどの機能もありません。 14 XMLとは? • eXtensible Markup Language • W3C(World Wide Web Consortium)という非営利団体の SGMLワーキンググループが1996年から制定を開始 • 拡張可能なマーク付け言語 ® 15 □ XMLとは? ここまでで見てきたように、HTMLは、構文が簡易ですが独自タグを作成することが できないため拡張性に欠け、データ構造としての性質を持たない単なるフォーマッ ト言語にすぎません。一方、SGMLは、柔軟性に富みますが、構造が複雑すぎるた めに扱いにくく、制定が開始されたのが20年ほど前になるため、インターネット対 応の機能が不足しています。これらの問題を解決するために誕生したのが、XML (eXtensible Markup Language)です。 XMLは、SGMLのように独自タグを利用してアプリケーションで必要な情報などの データ構造を表すことが可能であると同時に、URLなどのインターネットに対応した 機能も実装されています。このことから、XMLは文書としての性質だけでなく、デー タとしての性質もあわせもち、インターネットを単なる文書の配送手段から、業務シ ステムのネットワーク化を効率良く実現する手段として注目されています。 15 XMLとは? • HTMLよりも柔軟で拡張性があり、SGMLよりも簡素なマー ク付け言語として開発 • データの論理構造と文書型定義を表すための規格・言語 • SGMLのサブセットを実装し、SGMLとの互換性を持つ Internet指向 Internet指向 XML URLを含むリンク スタイルシート ..... 文書型宣言 要素宣言 開始タグ 終了タグ ..... 省略タグ SGML宣言 ..... SGMLから引き継がれた機能 から引き継がれた機能 SGML ® 16 16 XMLがもたらす効果 さくら? 企業間におけるデータ交換が容易に! ? 賢い検索エンジンを実現! ® 17 □ 企業間におけるデータ交換が容易に! データがXML形式で表されていると、お互いのシステムがどのように構築されてい るのかを知ることも、それぞれのシステム上にデータを交換するためのプログラムを 新たに用意する必要もありません。DTDで定義された文書ルール(データ定義)に 従うだけで、企業間のデータ交換を実現することができます。 □ 賢い検索エンジンを実現! 例えば、「さくら」という"人"を検索しようとすると、「さくらサン」だけではなく、「花の さくら」や「株式会社さくら」といった結果も一緒に得られることになってしまいます。 これは、HTMLがデータとしての性質を持たず、意味を含まない文字列を表示して いるだけであることに因ります。しかしながら、XMLを利用することにより、「さくら」が 人の名前であるということをDTDを利用して表すことができるため、より的確な検索 結果を得ることが可能になります。 <名前>さくら</名前> 17 XMLの利用例 • インターネット上にある複数のデータベースを連携させる - オンライン ショッピング インターネット XML形式 XML形式 旅行代理店A 旅行代理店 旅行代理店B 旅行代理店 旅行代理店C 旅行代理店 デラックスハワイ 5日間・6日間 ホテルゴージャス ビジネスクラス利用 18万円~ A社主催 デラックスハワイ 6日間・7日間 ホテルプレミアム ファーストクラス利用 30万円~ B社主催 デラックスハワイ 5日間・6日間 ホテルゴージャス ビジネスクラス利用 18万円~ デラックスハワイ A社主催 6日間・7日間 ホテルプレミアム ファーストクラス利用 30万円~ B社主催 ® 18 XMLを利用した場合、どのようなメリットがあるのでしょうか? ここでは、具体的な例として、 パッケージ旅行のオンライン販売について考えてみたいと思います。 最近では、インターネットを利用してパッケージ旅行を販売している旅行代理店が少なくあ りません。パッケージ旅行というのは、主催する旅行代理店だけでなく、他の代理店でも販 売されることがあります。このように、Aという代理店で主催される旅行をCという代理店でも 販売するとき、パッケージ旅行に関するカタログデータ(行き先、日数、ホテル、値段など)を、 代理店Cは代理店Aから取得してくる必要があります。旅行のカタログデータを参照するた めに、代理店Cのサイトから代理店Aのサイトへリンクを張って参照させるということもできま すが、この場合はページのデザインに違いが出てしまったり、操作が制限されてしまう可能 性があります。もし、旅行代理店業界でタグを規定して、各代理店が、そのタグを利用して XMLベースのカタログデータを使用するようにすれば、各代理店のインターネットサイトに おいて、パッケージ旅行のデータの再利用が容易になり、データを扱う作業も手動ではなく、 自動でサーバーに登録することが可能になることが考えられます。 このように、各業界で規定したタグを利用してXML形式のカタログ(データ)を利用すると、イ ンターネットサイトの「見た目」や「操作性」に関する制約に縛られることなくデータの再利用 を実現することが容易になります。 18 Structure of XML ® 19 19 XML文書構造 • XML文書は、論理構造と文書型定義(DTD)から構成され ている 【文書型定義 (DTD)】 】 <!ELEMENT tag1 (subtag11, subtag12)> <!ELEMENT subtag11 EMPTY> <!ATTLIST subtag11 atr CDATA #REQUIRED > <!ELEMENT subtag12 (subtag2)> .......................................... 【論理構造】 <tag1> <subtag11 atr="atr_value"/> <subtag12> .................................. .................................. </subtag12> </tag1> XML文書 XML文書 ® 20 XMLの文書は、文書型定義 文書型定義( 文書型定義(DTD - Document Type Definition) と呼ばれる、独自で作成 したタグを定義する部分と、そこで定義されたタグを使用して作成される論理構造 論理構造の2つの 論理構造 部分から成り立っています。この論理構造が、XML文書の本体となります。ただし、XML文 書は、SGML文書のように厳格でないため、DTDを含まない論理構造のみから構成される 場合もあります。 DTDに関しては、後で述べます。 20 XML宣言 • XML文書の先頭に記述することが望ましい <?xml version="1.0"?> <?xml version="1.0" encoding="shift_jis"?> ® 21 XML文書では、先頭に上記のような記述をします。必須ではありませんが、記述している方 が望ましいでしょう。 この先頭の記述のことを、XML XML宣言 XML宣言 といいます。これは、文書がXML 1.0 に準じていること を示します。 「encoding=” XXXX”」 が省略された場合は、「encoding=“UTF-8”」 として処理 されます。 また、XMLでは、大文字と小文字が区別して認識されますので、<? <?XML <?XML VERSION=“1.0 VERSION= 1.0”?> 1.0 ?> と記述しても、XML宣言として認識されませんので注意してください。 21 独自タグの記述法 • 開始タグと終了タグは必ず一対一に対応している 開始タグ 要素の内容 <社名>オラクル出版</社名> 終了タグ 要素 • 空要素タグ - 単独でひとつの要素を表し、その内容は持たない - < と /> で囲まれた文字列として記述する <出版日 年="1999" 月="4" 日="20"></出版日> <出版日 年="1999" 月="4" 日="20"/ > ® 22 HTMLでは、終了タグの省略が許されている場合がありますが、XMLでは、開始タグと終了 タグは必ず一対一で対応しています。 開始タグから終了タグまでを 要素 と呼び、開始タグ と終了タグの間に記述されているものを 要素の内容 と呼びます。 XMLでは、要素の内容を持たない要素のことを 空要素タグ と呼び、これに対しては終了タ グを省略した上記のような記述を許可しています。 22 独自タグの記述法 • 論理構造 - 「要素の内容」として「要素」を含む 書籍情報 著者 名字 出版日 名前 出版社 社名 住所 - タグがオーバーラップしてはならない <著者 性別="男"> <名字>赤坂</ </著者 </著者></ 著者></名字 ></名字> 名字> • 属性 <書籍情報> 書籍情報> <著者 性別=" 性別="男 ="男"> <名字>赤坂</名字> <名前>たろう</名前> </著者 </著者> 著者> <出版日 年="1999" 月="4" 日="20"/> <出版社> 出版社> <社名>オラクル出版</社名> <住所>千代田区紀尾井町</住所> </出版社 </出版社> 出版社> </書籍情報 </書籍情報> 書籍情報> 属性値 <著者 性別=" 性別="男 ="男"> 属性 - 要素に付随する性質を表す - 属性値は必ずダブルクォーテーションで囲まなければならない ® 23 XML文書は、要素の階層構造として記述されます。つまり、「要素の内容」として、さらに「要 素」を指定することが可能です。この階層構造のことを 論理構造 と呼びます。 要素に付随する性質を表すものとして 属性 があります。これは、開始タグや空要素タグの 中で記述されます。HTMLで使用される属性とは異なり、XMLにおける属性は、必ずダブル クォーテーションで囲まれていなければなりません。 23 文書型定義 (DTD) • Document Type Definition • タグ、要素、属性などを規定するもの 要素型宣言 <!!ELEMENT 書籍情報 <!ELEMENT 著者 <!ATTLIST 著者 (著者, 著者, 出版日, 出版日, 出版社, 出版社, 書名) 書名) > 内容モデル (名字, 名前) > 性別 要素型 <!ELEMENT 名字 <!ELEMENT 名前 <!ELEMENT 出版日 <!!ATTLIST 出版日 属性リスト宣言 CDATA #REQUIRED > (#PCDATA) > (#PCDATA) > 空要素タグ EMPTY> EMPTY 年 月 日 CDATA #REQUIRED CDATA #REQUIRED CDATA #REQUIRED > <!ELEMENT 出版社 <!ELEMENT 社名 <!ELEMENT 住所 <!ELEMENT 書名 (社名*, 住所*) > (#PCDATA) > (#PCDATA) (#PCDATA) > 文字列 EMPTY> ® 24 DTDでは、文書本体の中で使用する独自タグの定義を行います。DTDには、以下のような 主な構文があります。 【要素型宣言】 要素の型を定義し、ここで定義された要素型は「開始タグ」や「終了タグ」として使 用することが可能となります。 要素型宣言は、<! <!ELEMENT 要素型 と <!ELEMENT で始まり、要素型 内容モデル が指定され > で終わる部分までの記述です。 【要素型】 要素の識別子、名前。開始タグ、終了タグ、空要素タグで使用されます。 【内容モデル】 要素が、どのような内容を持つのかを表します。 【属性リスト宣言】 各要素の含まれる属性の内容を定義します。属性リスト宣言は、<! <!ATTLIST <!ATTLIST で始 まり、> > で終わる部分までのテキストとして記述されます。 【EMPTY】 要素型宣言中の内容モデルに EMPTY と指定すると、この要素型は「要素の内容」 を持たないということを意味します。 【CDATA】 文字データを意味します。文書内で解析されない情報を表します。テキスト内のマー ク付け文字(&、<、> など)は解析されず、そのまま文字として表示されます。 【#PCDATA】 解析対象文字データ (parsed character data) です。要素型宣言中の内容モデル に #PCDATA と指定すると、そのデータはパーサによってマーク付け文字などは 解析されます。また、解析対象文字データは、&、<、または > 文字を含むことがで きません。それぞれ、&、< および > で表す必要があります。 24 整形式XML文書 (Well-formed XML) • 文書型定義(DTD)に従わない - 基本的に、DTDを持たない - DTDを持っている場合でも、宣言されていない要素型を使用できる • SGMLよりも自由に文書を作成・配布できる <?xml version="1.0"?> <書籍情報> <著者 性別="男"> <名字>赤坂</名字> <名前>たろう</名前> </著者> <出版日 年="1999" 月="4" 日="20"/> <出版社> <社名>オラクル出版</社名> <住所>千代田区紀尾井町</住所> </出版社> </書籍情報> ® 25 SGMLでは、DTDを必ず持たなければならないため、DTDが出来上がるまでは文書を作成 することができませんでした。また、SGML作成時に要素型を変更したい場合は、まずDTD の変更が必要になります。このように、常にDTDとの関連を意識しながら文書を作成しなけ ればならないため、開発効率は低下してしまいます。XMLでは、これらの問題を解決するた めに、DTDに必ずしも従わなくても良い文書を認めています。このおかげでXML文書では、 DTDには定義されていない要素型に対して一時的な対処を施すことができるため、DTDに 縛られることなく文書を作成することが可能です。 SGMLではDTDが必須であるため、SGML文書を配布する際には、DTDと文書をセットにし て配布しなければなりませんでした。 しかしながら、整形式XML文書は、DTDに拘束される ことがないため、DTDを使用して作成した文書を、DTDとは切り離してXML文書だけを配布 することができます。これは、インターネット対応を意識した機能のひとつといえるでしょう。 25 妥当なXML文書 (Valid XML) • 文書型定義(DTD)に従う 文書型宣言 <?xml version="1.0"?> <!DOCTYPE <!DOCTYPE 書籍情報 SYSTEM "http://www.oraxml.co.jp/pub_info.dtd"> <書籍情報> <著者 性別="男"> <名字>赤坂</名字> <名前>たろう</名前> </著者> <出版日 年="1999" 月="4" 日="20"/> <出版社> <社名>オラクル出版</社名> <住所>千代田区紀尾井町</住所> </出版社> </書籍情報> ® 26 文書型定義(DTD)に従うXML文書のことを、妥当な 妥当なXML XML文書 妥当な XML文書 と言います。 <!DOCTYPE <!DOCTYPE で始まり、> > で終了する 文書型宣言 の中で、参照するDTDファイルを指定します。この文 書型宣言は、XML宣言の直後に記述します。また、ここで指定されるDTDファイルは、ディ レクトリ上、又はURL指定が可能なネットワーク上のどちらに存在しても構いません。 26 Stylesheet ® 27 27 スタイルシート • 文書を、どのように表示するかを指定するためのもの スタイルシート 文書 <tag1>arg0</tag1> .............. <tag2> <tag21>apple</tag21> </tag2> tag1{color: red ..........} tag2{font-size: 10} .................. レイアウトはどうしよう? スタイルシートで指定しよう! ® 28 スタイルシートとは、文書をどのようなレイアウトで表示するかを指定するためのものです。 ここまで説明してきたように、XMLはHTMLとは異なり、独自タグを作成し、それを文書の中 に記述することができます。しかしながら、独自で作成したタグがどのように表示されるべき なのか (フォントのサイズはいくつで何色にするか、行間はどれくらいにするか など) を指定 しなければ、ブラウザ上でXML文書を表示させることができません。そこで、独自タグがどの ように表示されるべきなのかを指定するためにスタイルシートが必要となります。XMLのスタ イルシートとしては、CSSとXSLの二つが挙げられます。 28 カスケーディング・スタイルシート (CSS) • Cascading Style Sheets • 文書のより詳細な表示形式を指定する • HTML文書のより高度な表示形式を実現するために、 W3Cによって制定された <html> <head> <title>書籍情報</title> <STYLE TYPE="text/css"> h1 {color: red; text-decoration: underline } </STYLE> </head> <body> <h1>書籍情報</h1> ........... ........... </body> </html> ® 29 CSSは、元々HTML文書のより高度な表示形式を実現するために誕生しました。例えば、 <H1> というタグはフォントの色や大きさを細かく設定することができません。こういった HTMLの規定では実現することができない細かい表示形式の指定を可能にするのがCSSな のです。もちろん、CSSはHTMLだけでなく、XMLに対しても使用することができます。 また、上記の例ではHTMLファイルに埋め込まれていますが、別ファイルをインポートするこ とも可能です。 29 XSL • • • • eXtensible Stylesheet Language XML文書のためのスタイルシートを記述するための言語 DSSSLのサブセットを実装している CSSとの互換性を持つ SGML DSSSL XSL CSS XML HTML ® 30 □ DSSSLのサブセットを実装している XSLは、SGML文書向けのスタイルシートであるDSSSL(Document Style Sementics and Specification Language)のサブセットを含むことを前提として制定が開始されま した。 DSSSLは、スタイルシートと文書本体からフローオブジェクトのツリー構造を 作成し、このツリー構造を文書表示領域に割り付けるという方法で処理されます。 ここでいうフローオブジェクトの例としては、段落や文字やレイアウトに関するプロ パティ集合などが挙げられます。DSSSLは、LISPのようなScheme言語と呼ばれるも ので表現されますので、スタイルシートを作成するためにはScheme言語の知識が 必要になってしまいます。そこで、XSLではXMLユーザーが理解・習得しやすいよ うにXML形式でスタイルシートを表現できるようになっています。そのため、XSLを 利用するにあたり、新たに表現形式を習得する必要はなくなりました。また一方で、 DSSSL側ではXSLをサブセットとして利用できるようにするための拡張が提案され ています。 □ CSSとの互換性を持つ XSLでは、基本的にCSSのすべての関数をサポートします。 30 XSLサンプル list.xsl <?xml version="1.0" encoding="shift_jis"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"><xsl:apply-templates /></xsl:template> <xsl:template match="/list"> <html> <head> <title>書籍一覧</title> </head> <body> <center><h3>書籍一覧</h3> <table width="80%" border="1"> <th>書名</th> <th>著者</th> <th>出版日</th> <xsl:apply-templates match="item"/> </table></center> </body> </html> </xsl:template> list.xml <?xml version="1.0" encoding="shift_jis"?> <?xml-stylesheet <?xml-stylesheet type="text/xsl" href="list.xsl" ?> <list> <item> <title>XML</title> <author>赤坂 たろう</author> <published>99/11/11</published> </item> <item> <title>XML入門</title> <author>赤坂 たろう</author> <published>99/10/18</published> </item> </list> <xsl:template match="item"> <tr> <td><strong><xsl:value-of select="title" /></strong></td> <td><xsl:value-of select="author" /></td> <td><xsl:value-of select="published" /></td> </tr> </xsl:template> </xsl:stylesheet> ® 31 □ 1999年11月16日に出されたXSLT Recommendationでは、xslのNamespace URIは以下 を利用するように定められています。 http://www.w3.org/1999/XSL/Transform しかしながら、現時点(1999年11月25日)において、IE5では上記で示したようなWorking Draftで規定されている方法を利用しています。 □ XSLの中でCSSを以下のような形で組み込むことができます。 ・・・・ <xsl:template match="/list"> <html> <head> <title>書籍一覧</title> <link rel="stylesheet" type="text/css" href="listxsl.css" /> </head> <body> ・・・・ 31 XML API's ® 32 32 DOMとは? • • • • Document Object Model ツリーベースAPI 多くのメモリが必要 ツリーの構築に時間がかかる <?xml version="1.0"?> <書籍情報> <著者 性別="男"> <名字>赤坂</名字> <名前>たろう</名前> </著者> <出版日 年="1999" 月="4" 日="20"/> <出版社> <社名>オラクル出版</社名> <住所>千代田区紀尾井町</住所> </出版社> </書籍情報> 書籍情報 著者 DOM 出版日 出版社 名字 名前 社名 住所 赤坂 たろう オラクル出版 千代田区 紀尾井町 ® 33 DOM(Document Object Model)は、W3CのDOMワーキンググループによって制定が進めら れているXML文書やHTML文書のためのツリーベースAPIです。1999年9月23日に Level2の仕様が発表されました。 メモリ上にドキュメント構造のツリーを構築するため、多くのメモリを必要とします。 ツリーベースAPIは、文書全体を変換するといったような、広い範囲にわたる操作に対して は有効ですが、ある文書からGIFの添付部分のみを抽出したいといった部分的な操作を行 う場合には、メモリなどのリソースを無駄に消費することになってしまいます。 33 SAXとは? • Simple API for XML • イベントベースAPI 連続する一次イベント XML文書 XML文書 <?xml version="1.0"> <doc> <para>Hello, world !</para> </doc> SAX start document start element: doc start element: para characters: Hello, world ! end element: para end element: doc end document ® 34 SAX (Simple API for XML)は、内部ツリーを作成することなく、エレメントの開始や終了のよ うな解析中のイベント をコールバックを通してアプリケーションに直接通知します。したがっ て、文書全体に対する操作は行わないため、文書の一部に対して行う操作を実施したい場 合には有効です。 GUIでイベントをハンドルするように、様々なイベントを処理することが可 能です。そのため、文書全体をメモリやスワップ領域にキャッシュする必要もありません。 34 Conclusion ® 35 35 最後に XMLは ・ ・ ・ ・ ・ データとテキストの両方の性質をあわせ持つ形式であり、 HTMLでは実現できなかったデータの再利用 データの再利用を可能にします。 データの再利用 HTMLはレンダリングを行うためのWeb言語であるのに対し、 XMLはデータ交換を行うための データ交換を行うためのWeb Web言語 データ交換を行うための Web言語であるといえるでしょう。 言語 これらのことから、インターネット上の業務システムの実現を 促進することが期待されています。 。 ® 36 36 References • W3C XMLサイト http://www.w3.org/XML/ • US Oracle XML公式サイト http://www.oracle.com/xml/ • SGML / XML Cafe - 富士ゼロックス情報システム(株) http://www.fxis.co.jp/DMS/sgml/index.html • XML for the absolute beginner http://www.javaworld.com/javaworld/jw-04-1999/jw-04-xml-p.html • 「XML入門」 村田 真 編著 日本経済新聞社 ® 37 37 ® Enabling the Information Age 38