Comments
Description
Transcript
chapter21 : 1999/11/21 (13:52)
chapter21 : 1999/11/21 (13:52) chapter21 : 1999/11/21 (13:52) chapter21 : 1999/11/21 (13:52) chapter 21 [第21章] XMLへの変換 Cheryl Kirk すぐに実践編に進むには: 258 ページ HTML から XML への変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 258 処理宣言の追加 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 259 文書型宣言の変更 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・260 足りない/一致しない終了タグの変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 260 属性値の前後への引用符の追加 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 260 大文字/小文字の一致 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・261 空の段落エレメントと行分割の削除/繰り返し ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・261 テキストのインデント ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・261 chapter21 : 1999/11/21 (13:52) 236 第 21 章 XML への変換 21.1 解説編 XML への変換処理には、膨大なチェック作業と綿密な計画が必要となる。どんな種類の文書 があるのか、変換対象となるのかどうか、文書を読んだり利用する人にとって(もしあれば)付 加的なソフトウェアは何かを調べる必要がある。また、統合された文書管理システムを作成す るのに、XML が他のシステムとどのように適合するのかも調べておかなければならない。 本章では、既存の文書を HTML から XML の形式に変換する方法を解説しよう。忘れないで ほしいのだが、すべての文書を XML 文書に変換する必要はない。おもに XML との接続を確 立するためだけの文書もある。いまある場所にデータをそのまま残しておき、XML と他のア プリケーションとの間に Web ブラウザやデータベースシステムといったインターフェイスを 単に作成することにしてもかまわない。文書を XML に変換する理由と、いまある状態に残し ておく理由についてもいくつか説明しよう。 21.1.1 現在の企業文書 まず、どこか企業を調べてみると、HTML 、Word 、PowerPoint 、データベース、Adobe の PDF( Portable Document Format )ファイルといった、さまざまな種類の文書が数多く見つか る。企業で XML の導入を決める場合には、最初に文書の種類を調べ、どれを XML に変換す る候補とするのか決めなければならない。いくつかの文書はもともとの形式の方がうまく動作 する場合もあるし、XML に変換した方がいい文書もある。 それでは、変換するのに適した文書はどのように決めるのだろうか? まず、既存の文書に どういった機能を持たせるのかを決める必要がある。また、イントラネット( またはインター ネット)を介してアクセスできるようにすることに利点があるかどうか、さらに文書を変換す ることが時間と経費の節約につながるのかどうかも考慮しなければならない。 どの文書を変換するか? Word や Excel 、Access のデータファイルを含め、まさに何でも XML に変換できる。ファ イルが単純な ASCII 形式のファイルかフレーム付きの Web ページかどうかは問題ではない。 たとえば、Microsoft Office のように XML のフィルタ機能と変換機能を搭載したアプリケー ションも間もなく登場するだろう。[ ファイル]メニューの[ 別名で保存]オプションを選んで ファイル XML 文書として保存すれば、簡単に XML 文書が作成できるようになるはずだ。 Web ページは、HTML と XML のマークアップ理論が似ているため、最も有力な変換対象 である。データファイルやデータベースも構造化された形式であるため、XML に簡単に変換 できるし、XML を介してアクセスすることも可能だ。必要なことは、データに関してもっと chapter21 : 1999/11/21 (13:52) 237 21.1 解説編 違った考え方で、データをどのように作成/保存するかである。XML への変換、または XML とのインターフェイスを考慮すべき文書の一覧表を次に簡単に示しておこう。 ・ HTML( Web )ページ すべての Web ページを変換する必要はないが、他のデータと依存関係を持つ Web ページ が変換対象となる。何度も繰り返し変更する HTML ページは、特に設計変更のような場 合には、XML に変換する最有力候補だ。 ・ Adobe の PDF( Portable Document Format )ファイル カタログや技術文書のような大量のデータを保存したファイルや、ユーザーが検索できる ようにしたい文書も、XML に変換する第一候補である。これとは反対に、パンフレット のような文書では見た目をそのままに保っておく必要があり、変換には適さない。 ・ Excel 文書 Excel 文書中に表組の形式で保存された情報は XML に変換でき、または XML を利用し て文書から情報を抜き出すこともできる。Excel スプレッドシート中の複数の列に情報が 繰り返されている場合、XML を利用してデータをもっと構造的にすることを考えた方が いい。また、Excel を持っていない他のユーザーと情報を共有する必要がある場合には、 XML を利用して、Web ページ上に Excel の情報を表示することも可能だ。 ・ Access データベースファイル Access データベースとのインターフェイスとして XML を利用すると、ユーザーは Web ブラウザを用いてデータを見れるようになる。または、Access データベースでいくつもの フィールドにテキストが比較的多く含まれている場合には、XML を利用して保存するこ とができる。さらに、自分のコンピュータに Access をインストールしていないユーザー と情報を共有する必要がある場合には、ODBC( Windows Open Database Connectivity ) が利用できる。この ODBC を利用すれば、Access データベースファイルと Web ブラウ ザとのリンクが作成でき、XML を利用して、情報をデータベースから Web ブラウザに転 送できる。 ・ テキストまたは Word の文書 全部の Word 文書やテキスト形式の文書を XML に変換するとなると厄介な作業だと思う かもしれないが、自分のファイル用に標準化した構造を作成しておく点を考えた方がい い。そういった構造で作成すれば、複数の文書から特定の情報が検索できるし、Internet Explorer 4 または Navigator 5 を利用しているユーザーにも文書が提供できるようになる。 文書の必要性の決定 次に、文書を XML に変換するかどうか決めるのに、文書の実際の必要性に関しても考えな chapter21 : 1999/11/21 (13:52) 238 第 21 章 XML への変換 ければならない。文書の変換について述べる際、実際には、文書処理と管理も含んだ幅広い問 題点を考慮することになる。任意の種類の文書に対して、以下の項目を考えてみてほしい。 ・ 文書の作成 ・ 文書の配布 ・ アクセス性 ・ 保守管理 ・ 全体の費用 これら文書の必要条件を変換処理に関連させながら、次に 1 つずつ見てみることにしよう。 文書の作成 あるグループの文書や、ファイルを別の種類に変換することに決めた場合、誰が作成して、 そういった文書を作成するのにどのプログラムを利用するのか、また今後の文書の作成にはど のプログラムと処理を利用するのかも考慮しなければならない。変換を考える際には、以下の 点を確認しておく必要がある。 ・ 文書の作成に責任を持つ人は、XML に詳しくなければならない。 ・ 文書を作成する人は、編集ツールや解析ツールを入手できなければならない。 ・ ツールの使い方を覚えるためのトレーニングがなければならない。 ・ 新しく XML 文書を作成する人は、標準化された DTD( Document Type Definition )やエ レメント、エンティティ、属性を利用できなければならない。 文書の配布 文書を作成したり変換したら、次の段階はそれらの文書を必要とする人に配布することだ。 文書を配布するには、いくつかの方法を用意しておく必要がある。イントラネット上の標準の Web サーバが利用できるし、特定のユーザーに送信するにはプッシュ型機構 CDF( Channel Definition Format )や OSD( Open Software Description )といった XML のボキャブラリ の利用も考えられる。また、電子メールを介しても配布できる。どの配布方式を選ぶにしても、 その方式で XML 文書が扱えることを確認しておかなければならない。ファイルをサーバ上に 配置してアクセスできるにしたら、その XML 文書中に配置された外部参照やリンクがかなら ず利用できるようにしておく点が重要である。 アクセス性 また、文書を XML に変換したら、アクセスできるようにしておく必要がある。つまり、ユー ザーはアクセスするためのツールを持っていなければならない。HTML 文書を XML に変換し chapter21 : 1999/11/21 (13:52) 239 21.1 解説編 た場合、XML ファイルを表示でき、XML パーサーやプロセッサを内蔵し、作成したスタイル シートで動作する Web ブラウザを利用しなければならない。利用するブラウザに合わせて企業 の文書管理方法を変更するか、または情報システム部門がそれぞれの社員のデスクトップのブ ラウザを更新する必要がある。すぐに変換処理に飛び付く前に、ネットワーク上の XML ファ イルにアクセスできることを保証しておかなければならない。さもないと、せっかく変換した のに、どれも自分の企業にとって利益にならないことになってしまう。 保守管理 ハードウェアであるコンピュータに保守管理が必要なように、XML 文書にも管理が必要だ。 サイト管理に関して、実際には、考慮しなければならないさまざまな要素が含まれている。た とえば、次に保守管理する必要のある XML のいくつかのコンポーネントと、その理由を述べ ておこう。 ・ DTD DTD は頻繁に更新することが多く、新しく定義した DTD を指すように文書を修正する必 要がある。また、既存の文書に適用できるよう、新たに DTD を作成する場合も多い。 ・ エンティティ たとえば、企業が社名を変更したり、経営者の名前が変わったり、新しいエンティティが 作成された場合には、エンティティ中に含まれている情報を新しい情報で置き換える必要 がある。 ・ スタイルシート スタイルシートも変更や更新を行う必要がある。全体の XML 文書の一部であるため、保 守管理する必要のある文書のリストにスタイルシートも含めておかなければならない。 ・ リンク リンクは XML 文書の一部であり、変更されてしまう可能性もあるため、これも保守管理 しなければならない。XML のリンク機構である XLink ではマルチリンク機能が備わって おり、HTML で厄介だったリンクが壊れている問題点を修復するのに役立つが、やはり XML 文書に保存されているリンクには注意を払う必要がある。 ・ サーバ XML ファイルや DTD や外部リソースをきちんと提供できるよう、サーバのファイルを設 定し直す必要がある。MIME ファイルに“ text/xml xml XML ”と 1 行追加するだけの単 純な場合もあれば、XML とのインターフェイスとなる大規模なデータベースを組み込む ために新しいハードウェアを追加するといった、複雑な作業の場合もある。 chapter21 : 1999/11/21 (13:52) 240 第 21 章 XML への変換 全体の費用 ファイルを変換するための優れたツールもあるが、文書をチェックしてもらったり、変換ソ フトウェアに備わっていない補足的な XML コードを書いてもらったり、結果をテストしても らうのにはやはり費用が発生する。 また、新しい XML 編集ソフトウェアを購入する必要もあるかもしれないし、利用する DTD を作成してもらったり、専用のスタイルシートをデザイナーに作成してもらうのに費用がかか る場合もある。さらに、XML 文書を表示するのに必要なソフトウェアのアップグレードと、新 しいソフトウェアの利用方法を社員に教えるための費用も考慮しなければならない。加えて、 新しい技術が利用できるようにサーバソフトウェアも更新する必要があるかもしれない。ほと んどの Web サーバは、簡単に XML ファイルを扱えるよう変更できるが、古い Web サーバソ フトウェアを利用している場合には、追加パッチを購入したりソフトウェア全部を入れ替えな ければならない可能性も出てくる。 全体の費用の一部として、トレーニング費用を含める点も忘れてはならない。新しい文書を 見る人だけでなく、特に新しいソフトウェアの利用を検討している場合には、実際に作成する 人のトレーニングも行う必要がある。適切なトレーニングを行わないと、標準化が完全に実施 されたことにはならず、新しい文書のすべての機能が活されたことにはならない。 文書そのものに加えて、実際には、文書処理全体を構築し直すことを忘れないでほしい。これは 一度壊してから組み立て直す必要があることを意味し、簡単に行える作業ではなく、また安価でも ない。 XML への変換処理 どの種類の文書を変換する場合も、変換処理は特定の段階を踏んで行う。実際の変換処理に ついては、本章の実践編で詳しく解説しよう。どの変換処理でも、以下のステップが標準的な 方法となっている。 1. すでに持っているどの文書とプロセスを利用するのか決める。 2. 変換を必要とする文書を調べる。 3. 変換にかかる概算時間を算出する。 4. 文書を変換するのに必要なリソース( 人員も含めて)を割り当てる。 5. 文書の変換に利用するツールを標準化する。 6. プロトタイプを作成して、テストグループ内でテストしてみる。 7. 算出した概算時間のアウトラインに従って文書を変換する。 8. 処理を文書化する。 chapter21 : 1999/11/21 (13:52) 241 21.1 解説編 9. ユーザーをトレーニングする。 10. 文書を利用するユーザーに配布して、ワークグループを通して変換ファイルを提供する。 11. 問題がないか調べてトラブルシューティングを行い、問題点があれば修正する。 21.1.2 文書変換の落とし穴 不適切な文書を変換候補に選んでしまうことから、DTD 用に間違ったエレメントを作成し てしまうことまで、変換への道のりにはいくつもの問題点が含まれている。次に、発生してし まう可能性のある問題点( と解決方法)をいくつか簡単に述べておこう。 ・クライアントとサーバの両方で利用しているソフトウェアが XML を理解できない場合 これは開発者たちが最も頻繁にぶつかる問題点だが、解決するのが一番簡単でもある。既存 の文書を XML に移すことを考える前に、まず最初に、ネットワーク上にあるシステムとサー バの性能を調べておく。XML 文書を解釈するのに設定データを更新する必要があるかどうか、 またパッチや新しいバージョンのソフトウェアが必要かどうかを調べる。現在利用しているソ フトウェアのいくつかは、更新しないと XML のバージョン 1 のファイルや現在のリンク仕様 でうまく動作しない可能性もある。また( スタイルシートを理解できて XML データファイル を表示可能にするために)Web ブラウザのソフトウェアや( XML 文書を提供できるようにす るために)サーバソフトウェアを更新しなければならない場合もある。いずれにせよ、サーバ 側とクライアント側のソフトウェアとして何が必要なのかがわかれば、ローカルのサーバ上と ネットワークに接続されたいくつかのワークステーション上でファイルをテストして、作成し た XML ファイルとサーバやブラウザソフトウェアがうまく動作するかチェックできる。 ・文書の変換にかかる時間を短く見積もった場合 コンピュータの不思議な世界では、これはかなりよく耳にする問題だ。どんなに優れたプロ ジェクト管理者でも、文書を実際に変換している最中に問題点にぶつかる。技術的な問題点の 場合もあるし、単にスタッフの人的なリソースが問題の場合もある。処理にかかる時間を短く 見積もってしまった場合の最善の解決策は、スケジュールにもう 1ヶ月から 3ヶ月分の時間を追 加するか、問題が発生した場合に備えて万一の計画を立てておくことだ。もう 1 つの方法とし ては、プロジェクト全体にかかる時間を算出し直し、問題点や遅れの埋め合わせに全体時間の 一定のパーセンテージを加えるというやり方もある。プロジェクトに参加する人のリストを作 成しておき、最も優先順位の高い文書を最初に変換するのに役立つよう、付加的なハードウェ アリソースやソフトウェアツールを箇条書きにしておく。こういった問題のよく起こる箇所を 回避するのには、優れたプロジェクト管理ソフトウェアが役立つ。Microsoft Project や他のプ ロジェクト管理ソフトウェアを利用して、どんな変更にも対処できるようにしておくことを考 chapter21 : 1999/11/21 (13:52) 242 第 21 章 XML への変換 えておくといいだろう。 ・文書の変換に間違ったソフトウェアを利用した場合 XML ツールを望む声が比較的多く、これに合うように急いで開発が進んでいるせいで、非 常に多くのソフトウェアメーカーが、言ってしまえば、ソフトウェアを安定していない状態で リリースしてしまっている。入手可能なソフトウェアのタイトルをすべてチェックし、プロジェ クトに利用する前にきちんとテストしておくことが大切だ。実際に利用する前に、以下の種類 のソフトウェアをテストしておくようにする。 ・ XML エディタ ・ XML パーサーとプロセッサ ・ サーバとサーバを補足する製品 ・ ブラウザ ・ リンクとシンタックスを自動的にチェックするツール ・変換した文書がオリジナルとまったく同じようには動作せず、表示もできない どんなソフトウェアを利用して変換した場合にも、すでにおわかりだと思うが、多くのユー ザーが不満を持つ形式に変換されてしまう。せっかく文書を変換したのに、元の方が変換した バージョンよりもうまく動作していたとユーザーが不平を言ってきた場合には、以下の点を自 問自答しなければならない。 ・ 文書をオリジナルの形式のまま残しておくべきか? ・ ユーザーをもっと教育する必要があるか?それとも、自分で慣れてもらうことにするのか? ・ 文書を表示するソフトウェアを更新する必要があるか? ・ スタイルシート、リンク、DTD に問題点があるか? ・ パーサーやプロセッサが正しく動作し、エラーも報告するようになっているか? 21.1.3 HTMLからXMLへの変換 変換したい文書の最も一般的な種類が HTML 文書である。実際、他の文書よりも HTML ファイルを XML に変換したいということの単純な理由の 1 つに、HTML 文書が XML 文書に 非常によく似ており、ほとんどの部分が簡単に変換できるからだということがある。現在入手 可能な Tidy のようなソフトウェア変換製品を利用すれば、思っているよりも変換作業は楽に 行える。 もちろん、非常に多くの Web ブラウザがいいかげんな HTML コードでも動作するように なってしまっているため、結局、変換処理のほとんどは、厳格な XML 規格に合うよう HTML chapter21 : 1999/11/21 (13:52) 243 21.1 解説編 コードを綺麗にする作業となる。次に、どんなときに HTML が最適に機能し、HTML ページ を XML に変換するのはどういったときが最適なのかをまず調べてみよう。 Web ページとして HTML が最善ではない理由 XML が HTML に置き換わってしまうとは考えないかもしれないが、この 2 つの言語を比較 した場合、HTML にはいくつかの制限があるという点に気が付くだろう。この点が理解できれ ば、どの HTML ページを変換しなければならず、どのページが現状でもうまく動作するのか 判断するのにも役立つ。このセクションでは、文書作成者の要望に HTML が合わない主な理 由を挙げてみよう。 HTML の制限を理解するには、HTML が何を行っていて、何がうまく処理でき、逆にうま く処理できないのは何かということを十分に理解しておく必要がある。HTML が有名になった 際、その機能が最大限にまで拡張されると同時に、その制限も顕著になった。 HTML の問題点は、比較的うまくデータを表示できるが、データの構造をどのように扱う かということについての手掛かりを持っていないという事実に根ざしている。Web サイトの設 計を始めると、HTML でうまく行える点はデータの表示だが、さまざまなプラットフォーム上 でデータを表示する機能が制限されてしまっている点にすぐに気が付くだろう。次に XML と HTML の相違点と類似点を深く調べてみるが、まず最初に、簡単な例を考えてみよう。 各種のプラットフォーム上で表示しなければならないデータ レット 企業のマニュアルやパンフ があると仮定しよう。ハンドヘルドの Windows CE 版のコンピュータを利用して いる外回りのセールスマンもいれば、机に座って Netscape Navigator を利用している事務員 もいるとしよう。加えて、Macintosh から Wndows ベースの PC にいたるまで、各種のコン ピュータを利用しているさまざまな顧客を抱えているとする。このデータを全員に配信するの に HTML を利用した場合、これまでに数多の Web サイト設計者が行ってきたのとまったく同 じことを行うことになる。つまり、それぞれの種類のユーザー用に、同一のデータを含んだ個別 のページを作成しておかなければならない。たとえば、Navigator ユーザー用に専用のページ を作成したり、Internet Explore に備わっている特殊な機能を生かしたいユーザー用にサイト を特別に設定したり、パームトップ型のポータブルコンピュータを利用しているユーザーが素 早く見れるように複数のページをまとめるといったことを行う。このようにしてサイトを構築 した場合、データに変更があると、すべての個々のバージョンのページに対しても同じ変更を 施す必要が出てくる。これは手間のかかる作業で、間違いも犯しやすい。HTML では、文書構 造に関する実際的な規格は何も提供していないのだ。ブラウザが許す限りはどんなコードでも 大丈夫だ。また、HTML 開発ツールの中には、HTML 規格に準拠していないものもある。つ まり、FrontPage で作成したコードの文書は、Claris 社の Home Page で書いたコードとは異 なって表示されてしまうことが多い。おわかりいただけただろうか? 次に、HTML では Web chapter21 : 1999/11/21 (13:52) 244 第 21 章 XML への変換 やイントラネット上で行えるすべてのことがうまく処理できる訳ではない理由を詳しく見てみ よう。 HTML がどんなイントラネット/インターネット文書に対しても動作する訳ではない理由 HTML は、各種のプラットフォーム上で文書を素早く表示するための簡単な解決方法として 開発されたものだ。最初は、文書はおもにテキストであるとみなされ、いくつかグラフィック が含まれていたり、別の文書や文書中の特定のセクションを指すリンクが 1 つか 2 つ含まれて いるだけと想定されていた。いろいろな要因 マルチメディア PC が少なかったことなど 帯域幅、ファイル形式の互換性のなさ、まだ から、動画や音声やデータベースなどへのアク セスを提供することは、まったく考慮されていなかった。つまり HTML は、さまざまなファ イル形式やデータではなく、テキストをベースにした比較的簡素な文書へのアクセス性を考え て設計されたものであり、ページ記述言語として開発されたものではなかった。テキストを非 常に単純に整形して表示できるが、PostScript のようなページ記述言語で行えるようなことは できないのである。1994 年頃から Web が流行し始めると、開発者やデザイナーたちは HTML のこうした制限にすぐに気が付いた。特に、HTML には次のような機能が備わっていないこと わかったのである。 ・ データをさまざまな方法で各種の出力表示装置に送信する機能 ・ 単純な一方向のリンクでなく、複雑なリンクを指定するオプション ・ 異なった種類のデータを構造化して記述するための柔軟性 ・ データをどのように表示するかの制御方式 PageMaker のようなページレイアウト用プログラムを使ってやるのと同じように Web ペー ジもデザインしたい開発者たちは、そのような機能が HTML に備わっていない点に気がつい たのだった。 21.1.4 HTMLを利用したXMLの補足 XML は、Web 上で構造化されたデータを扱うための優れた手段だ。データを表示する HTML の能力と組み合わせた場合、2 つのマークアップ言語は実際に互いに補足し合うことになる。 XML は、プレゼンテーションよりも構造を扱う機能を備え、複雑な Web アプリケーションを 作成するのに優れたマークアップ言語となっている。また、HTML に関する知識と経験があれ ば、より簡単に移行でき、XML の仕様に示されている考えも、より理解しやすい。 さらに、Internet Explorer は XML をサポートしており、Navigator も類似のサポート機能 を提供しているため、XML データを表示するのにスタイルシートが利用できる。特に Internet Explorer の場合には、XML ファイルの表示に Dynamic HTML のデータバインディング機能 chapter21 : 1999/11/21 (13:52) 245 21.1 解説編 も利用可能だ。加えて、どちらのブラウザも Document Object Model( DOM )をサポートし ているので、すべてのエレメントはオブジェクトとなり、スクリプト言語を介してプログラミ ングが可能になる。 自分のサイト上でダイナミックなコンテンツが表現でき、HTML の制限を気にする必要もな い。XML ではダイナミックなデータが作成できるだけでなく、さまざまな目的に利用可能な データソースも作成でき、サーバやクライアントコンピュータ上のアプリケーションと実際の サイトとの間の相互運用性も生み出せる。 XML は HTML と非常によく似ている。どちらの言語もエレメントを利用しており、つまり はエレメントで構成されていると言える。これは「タグ」という用語で表現したほうがわかりや すいかもしれない。しかし第 1 章で学習したように、実際には、タグはエレメントの一部なの である。これらのタグは、開始タグまたは終了タグのどちらかだが、HTML でタグと呼ばれて いるものとは同一というわけではない。専門的に言うなら、タグはエレメントを開始したり終 了するための単独エンティティである。たとえば、<P>タグは開始タグで、HTML 中で段落の エレメントを開始する。これに対して、</P>タグは終了タグで、段落のエレメントを終了する のに利用する。2 つのタグとこれらのタグで囲んだ間の内容がエレメント全体を表すことにな る。XML と HTML はどちらもタグを利用するようになっているが、これらのタグはエレメン トと呼ばれるもっと大きい単位の一部である。 HTML と同様、XML のおもな目的は文書の内容を記述することだ。しかし、HTML と XML の大きな違いがこの点でもある。HTML と違い、XML はコンテンツをどのように表示しなけ ればならないのかは記述しない。代わりに、コンテンツが何なのかということを XML では記 述する。XML を利用することで、Web の制作者はデータの関連性という見地から文書を記述 することで、その内容にマークアップを付けることができる。 違いを説明するには、実際に単純なサンプルを見てみることが最も簡単だろう。以下の HTML コードについては、すでによくご存知だろう。 <P>Gone With the Wind</P> このコードは、段落の内容を記述しているだけである。HTML ブラウザで処理されると、ペー ジ中に含まれている何らかの HTML のコンテンツに関連してテキストが表示される。この場 合、HTML は段落のエレメントの内容を表示する。 情報を表示したいだけならこれで十分だが、この情報を利用して何か行いたいと考えてみよ う。たとえば、検索可能な好みの映画のデータベースを作成したいとしよう。言い換えると、 単に情報を表示する代わりに、データとしての情報にアクセスしたいとする。この場合、XML を利用して「 Gone With the Wind 」という文をマークアップする必要がある。それにより、こ れらの単語が何らかの意味を持つことになる。XML では、単に段落の内容として単語を指定 chapter21 : 1999/11/21 (13:52) 246 第 21 章 XML への変換 する代わりに、以下のサンプルに示したように、もっと意味のあるものとして指定できる。 <FILM>Gone With the Wind</FILM> こうしておけば、スタイルシートを利用して、<FILM>エレメントの内容を自分の選んだ任意 の方法で表示できるようになる。 HTML と XML の相違 どういった場合に HTML から XML に変換するのが適切なのかを理解するには、2 つのマー クアップ言語の違いを理解しておく必要がある。知っておくべき大きな違いを表 21-1 に簡単 に示しておいた。この表を眺めながら、自分の手元にある文書について考えてみてほしい。 表 21-1 HTML と XML の相違点 HTML XML おもに表示目的に利用する。含まれている情報の 構造に関しては少しの知識で済む。 データの構造化に利用し、表示するために利用するの ではない。 特定のユーザー用のタグを作成する柔軟性を開発 者に与えていない閉じた言語で、タグの新しいセッ トはどれも W3C が作成することになっている。 新しいエレメントを自由に作成でき、ページに新しい エレメントをブラウザが組み込める。 覚えるのが比較的簡単。 覚えるのは簡単ではなく、計画的なトレーニングが必 要。 タグに大文字/小文字の区別はない。 エレメントや属性、他のすべてのものに大文字/小文 字の区別がある。 文書中の空白は無視される。 文書中の空白は無視されない。 21.1.5 HTMLとXMLのシンタックス上の違い 次に、HTML と XML の相違点だけでなく類似点も調べ、一方のマークアップ言語から他方 へ移行するのに何を変更しなければならないのか説明し、さらにオリジナルの HTML 形式の ままにしておかなければならない文書もあることの理由についても解説する。この 2 つの言語 には、特に適切な HTML コーディングの規則に従ったことがあれば、多くの類似点がある点 が理解できるだろう。以下に、XML の必要事項とそれらが HTML にも存在するかどうか述べ ることにしよう。 ・XML では複数のライブラリのエレメントが利用でき、ライブラリに限定されない XML 文書を作成する場合、まず最初に専用のエレメントと属性を作成し、それらを利用し て文書の構造を記述する。これに対して HTML では、利用するタグのセットが事前に定義さ れている。属性を操作したり変更することはできず、またエレメントのコンテンツ中に記述で chapter21 : 1999/11/21 (13:52) 247 21.1 解説編 きる値の種類や、文書を整形するのに用いるエレメントタグの名前も変更できない。 ・HTML では、いいかげんな文書を作成しても大丈夫である たとえば、何度 HTML 文書のソースを表示させ、またくだらない間違いや書き忘れたエレ メントを見つけ出してコードを何度書き直したか思い出してみてほしい。正しい HTML のシ ンタックスを理解していないために問題が起こることもあるし、HTML エディタが HTML の 仕様に準拠していないせいで問題が発生する場合もある。現在のブラウザのほとんどは比較的 寛容であるため、そういった間違ったシンタックスでもうまくこじつけてデータを表示する。 つまり、HTML を利用すると、いいかげんなコードが記述できる。たとえば、別の文書へのリ ンクを指定する際に、<ANCHOR>エレメントに</A>を加えなかった場合、その位置から以降の残 りのテキストが 1 つの大きなハイパーテキストのリンクとして表示される。自分が意図してい るとおりではないが、それでも表示はされるのだ。 ・XML ではいいかげんなコードは許されない どの XML 文書でも体裁が正しく整っていることが一番重要である。タグは正しく入れ子に なっていなければならないし、開始タグには対応する終了タグが必要である。終了タグが 1 つ でもないと、XML プロセッサはエラーを返してしまう。HTML で大丈夫だったいいかげんな コードはまかりとおらない。データや情報が適切に表示されるだけでなく、データの構造も明 確かつ正確に定義されていなければならない。 ・XML はパーサーに XML 文書であることを知らせる必要がある HTML ブラウザでまかりとおったもう 1 つのいいかげんな点は、文書に何のマークアップ言 語を利用するのかということを宣言しないことだ。HTML 2 または HTML 4 を利用している かどうかで、通常、ブラウザはデータをどのように表示するのかわかる。HTML ファイルの先 頭に文書型宣言が書かれていない HTML 文書も多い。XML を利用する場合、記述している文 書が XML 文書であることを宣言し、XML 仕様のどのバージョンを利用するのかも明記してお かなければならない。これを行うには、次のコードの XML 宣言を利用する。これはどの XML 文書の先頭にも記述されている。 <?XML version="1.0"?> ・XML ではすべてのエレメントは開始タグと終了タグを持たなければならない 単一の Web ページを作成する場合であっても、少なくとも 1 つはエレメントを利用するこ とになる。たとえば、Web ページのタイトルを指定するのに、<TITLE>エレメントを利用する はずである。どこからタイトルが始まって、どこで終わっているのかをブラウザに伝えるには、 次に示したような開始タグと終了タグを利用する必要がある。 chapter21 : 1999/11/21 (13:52) 248 第 21 章 XML への変換 <TITLE>This is the title of my Web page</TITLE> HTML ページに終了タグの</P>を指定しないで段落エレメントの<P>をいいかげんに記述 していることも多いだろう。この点に関しては、多くの HTML 開発者が間違いを犯しており、 HTML ページを作成するプログラムの多くも、終了タグの</P>を付けずに<P>エレメントを挿 入してしまっている。しかしながら、これは XML では許されない。すべてのエレメントは開 始タグと終了タグを持たなければならない。これまでに自分で作成した HTML コードを調べ、 どれくらい終了タグを利用しているかチェックしてみてほしい。結果に驚かされることだろう。 ・XML では空エレメントも正しく整形されなければならない 多くの開発者たちが無数の HTML ページを作成してきたが、おそらく空エレメントという ようなものがあることを知らなかっただろう。HTML だけではなく、XML でもこの空エレメ ントは数多く利用される。HTML で出会う空エレメントの 1 つに<IMG>として指定された画像 エレメントがある。HTML では、特定の画像ファイルへのリンクを指定するのに、次のコード を記述するはずである。 <IMG SRC="file.gif"> これは空エレメントとみなされる。理由は何のコンテンツも関連付けられていないからであ る。 “ file.gif ”は SRC 属性の値で、<IMG>エレメントのコンテンツとはみなされない。しかし、 それでも<IMG SRC="file.gif">はタグである。唯一の問題はコンテンツがない点で、このエ レメント宣言に終了タグを追加するという考えは、おそらく奇妙に感じるかもしれない。だが 忘れないでほしいのだが、XML ではどの開始タグも終了タグを持たなければならない。それ では、コンテンツがなく、終了タグを指定しなければならないエレメントの場合にはどうした らいいのだろう? 次の 2 つどちらかの記述が行える。つまり、このエレメントをコンテンツ のない空エレメントとして次のように指定するか、 <IMG SRC="file.gif"></IMG> もしくは、XML では一般的になってきている書き方ができる( Internet Explorer のチャンネ ルを作成するのに Channel Definition Format を利用すると、もっといろいろな書き方が可能 となる) 。具体的には、次のようにして空エレメントが指定できる XML 文書に空エレメン トを指定するには、後者の方法の方が好ましい。 <IMG SRC="file.gif" /> 自分の作成した HTML 文書をチェックしてみてほしい。コード中に空エレメントがどれほど 多く存在するのか気が付くはずだ。これで HTML 文書から XML 文書へ変換する際にどれく chapter21 : 1999/11/21 (13:52) 249 21.1 解説編 らいの作業が必要となるのかある程度わかるだろう。 また XML では、属性の値をすべて引用符で囲んでおかなければならない。ここではエレメ ントに関して述べているのだが、たまたま属性を 1 つ含んだ空エレメントをいま取り上げたの で、この点についても説明しておこう。HTML では、テキスト文字列や URL といった特定の 属性の値だけを引用符で囲み、他の値は囲まなくてかまわない。たとえば、次のコードを見て みよう。 <FONT SIZE=+1>This is one size larger</FONT> <FONT>エレメントの SIZE 属性に+1 という値を指定しても、HTML ではうまく動作する。こ れはブラウザに対する指示で、エレメントで囲んでいるコンテンツ用に、テキスト表示に用い るデフォルトフォントを 1 ポイント大きくしている。HTML では SIZE 属性の値の前後を引用 符で囲む必要はないが、これが XML 文書であった場合には、引用符で囲まなければならなく なる。XML 文書の体裁を整えておくには、いまのコードを次のように修正する必要がある。 <FONT SIZE="+1">This is one size larger</FONT> 属性の値の前後を同じ種類の引用符で囲む( 文書全体で統一した引用符号を利用するのであ れば、一重引用符や二重引用符のどちらを利用してもかまわない) 。また、次のサンプルのよう に、属性が単一の値( デフォルト値)を持つ場合も、値を引用符で囲んでおく必要がある。 <ELEMENT ATTRIBUTE="default"> ・XML を利用する場合、タグは正しく入れ子になっていなければならない 読者が気難しい開発者であれば、おそらく HTML 文書中でも正しくタグを入れ子にして記 述していただろう。もしそうならば、上級 XML 開発者に半分は仲間入りしている。だが、正 しく入れ子にしない人も多く、他の人の作成した HTML 文書で作業しなければならないよう な場合には、変換チェックプログラムを利用したり、コードを自分で読んでみて、タグが正し く入れ子になっているかどうかチェックする必要がある。XML でタグを正しく入れ子にして記 述するには、最後に開始したタグを最初に終了させなければならない。たとえば、次のコード は HTML ではうまく動作するが、XML では動作しない。 <I><B>This is bold and italics</I></B> この場合、<B>タグを最初に閉じなければならない。最後に開かれているからだ。この点に関 しては、XML は非常に厳密で、特定の部分がどこから始まってどこで終わっているのかパー サーでチェックする。次のコードは、先ほどの XML 文書でボールドとイタリックのエレメン トを正しく入れ子にしたものだ。 chapter21 : 1999/11/21 (13:52) 250 第 21 章 XML への変換 <I><B>This is bold and italics</B></I> 正しく入れ子にして記述しておかないと、XML パーサーは文書をどのように構造化するの かわからなくなってしまう。XML のキーポイントは構造化であって、整形ではない点を忘れな いでほしい。文書を整形しているだけならば、自宅の壁にペンキを塗るのをいいかげんに済ま せてしまうのと同じように、いくぶん大雑把に記述してもかまわない。だが、自宅を建てると きにはかなり慎重になるように、文書を構造化している場合も十分に注意する必要がある。基 礎がきちんとしていないと、家の骨組みもしっかりしなくなり、2×4(ツーバイフォー)で建て た壁も結果的には崩れてしまうだろう。 また、エレメント同士を重ねることもできない。たとえば、次のコードは正しくないとみな される。 <publisher>Coriolis<publishertype>Computer Book publisher</publisher></publishertype> このコードは、正しくは次のようになる。 <publisher>Coriolis<publishertype>Computer Book publisher</publishertype></publisher> HTML では空白は無視される。HTML 文書中には、HTML コードと文章を分けてもっと読 みやすくするために空白を利用できる。単一の空白文字に続けて指定した空白を HTML はす べて単純に無視する。しかし、XML は空白をデータとして認識し、文書をパーサーに処理さ せた際に無視しない。つまり、次のコード <film>Pretty Woman starring Julia Roberts</film> は、以下のコードと同じではない。 <film>Pretty Woman starring Julia Roberts</film> HTML 文書を XML 文書に変換する場合、HTML ソースコード中に記述した余計な空白や 改行はすべて削除する必要がある。テキストエディタの検索/置き換え機能を利用するだけで、 文書中から簡単に余計な空白が削除できる。 ・XML では文字をいつデータとするのか指定しなければならない 特定の文字を文字データとして扱ってもらいたい場合があるだろう。たとえば、XML エレ メントのコンテンツが XML のサンプルコードで構成されていて、そこに登場する個々の予約 chapter21 : 1999/11/21 (13:52) 251 21.1 解説編 されている文字を 10 進コードで置き換えることなく、単純に文字データとしてマークアップす ることができる。 <![CDATA[Rope]]> HTML を利用する場合、すべてが文字データとしてみなされるため、データがいつ文字デー タで、いつ文字データではないか指定する必要はない。HTML では、テキストをどのように見 せるのか整形するだけで、文字データかどうかは関知していない。 ・HTML と違って、XML では大文字/小文字の区別がある 文字の区別は XML では重要だが、HTML では重要ではない。XML 文書中でエレメントを 宣言して利用する場合には、同じ大文字と小文字の綴りで記述する必要がある。次のコード <director>Alfred Hitchcock</director> は、以下のコードと同じではない。 <DIRECTOR>Alfred Hitchcock</DIRECTOR> これも任意のテキストエディタで検索/置き換え機能を利用すれば、大文字/小文字が一致 するようにエレメントを変更できる。 21.1.6 HTMLからXMLへの変換 これまでに見てきたように、HTML 文書を XML 文書に変換する際にくつか注意を払わなけ ればならない。このセクションでは、リスト 21-1 に示した簡単な HTML 文書を実際に XML に変換してみよう。 リスト 21-1 変換する簡単な HTML 文書 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <TITLE>Domains</TITLE> </HEAD> <BODY TOPMARGIN="0" LEFTMARGIN="40" BGCOLOR="#FFFFFF" LINK="#000066" VLINK="#666666" TEXT="#000000" BACKGROUND="../images/backgrnd.gif" BGPROPERTIES="fixed"> <!-Questions and Answers Start here--> <H1>Domains</H1> <P><A NAME="domain1"><STRONG> chapter21 : 1999/11/21 (13:52) 252 第 21 章 XML への変換 Q. How do I change Domain Names?</STRONG></A></P> <P><STRONG>A.</STRONG>Make sure everyone is logged off the computer. The computer will prompt for a reboot and select "Reboot Now".<P> <HR> <P><STRONG>Q. How do I move a Workstation to another Domain?</STRONG></A></P> <P><STRONG>A.</STRONG>Logon to the Workstation locally as Administrator and go to Control Panel. Double click Network and click change. Enter the new Domain name and click OK. You will receive a message "Welcome to Domain x". Reboot the machine and you are part of the new domain.</P></BODY> </HTML> この文書には、正当性を持っていて体裁が正しく整った XML 文書にするために変更しなけ ればならない箇所がいくつも含まれている点に注意してほしい。定義する必要のあるエンティ ティや正しく入れ子にしなければならないタグ、構造を作成するのに定義しなければならない エレメントも含まれている。実際の変換作業に進む前に、すべての HTML 文書に対して行っ ておかなければならない処理を次に見てみよう( 以下のポイントは考慮しなければならない順 番で記載してある) 。 1. 変換する HTML 文書に DTD が必要であれば作成しておく。HTML 文書は DTD を持た ない点を忘れないでほしい。最初に DTD が必要かどうか判断し、次にどのように構築す るのかを決める。 2. 文書を調べ、/>デリミタか終了タグのエレメントで閉じる必要のある空エレメントをチェッ クする。一般的には、終了タグのエレメントを利用した方がいい。XML 文書が下位互換 となるからだ。変換しなければならない空のタグのリストを表 21-2 に示しておいた。空 のタグで閉じるようにしておけば、エレメントも正しく入れ子になっていると仮定され、 体裁の正しく整った文書が作成できる。 3. 文書を調べ、&や<記号のような参照エンティティにしなければならない文字をチェック する。 4. 全部のタグの名前を大文字に変更して、どれがエレメントや属性で、どれがコンテンツ か簡単に区別できるようにしておく。また、このように変更しておくと、文書全体で同 じ大文字/小文字を強制的に用いることにつながる。実際には、大文字/小文字を任意 に組み合わせて利用できるが、文字の区別は XML の重要な特徴である。 5. 文書を調べて全体の構造をチェックし、エレメントを入れ子にする順番を決める。 chapter21 : 1999/11/21 (13:52) 253 21.1 解説編 6. 単一ピクセルの白い GIF 画像が指定されている場所を見つけ出す。これらは XML では 空白に変換される。こういった種類の「スペーサ」用画像への参照はすべて置き換える必 要がある。 7. 文書中でスペーサとして利用されている空のテーブルを削除する。 表 21-2 変換が必要な空のタグ タグ名 指定場所 変換 AREA 本体中 <AREA></AREA>または<AREA /> ATOP 本体中 <ATOP></ATOP>または<ATOP /> AUDIOSCOPE 本体中 <AUDIOSCOPE></AUDIOSCOPE>または<AUDIOSCOPE /> BASE ヘッダ中 <BASE></BASE>または<BASE /> BASEFONT 本体中 <BASEFONT></BASEFONT>または<BASEFONT /> BR 本体中 <BR></BR>または<BR /> CHOOSE 本体中 <CHOOSE></CHOOSE>または<CHOOSE /> COL 本体中 <COL></COL>または<COL /> FRAME 本体中またはヘッダ中 <FRAME></FRAME>または<FRAME /> HR 本体中 <HR></HR>または<HR /> IMG 本体中 <IMG></IMG>または<IMG /> ISINDEX ヘッダ中 <ISINDEX></ISINDEX>または<ISINDEX /> KEYGEN 本体中 <KEYGEN></KEYGEN>または<KEYGEN /> LEFT 本体中 <LEFT></LEFT>または<LEFT /> LIMITTEXT 本体中 <LIMITTEXT></LIMITTEXT>または<LIMITTEXT /> LINK ヘッダ中 <LINK></LINK>または<LINK /> META ヘッダ中 <META></META>または<META /> NEXTID ヘッダ中 <NEXTID></NEXTID>または<NEXTID /> OF ヘッダ中 <OF></OF>または<OF /> OVER 本体中 <OVER></OVER>または<OVER /> PARAM 本体中 <PARAM></PARAM>または<PARAM /> RANGE ヘッダ中 <RANGE></RANGE>または<RANGE /> RIGHT 本体中 <RIGHT></RIGHT>または<RIGHT /> SPACER 本体中 <SPACER></SPACER>または<SPACER /> SPOT 本体中 <SPOT></SPOT>または<SPOT /> TAB 本体中 <TAB></TAB>または<TAB /> WBR 本体中 <WBR></WBR>または<WBR /> chapter21 : 1999/11/21 (13:52) 254 第 21 章 XML への変換 エレメント、エンティティ、DTD の作成 ここではエレメントや属性やエンティティを作成する全体的な処理には立ち入らない。処理の 流れについては、第 8 章と第 9 章および第 10 章に解説してある。代わりに、サンプルの HTML 文書用にどういったエレメントを宣言するのか考えてみよう( リスト 21-1 参照) 。まず、質疑 応答型の文書なので、そういう形でこの文書用にエレメントを定義し、そのエレメントを利用 して文書構造を作成する必要がある。 <OVERALLSUBJECT> <TOPIC> <TITLE> </TITLE> <QUESTION> <EXAMPLE> </EXAMPLE> </QUESTION> <ANSWER> <EXAMPLE> </EXAMPLE> </ANSWER> </TOPIC> </OVERALLSUBJECT> サンプルの HTML ファイルに用いられていた整形はスタイルシートに任せる。このコード は、質疑応答形式用のおもなエレメントをリストしたものだ。 XML 処理宣言の指定 最初に行わなければならないことは、XML 処理宣言を指定して、文書を HTML から XML に変換することである。 <HTML> . . . </HTML> 上記のコードは、次の XML コードになる。 <?XML version="1.0"?> この宣言を記述したら、あとは文書中の残りのコードを処理するだけだ。いくつか HTML コードを適切な XML コードに置き換え、空エレメントを正しい XML のエレメントに変換し、 新しい種類のリンクを定義し、スタイルシートを文書と結び付ければいい。この時点で、すで に DTD を作成してあるものと仮定し、この XML 文書全体で DTD に定義されたエレメント chapter21 : 1999/11/21 (13:52) 255 21.1 解説編 を属性を単に利用するものとしよう。 DOCTYPE 宣言の指定 どのエレメントのタグを変換しなければならないのか調べたら、最初の段階として、XML 宣 言のすぐ後ろに文書型宣言を指定して、XML の正当性と体裁が整っている点を示す。この文書 型宣言で、どの DTD を利用して文書のツリー構造を組むのかを指示する。宣言は外部の DTD を指すようにしてもかまわないし、内部の DTD を指定してもかまわない。 リスト 21-1 に示した HTML のサンプルでは、 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> というコードで、これが HTML 文書であり、HTML という DTD を利用することを指定して いる。これを変更して、作成した DTD を利用するか、もしくはこの種の文書用に前もって作 成されている DTD を利用するように変えなければならない。XML の文書型宣言は HTML と 同じ方式で行う。この場合の HTML 文書の文書型宣言は、XML 文書では次のようになる。 <!DOCTYPE DOCUMENT SYSTEM "QANDA.DTD"> もちろん、この文書型宣言は XML 処理宣言のあとに指定する。ここまでに変換した HTML ファイルは次のようになる。 <?XML version="1.0"?> <!DOCTYPE DOCUMENT SYSTEM "QANDA.DTD"> 文字から一般的なエンティティへの変換 次の段階は、一般的なエレメントに変換する必要のある文字を調べることだ。サンプルの文書 では、アンパサンド記号を変換しなければならないが、通常は次の文字も変換する必要がある。 ・ < :開きかぎ括弧 ・ > :閉じかぎ括弧 ・ & :アンパサンド ・‘:一重開き引用符号 ・ ’ :一重閉じ引用符号 ・“:二重開き引用符号 ・” :二重閉じ引用符号 XML 文書のコンテンツにこれらの文字が利用されている場合には、XML に用意されている 事前に定義されたエンティティに変換する必要がある。たとえば、アンパサンドは次のように chapter21 : 1999/11/21 (13:52) 256 第 21 章 XML への変換 DTD で定義されている。 <!ENTITY amp "&"> XML 文書中では次のようにして参照する。 & 属性値を引用符で囲むように変換 リスト 21-1 に示したサンプルの HTML では、値を指定したタグ属性が数多くある。これら の値は引用符で囲まれていない。文書中の属性の値を全部引用符で囲まなければならない。た とえば、 <BODY BGCOLOR=RED> というコードは、次のように変換する。 <BODY BGCOLOR="RED"> 属性の値を引用符で囲む規則で統一されていない HTML コードがどんなに多いかおわかり だろう。テキストエディタの検索/置き換え機能を利用して、属性の値を引用符で全部囲むよ うに変換できる。手作業で処理するとなると非常に手間がかかってしまうので、エディタを利 用した方がいいだろう。 リンクの XLink 形式への変換 HTML 文書を XML に変換する際の重要な点の 1 つに、高度な XML のリンク機能が生かせ るようにリンクも変換することが挙げられる。第 11 章に、各種のリンクが XLink 仕様でどの ように作成できるのか概要を解説した。次に、XML 文書に利用されている 2 つのリンク機構 の XLink と XPointer のポイントを説明しておこう。 HTML のリンクを XML のリンクに変換する場合、次の点を考慮に入れなければならない。 ・ リンクは双方向に動作する必要があるか? ・ リンクは関連付けられている何らかの動作を行う必要があるか? ・ リンクは文書中で内部リソースまたは外部リソースを参照しているか? 内部のリソース を参照する場合には、文書中の参照されているセクション用に XPointer を作成する必要 がある。 ・ HTML 文書中にリストされているリンクはすべて XML 文書中でも正しい参照であるか? ・ どういったエレメントや属性を利用してリンクを定義するのか? そういった定義はすで に DTD に指定されているか? chapter21 : 1999/11/21 (13:52) 257 21.1 解説編 作成中の XML 文書に含まれている個々のリンクに対して上記の質問に答えたら、リンク用 として定義されたエレメントを利用して個別に変換する必要がある。単純な HTML リンクを 変換するサンプルを次に示しておこう。この種のリンクは、XML 中ではインラインリンクと して指定する。サンプルでは、XML のリンク仕様である XLink を利用して、新しいウィンド ウを開くようにした。次のリンクが変換する前のものだ。 <A HREF="http://www.alaska.net">My Page</A> 文書の DTD でリンク用エレメントとして<A>エレメントが定義されていると仮定すると、新 規にウィンドウを開く新しい XLink のリンクは次のようになる。 <A HREF="http://www.alaska.net" SHOW="NEW" ACTUATE="USER">My Page</A> このリンクは、ユーザーがクリックすると新しいウィンドウを開く。SHOW 属性の値に新しい ウィンドウを意味する NEW を指定してあるからだ。 スタイルシートの指定 以下に示した HTML 文書の大部分は、実際には構造ではなく整形を目的としており、HTML ファイル中のコードのほとんどは XML 宣言で指定したスタイルシートに移動させることにな る。たとえば、brochure というタイトルの付いたスタイルシートをすでに作成してある場合、 XML 文書中に brochure スタイルシートへの参照を記述すれば、XML 文書のコンテンツを表 示するのに利用できる。このように記述しておけば、XML 文書中で参照できるし、最終的に 情報を表示するのに利用する、結果の HTML ファイル中でも参照できる。スタイルシートの コードは次のような感じになる。 <brochurestyle> <!-h1 {font-family: Arial, sans-serif; font-size: 14pt; font-weight: bold; color:#0279C8} h1.title {font-size:150%; color:black} h2 {font-size: 12pt; font-style: italic; color:#0279C8} P {font-family: Arial,sans-serif; font-size:10pt} table {font-family: Arial,sans-serif; font-size:10pt} table.text {background-color=white; border-style:ridge; border-color:#0279C8; border-width:medium} table.bhs {background-color=#BCE3FE; border-style:outset; border-width:thin} a.toc1 {font-family: Arial, sans-serif; font-size:10pt; font-weight: bold; color:#0279C8} a.toc2 {font-family: Arial, sans-serif; font-size:9pt; color:#0279C8} chapter21 : 1999/11/21 (13:52) 258 第 21 章 XML への変換 ul {font-family: Arial, sans-serif; font-size: 10pt} #indent {position:relative; left:.1in} --> </brochurestyle> HTML 文書からスタイルシートに変換する作業は複雑である。文書に適用したいすべての整 形規則を考慮しなければならず、またそういった規則をどの部分に適用するのかも考える必要 がある。第 15 章に、スタイルシート規則の構築方法と、整形したい XML 文書に適用する方法 の概要を説明しておいた。また、標準的な HTML 整形規則を XML に変換する方法も述べて ある。 21.1.7 コメントのクリーンアップ HTML 文書の主要部分がきれいになったら、コメントもきれいに整え、またコメントが付い ていなければ追加しておく。ハイフン記号を 2 つ指定して記述するコメントは、XML 宣言の 中には指定できない。代わりに、宣言の後ろに記述する必要がある。また、XML 文書に記述し たエレメントや属性、エンティティ、DTD に関してさらに詳しい情報を提供するように、コメ ントを調整し直さなければならない。コメントは、マークアップテキストを区切って、さらに 読みやすくするためにも非常に役立つ。XML 文書と DTD 全体に自由にコメントを記述してか まわない。ほとんどの HTML コードには、コメントがあまりない。XML では、特に他の人が 利用する DTD を作成しているような場合には、コードに関してできるだけ説明を施しておく 必要がある。 21.2 実践編 このセクションでは、HTML 中にある各種のエレメントを XML に変換する方法を学習しよ う。ステップバイステップで HTML 文書を XML 文書に変換する作業全体を解説する。また、 文書用の DTD も作成してみたい。変換作業を行うのに必要なものは、単純なテキストエディ タと HTML ファイル、細かい点に対する注意力、それにちょっとした忍耐だけである。 21.2.1 HTMLからXMLへの変換 DTD を持たない XML 文書も作成できるため、体裁の整った XML 文書を作成するという限 りにおいては、HTML 文書を XML に変換するのは比較的簡単だ。しかしながら、HTML は 文書を構築する点に非常に寛容であるため、必要なクリーンアップ作業もいくつか出てくる。 そういった作業の概要を次に示しておこう。 chapter21 : 1999/11/21 (13:52) 259 21.2 実践編 内部/外部に関係なく、記述するすべての文書に対して DTD を作成しておくことを強くお勧め する。 まず、これから変換する HTML の文書を記載しておく。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <TITLE>Converting to XML</TITLE> </HEAD> <BODY BGCOLOR=#FFFFFF> <CENTER><P><A HREF="../index.html">Home</A> <CENTER><P> <HR></P></CENTER> <H1 ALIGN=CENTER><B> Converting and Formatting XML Documents</B></H1> <P> <HR WIDTH=100%> This document outlines how to converting XML Documents. We can use it as a guideline to help us understand the steps used in the process. <H2><B>The Steps Involved</H2></B> </H2> . . . . <HR><P>Last updated: 2/1/99 <A HREF="http://www.site.com/convert.html"> Copyright © 1999 <br>Comments or problems to <A HREF = "mailto:[email protected]">webmaster</a> </P> </body> </HTML> 処理宣言の追加 最初に、HTML ファイルの先頭に処理宣言を追加しなければならない。この文書を XML 1 の仕様に従って処理するようプロセッサやブラウザに対して伝える。宣言は次のようになる。 <?XML version="1.0"?> chapter21 : 1999/11/21 (13:52) 260 第 21 章 XML への変換 文書型宣言の変更 文書型宣言を記述した HTML の文書もあるが、たいていの HTML 文書には含まれていな い。HTML ブラウザの多くは、宣言が記述されていなくてもかまわないことになっているが、 XML ではかならず含まれていなければならない。したがって、HTML ファイルに文書型宣言 が記述されていない場合には追加しなければならない。また、HTML を利用するように文書を 定義する文書型宣言が記述されている場合には、新しく XML 用の文書型宣言を反映するよう に変更する必要がある。サンプルでは、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> という部分を、次のように変更する。 <!DOCTYPE CONVERT SYSTEM "CONVERT.DTD"> 足りない/一致しない終了タグの変換 一致していないタグや、終了タグを伴っていないタグもいくつかある。たとえば、次のコー ドには一致していないタグが含まれている。 <H2><B>The Steps Involved</H2></B> </H2> これは次のように変更しなければならない。 <H2><B>The Steps Involved</B></H2> 同様に、文書全体にわたって利用されている<BR>タグと<HR>タグも、 <BR></BR> と、 <HR></HR> に変換する必要がある。 属性値の前後への引用符の追加 以下のコードでは、属性の値の前後を引用符で囲む必要がある。 <BODY BGCOLOR=#FFFFFF> つまり、以下のように背景色を指定している値を引用符で囲まなければならない。 <BODY BGCOLOR="#FFFFFF"> chapter21 : 1999/11/21 (13:52) 261 21.2 実践編 大文字/小文字の一致 文書中では、大文字/小文字の綴りが違うエレメントタグがいくつか利用されている場合も ある。これは XML では動作しない。たとえば、次のコードには、XML に変換した場合にうま く動作しないタグがいくつか含まれている。 <br>Comments or problems to <A HREF = "mailto:[email protected]"> webmaster</a></P></body> 前のコードでは、文書全体で<BR>タグが<BR>と指定されていたのに対し、ここでは<br>と記 述されているような場合に注意してほしい。また、このコード中の<A>タグは</a>タグで終了 してしまっている。XML では、これは処理した時点でエラーとなってしまう。体裁が正しく 整った XML 文書にするには、指定した全部のエレメントの大文字/小文字を一致させなけれ ばならない。 空の段落エレメントと行分割の削除/繰り返し 文書には非常に多くの空エレメント<P>と行分割<BR>が含まれている点に注意してほしい。 これらは削除するか、または終了タグを追加する必要がある。また、コード中に記述された余 分な空行も削除しなければならない。HTML では無視されるが、反対に XML では空白が文字 データとして扱われるからだ。 テキストのインデント 最後に、コードを読みやすくするために、テキストにインデントを付けておく。HTML 文書 を XML に変換した結果を次に示しておこう。 <?XML version="1.0"?? <!DOCTYPE CONVERT SYSTEM "CONVERT.DTD"> <STYLE> <!-<BODY BGCOLOR="#FFFFFF"> </STYLE> <SECTION> <TITLE>Converting to XML </TITLE> <LINK> <A HREF="../index.html">Home</A> </LINK> <SUBTITLE>Converting and Formatting XML Documents </SUBTITLE> chapter21 : 1999/11/21 (13:52) 262 第 21 章 XML への変換 <HR WIDTH="100%"><HR> <CONTENT> This document outlines how to converting XML Documents. We can use it as a guideline to help us understand the steps used in the process. </CONTENT> . . . . <UPDATE>Last updated: 2/1/99</UPDATE> <COPYRIGHT>Copyright © 1999</COPYRIGHT> <COMMENTS>Comments or problems to</COMMENTS> <COMMENTLINK><A HREF = "mailto:[email protected]"> webmaster</A></COMMENTLINK> </SECTION>