付録E.4 使用できる解析モードによる動作の違い
XML連携機能では,CBLXML-OP-Interfaceアクセスルーチン,CBLXML-OB-Interfaceアクセスルーチンの引数で,XMLドキュメントの解析モードを指定できます。
解析モードによって,XMLドキュメントの解析時に実行したいデータ構造の検証や外部エンティティの読み込みに関する動作が異なります。
環境変数CBLXML_PARSE_NOXXEの値 |
解析モード |
妥当性制約の検証 |
外部エンティティの読み込み |
---|---|---|---|
'YES'以外 または指定なし |
アクセスモード'V'および'N'指定なし |
× |
○ |
アクセスモード'V'指定あり |
○ |
○ |
|
アクセスモード'N'指定あり |
× |
× |
|
'YES' |
任意 |
× |
× |
解析モードの詳細を次に示します。
-
アクセスモード'V'および'N'指定なし
DTDによるドキュメント構成の検証が必要ない場合に使用するモードです。
外部DTDサブセットを含むすべてのDTDが読み込まれ,エンティティ宣言,および属性宣言を認識できます。したがって,エンティティ参照や属性の初期値は次のように処理されます。
-
エンティティ参照は解決されます。
-
属性の初期値は供給されます。
-
属性値を正規化するとき,属性の型に従って処理されます。
なお,XMLドキュメントが正しい形式であるための制約(well-formedness constraint)を満たすために必要な場合を除き,DTDは必須ではありません。
-
-
アクセスモード'V'指定あり
DTDを使用してXMLドキュメントのタグの順序や属性などのドキュメント構成を検証したい場合に使用するモードです。外部DTDサブセットを含むすべてのDTDが検証され,エンティティ宣言,および属性宣言を認識できます。
-
環境変数CBLXML-PARSE-NOXXEに'YES'を指定,またはアクセスモード'N'指定あり
外部エンティティを読み込まない場合に使用するモードです。DTDによるドキュメント構成の検証はしません。DTDを読み込み,エンティティ宣言,および属性宣言を認識します。ただし,DTD内で外部DTDサブセットを使用している場合,外部DTDサブセットは読み込まれないので,DTD内の以後のマークアップ宣言を認識できません。また,XML文書内で外部エンティティが参照された場合も,外部エンティティは読み込まれません。