XML ツールを使用する場合の検討事項
任意の種類の XML ツールを操作する場合には、以下のように、一般的に検討すべき事項が少なくとも 3 つあります。
入出力の文字エンコード
XML ドキュメントをエクスポートするときには、使用する文字エンコードを指定できます。指定しなかった場合は、エクスポート先に応じて、InterSystems IRIS によってエンコードが選択されます。
InterSystems IRIS によって読み取られた任意の XML ドキュメントでは、ドキュメントの XML 宣言にそのファイルの文字エンコードを明記する必要があり、明記しておけば、ドキュメントは宣言どおりにエンコードされるようになります。以下はその例です。
<?xml version="1.0" encoding="UTF-16"?>
ただし、文字エンコードがドキュメントで宣言されていない場合は、以下のように想定されます。
InterSystems IRIS の文字変換に関する背景情報は、"サーバ側プログラミングの入門ガイド" の "ローカライズのサポート" を参照してください。
パーサの動作
InterSystems IRIS SAX パーサは、InterSystems IRIS により XML ドキュメントが読み取られるたびに使用されるので、その既定の動作を知っておくと役に立ちます。パーサは、以下のようなタスクを行います。
-
XML ドキュメントが適格な文書であるかどうかを検証します。
-
指定されたスキーマまたは DTD を使用して、ドキュメントを検証しようとします。
ここでは、1 つのスキーマには、他のスキーマを参照する <import> 要素および <include> 要素を含めることができる、ということを覚えておくと役に立ちます。以下はその例です。
<xsd:import namespace="target-namespace-of-the-importing-schema"
schemaLocation="uri-of-the-schema"/>
<xsd:include schemaLocation="uri-of-the-schema"/>
これらの他のスキーマをパーサで使用できる場合以外は、検証は失敗します。特に WSDL ドキュメントの場合は、すべてのスキーマをダウンロードして、修正された場所を使用するように主スキーマを編集することが必要になる場合もあります。
-
すべての外部エンティティを含め、すべてのエンティティを解決しようとします (この作業は他の XML パーサでも行います)。場所によっては、このプロセスには時間がかかる場合もあります。特に、Xerces では一部の URL の解決にネットワーク・アクセサが使用され、実装ではブロックする I/O が使用されます。結果的に、タイムアウトは発生せず、ネットワーク・フェッチがエラー状態になって停止する可能性があります (現実にはまず発生しません)。
また、Xerces では https をサポートしていないので、https に位置するエンティティの解析はできません。
必要に応じて、カスタムのエンティティ・リゾルバを作成したり、エンティティの解析を無効にすることができます。