連載第3回:XMLは変幻自在
みなさんこんにちは。 今回は、XMLをインターネットの世界で使う際に欠かすことの出来ない、XML文書の変換について解説します。 XML文書をいろいろな形に変換することによりインターネットで繋がっているコンピュータ同士、そしてさまざまな電子機器が「いつでも必要な時に必要な情報をお互いにやりとりできる」ようになります。 ◆XMLのスタイル変換 XMLからHTMLへの変換を例にとります。情報それ自体はXMLで記述されていても、実際に画面に表示するタイミングでXMLからHTMLへの変換を実行し、ブラウザで情報を表示することが出来ます。この変換自体については、XMLもHTMLも同じマークアップ言語構造を持つので、要素(タグ)同士の変換ルールを決めておけば処理が可能です。この変換ルールを「スタイルシート」という形で準備し管理することにより、XMLで一元管理された情報はその目的に応じた形で多彩に表現することが可能となります。
XMLではスタイルシートの書き方をXSL(eXtensible Stylesheet Language)として規格化しています。XSLが受け持つ範囲は、まずXMLの要素をHTMLの要素に変換し、そしてHTML文書としての整形情報(どんなフォントを使用するか、フォントの色やサイズはどうするかというような、HTMLで使用するフォント属性など)を付加することになります。このときXMLの要素をHTMLの要素に変換するような、マークアップ言語間の構造変換する方法を規格化したものをXSLT(XSL Transformations)といいます。つまりXSLの一部の機能であるXSLTを利用することにより、XML文書からHTML文書ばかりでなく、XML文書から別のXML文書への変換、携帯電話などで用いられる別のマークアップ言語への変換なども可能にしています。これが「XMLが様々なアプリケーションやシステム、データを結合し統合していくというインターネットの世界で有用視されている」大きな理由です。XML文書は実に変幻自在なのです。 ![]() ちなみに、これらXML変換は一般にXSLTプロセッサというツールを使って処理します。オラクルではXML文書内のタグを解析し要素を抽出するXMLパーサー、そしてXML変換を容易にするXSLTプロセッサをOTNを通じて開発者に提供しています。 XMLによって人とコンピュータ、コンピュータとコンピュータを繋ぐインターネットの世界では、このXML変換が必ず発生します。一つ一つの変換処理自体の時間はとても短く軽いものですが、しかし無数のXML変換が常におこなわれることを想像してください。これは現在データベースが処理しているトランザクションのようなものです。つまりインターネットの世界、特にB2BのようなXMLを利用したデータ交換を主眼とする世界では、スケーラビリティーに富み、安定した「ミッションクリティカルなXMLサーバー」が必要不可欠になります。 興味深いのはXSLもXSLTもXMLのタグ形式で表現されている点です。 ◆XMLの要素 XSLTによりXML文書から別のXML文書への変換が可能となり、それがコンピュータとコンピュータを繋ぐ架け橋になりますが、XML文書の変換を重ねたり、複数のXML文書を変換元に持つ場合、変換先において同じ要素名で意味の異なるものが存在する可能性があります。 たとえば、本の貸出管理アプリケーションを考えてみます。あるアプリケーション[A]からアプリケーション[B]に送られてくるXMLデータとして本の情報があったとします。その本の情報には少なくとも本の<title>が存在するでしょう。受け取ったアプリケーション[B]の中では、本と貸出人情報の管理をしています。貸出人情報には貸出人の役職<title>が存在するとします。この時、本の<title>と貸出人の役職<title>はどのようにして区別すれば良いでしょうか。どちらかのタグ名を変えてしまう、というプログラム主導的な解決方法も考えられますが、XMLには名前空間(Namespaces)という規格があり、一つのXML文書内に存在する複数の同じタグを区別することができます。これを用いれば、XML文書の要素の意味を変えずに処理することが可能です。いわば要素名の交通整理です。特に一般的な用語で意味が重複して使われている場合にはとても重宝します。 XMLを使ったアプリケーションやシステムを設計する上で、とても重要なことがあります。それはXML文書で使用する「要素の意味意義を明確にしておく」ことです。XMLで使用する要素の定義には細心の注意を払う必要があります。たとえば、米国で一般に使われている「社会保障番号」が、元のXML文書に存在していたら日本のシステムでは何を当てはめたら良いでしょうか。日本では社会保障番号が存在しないので、代わりに保険証の番号を流用することも考えられますが、転職してしまうと意味を成しません。しかしその要素のライフサイクルが短い場合は、保険証番号でも十分に使用可能でしょう。つまり単に要素の意味だけではなく、その意義(要素やXML文書自体のライフサイクルなど)も考慮することが肝要です。 XML文書(社会保障番号)------> XML文書(保険証番号?) 次回はビジネスオブジェクトとXMLとの関連を解説します。データ交換におけるXMLの要素の抽出は、オブジェクト指向設計の要件定義とオブジェクトの抽出にとても良く似ています。 |
|