第33回 XML勧告への適合性を示すConformance Page 1

XML 1.0は、1998年にW3Cから勧告として公開された。当然中身は英語で、しかもEBNFと呼ばれる式によって重要な部分が記述してある。この連載では、XML 1.0を深く理解するために、そのXML 1.0勧告の最新版「Extensible Markup Language (XML) 1.0 (Third Edition)」をだれでも分かるように、やさしく読み解きながら解説していくことを目指している。(編集局)

川俣 晶
株式会社ピーデー
2005/5/11

XML 1.0への適合条件を示す「Conformance」

主な内容
--Page 1--
XML 1.0への適合条件を示す「Conformance」
適合性(Conformance)の意義
--Page 2--
妥当性を検証するプロセッサおよび検証しないプロセッサ
--Page 3--
XMLプロセッサの使用

  前回は、「4.7 Notation Declarations(4.7 記法宣言)」と「4.8 Document Entity(4.8 文書実体)」について読んだ。「4.7 Notation Declarations(4.7 記法宣言)」では、これまで何回も本文に出てきていながら、後で説明するとして先送りしてきた記法についての詳しい説明を行った。利用頻度は低いとしても、好奇心を持って見ることができるものだろう。もう1つの「4.8 Document Entity(4.8 文書実体)」は、XML利用者ならだれでも必ず使う文書実体についての規定であり、すべてのXML利用者に関係があるといっても過言ではなかった。分量が少ないのは、各種実体に共通する特徴や規定は別の個所で行われており、ここには文書実体だけが持つ特徴や規定だけが記されているためである。これらを読み切って、XML 1.0勧告最大の山場ともいえる「4 Physical Structures(4 物理構造)」を読み終えることができた。

 さて、今回は「5 Conformance(5 適合性)」を読んでいく。ここでは、主にXMLプロセッサ開発者向けの規定を記述した「5.1 Validating and Non-Validating Processors(5.1 妥当性を検証するプロセッサおよび検証しないプロセッサ)」と、主にXML利用者向けの規定が書かれた「5.2 Using XML Processors(5.2 XMLプロセッサの使用)」の2つがある。これを読み切ると、XML 1.0勧告の本文を読み切ったことになる。あと一息である。

編集注:この連載では、XML 1.0勧告であるW3Cの「Extensible Markup Language (XML) 1.0 (Third Edition)」(英語)を参照し、その日本語訳として、日本工業規格 JIS X 4159:2002(Second Edition相当。リンク先は該当規格の原案ですが、最終版とほぼ同等の内容です)と追補1として出版予定の原稿(Third Edition対応)を参照しています。本文中のピンクの地の部分は、XML 1.0勧告の原文を示しています。

適合性(Conformance)の意義

 さて、ここからは「5 Conformance(5 適合性)」を読んでいこう。適合性とは、ある規格に適合する条件を示すために書かれるものである。例えば、XML勧告の場合は、XMLプロセッサを開発したときに、それがXML勧告に適合していると主張するための条件が書かれている。いちいち条件を付けるなど堅苦しいように見えるが、条件が厳密であれば、XMLプロセッサの開発者と利用者の間の意思疎通が容易になるというメリットがある。つまり、開発者は「XML勧告に適合する」という1行を書くだけで、それにどのような機能が含まれているか詳細を示す必要がなくなり、利用者はこの1行を読むだけでどのような機能を期待してよいかを把握することができる。

 意思疎通が容易になることは、さらに多くのメリットを派生させる。例えば、XMLプロセッサを入手したい応用プログラムの開発者がいたとしよう。彼/彼女がXMLに対して特別なニーズや独自のこだわりを持っていなければ、XML勧告の適合性を満たすXMLプロセッサを求めるのが自然な流れだろう。何より、条件をいちいち明示しなくて済むわけで、それが最も楽な選択である。

 XMLプロセッサの開発者は、このような応用プログラムの開発者が多数いることを知っている。XMLが生まれたてのころは、XMLを使いたい応用プログラムの開発者は決して多くなかったが、その数が増えることは当然予測できる。であるならば、XMLプロセッサの開発者にとって最善の選択は、それらの応用プログラムの開発者から選んでもらえるように、適合性を満たすXMLプロセッサを開発することとなる。つまり、XMLプロセッサの開発者は、具体的な顧客やそのニーズを考えることなく、XMLプロセッサの開発に着手できるわけである。

 このような状況を応用プログラムの開発者の立場から見ると、同じ条件(つまり適合性)を満たす複数のXMLプロセッサが提供されることを意味する。つまり、複数のXMLプロセッサの中から、自分のニーズに合った最善の1つを選び出すことができるのである。これが、条件を詳しく明示して特注で作らせたXMLプロセッサ(つまり適合性を満たさない)にはない特徴である。そして、応用プログラムの開発中に、もし採用したXMLプロセッサに問題が発見された場合には、ほかのXMLプロセッサと差し替えるという選択も可能になる。もちろん差し替え可能となるためには、適合性を満たすだけでは不十分であり、実行環境やAPIも同じであることが要求される。このうちのAPIは、Document Object Model勧告の適合性が同じ役割を果たす。

 念のために補足すると、「XML 1.0勧告で規定されるXML文書」を取り扱うXMLプロセッサでありながら、XML 1.0勧告の適合性を満たさないものもあり得る。例えば、携帯電話の少ないメモリでXML文書を処理することを意図したXMLプロセッサには、適合性を満たさないものがある。これから読んでいく文章の中には、妥当性を検証しないXMLプロセッサであっても、限定的にDTDを処理することが要求されているという記述が含まれる。しかし、シンプルな利用方法に限定すれば、DTDを必要とする頻度は多くなく、少ないメモリを節約するためにDTDの処理機能は割愛すべきと考えるのも、1つの合理的な考え方である。そして、実際にDTDの処理などの機能を含まないコンパクトなXMLプロセッサは存在し、それらはXML 1.0勧告の適合性を満たさない。これらのXMLプロセッサは、相互運用性に注釈が付くが、多くの点でXML 1.0勧告と互換性があり有用である。

 さらにもう1つ補足しよう。XML 1.0勧告の適合性を満たさないXMLプロセッサは有用であると書いたが、いつでも有用というわけではない。メモリの制限などで、適合性を満たすことができない、あるいは困難である場合にのみ、適合性を満たさないXMLプロセッサの価値は生じる。これとは別に、XML 1.0勧告の内容の適切さに異議を唱える場合に、あえて適合性を満たさないXMLプロセッサを作ってみせるケースがあるかもしれないが、それは特殊であり過ぎるので除外して考えよう。

 ここで強調したいことは、適合性を満たすことができる状況で、特に理由もなく、適合性を満たさないXMLプロセッサを開発しても、それは有用とはならないということである。むしろ、有害であるとすらいえる。

 われわれXML利用者は、暗黙のうちにXML 1.0勧告をバイブルとして、それに適合した使い方がなされるという前提でさまざまな活動を行っている。例えば、XML文書を作成する際に、それがどのような仕様に適合するかをいちいち説明する利用者はほとんどいないだろう。それは、XML 1.0勧告に適合するXMLプロセッサによって処理されることを暗黙の前提としているからである。そして、暗黙の前提はあまりに当然であるため、しばしば利用者から意識されない。そのような状況で、あえて適合性を逸脱するXMLプロセッサを使うことは、トラブルを自ら呼び込むようなものである。XMLプロセッサ開発時に、もし適合性を満たすことができるなら、必ず適合性を満たすXMLプロセッサを開発しよう。(次ページへ続く)

  1/3

 Index
やさしく読む「XML 1.0勧告」 第33回
XML勧告への適合性を示すConformance
Page 1
・XML 1.0への適合条件を示す「Conformance」
・適合性(Conformance)の意義
  Page 2
・妥当性を検証するプロセッサおよび検証しないプロセッサ
  Page 3
・XMLプロセッサの使用


連載 やさしく読む「XML 1.0勧告」


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間