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

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

XMLプロセッサの使用

 「5.1 Validating and Non-Validating Processors(5.1 妥当性を検証するプロセッサおよび検証しないプロセッサ)」で扱った内容が、XMLプロセッサ開発者のための規定だとすれば、ここで扱うのはXMLプロセッサ利用者のための規定である。こちらの方は、記述内容を活用できる人も多いだろう。じっくりと読んでいこう。

The behavior of a validating XML processor is highly predictable; it must read every piece of a document and report all well-formedness and validity violations. Less is required of a non-validating processor; it need not read any part of the document other than the document entity. This has two effects that may be important to users of XML processors:

妥当性を検証するXMLプロセサの振る舞いはほとんど予測可能であり、すなわち、文書のすべての断片を読み込み、整形式および妥当性に対するすべての違反を報告しなければならないが、妥当性を検証しないプロセサに必要とされることはそれより少なく、すなわち、文書実体以外の文書の断片を読み込む必要はない。従って、XMLプロセサの利用者に対して重要な2つの効果を持つ。

 前半の文章で問題にされているのは、XMLプロセッサの振る舞いが予測可能か否かである。何回も繰り返し話題にしたように、XML 1.0勧告には、多くの「してもよい(MAY)」機能が含まれる。それは処理結果を予測しがたいという使いにくさを生む。しかし、それらの多くは妥当性を検証しないプロセッサで発生する問題であり、妥当性を検証するXMLプロセッサでは大抵の結果を予測可能である。

 次の文章で述べている「2つの効果」とは、この次に記述された2つの項目を意味する。なお、JIS X 4159ではこれらの項目にa)、b)という名前が与えられているがW3Cの原文にはない。

  • Certain well-formedness errors, specifically those that require reading external entities, may fail to be detected by a non-validating processor. Examples include the constraints entitled Entity Declared, Parsed Entity, and No Recursion, as well as some of the cases described as forbidden in 4.4 XML Processor Treatment of Entities and References.

  • The information passed from the processor to the application may vary, depending on whether the processor reads parameter and external entities. For example, a non-validating processor may fail to normalize attribute values, include the replacement text of internal entities, or supply default attribute values, where doing so depends on having read declarations in external or parameter entities.

  • ある種の整形式の誤り、特に、外部実体を読まなければ検出できない誤りは、妥当性を検証しないプロセサでは検出しなくてもよい。例えば、4.4 XMLプロセサによる実体および参照の扱い禁止として説明されているいくつかの場合、ならびに実体が宣言されていること解析対象実体および再帰なしという見出しが付けられた制約が挙げられる。

  • プロセサから応用プログラムに渡される情報は、プロセサがパラメタ実体および外部実体を読み込むかどうかで違ってくる。例えば、妥当性を検証しないプロセサは、属性値を正規化したり、内部実体の置換テキストを取り込んだりデフォルトの属性値を与えたりする必要はないが、これらを行うかどうかは、外部実体およびパラメタ実体内での宣言をすでに読み込んでいるかどうかによる。

 第1の項目は、誤りの扱いについて記されている。妥当性を検証しないプロセッサは、外部実体を読まなくてもよいので、読まなければ検出できない誤りを検出できないのは当然のことといえるが、この規定はそれを肯定する。つまり、たとえ整形式制約からの逸脱があったとしても、妥当性を検証しないプロセッサはそれを検出しない場合があるということである。次の文章で、検出しなくてもよい具体例を説明している。

 第2の項目は、XMLプロセッサから応用プログラムに渡される情報について記されている。これまで読んできた内容とも関連するが、XMLプロセッサから応用プログラムに渡される情報は、XMLプロセッサの実装により、変化する場合がある。変化が発生する原因は、ここに記された「パラメタ実体と外部実体を読み込むかどうか」にある。次の文章では、より具体的にこのことについて記している。つまり、ここで述べられたさまざまな任意選択の機能が処理されるか否かは、それが読み込まれているかどうかによっている、ということが示されている。つまり、実装により結果が変化する処理は、宣言を読み込むかどうかが大きな鍵を握っているということである。

 さて、これで2つの項目を読み終わった。次は、通常の文章に戻り、XMLプロセッサの使い方の指針を述べている。

For maximum reliability in interoperating between different XML processors, applications which use non-validating processors SHOULD NOT rely on any behaviors not required of such processors. Applications which require DTD facilities not related to validation (such as the declaration of default attributes and internal entities that are or may be specified in external entities) SHOULD use validating XML processors.

異なるXMLプロセサ間での相互運用性を最も高めるためには、妥当性を検証しないプロセサを使用する応用プログラムは、そのようなプロセサでは必要とされない振る舞いに依存すべきではない。検証に関係しないDTDの機能(例えば、デフォルト属性や、外部実体で指定された、あるいは、されたかもしれない内部実体の宣言)を必要とする応用プログラムは、妥当性を検証するプロセサを使用することが望ましい(SHOULD)。

 前半の文章は、すでに読んだことから必然的に導き出される規定といえる。相互運用性を高めたいと思うなら、そのようなプロセッサでは必要とされない振る舞い、つまり、処理されるかもしれないし、されないかもしれない機能に依存すべきではない。次の文では、妥当性の検証を行わない場合でも、妥当性を検証するプロセッサを使用することが望ましいケースについて記されている。後半では、DTDには検証に関係する機能と関係しない機能があり、後者を使うだけであっても、DTDを確実に処理してくれる妥当性を検証するプロセッサを使用する方がよいということである。

 以上で、「5 Conformance(5 適合性)」はすべて読み切ったことになる。次に「6 Notation(6 記法)」があるが、これはこの連載で最初に読んだ個所である。そして、XML 1.0勧告の本文は「6 Notation(6 記法)」までである。つまり、われわれはXML 1.0勧告の本文をすべて読み切ったのである。お疲れさまである。しかし、まだここで終わるわけにはいかない。まだ多数の「Appendices(附属書)」が残っているためである。これらは、附属書と呼ばれていても重要な情報や規定が書かれたものが含まれ、目を通さずには済まされない。そして、付属書の中には、本文よりもエキサイティングな内容が含まれることもある。次回以降は、これら附属書を読んでいこう。請うご期待である。(次回に続く)

3/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 記事ランキング

本日月間