XML データ・ハンドラーはデータ変換モジュールで、その主な役割はビジネス・オブジェクトと XML 文書相互間の変換をすることです。XML 文書は、text/xml MIME タイプの直列化データです。 XML データ・ハンドラーは、コネクターおよびアクセス・クライアントで使用できます。
この概要のセクションでは、XML データ・ハンドラーの次の内容について説明します。
XML
文書では、スキーマと呼ばれるテンプレートを使用して、その構造を定義します。表 9
に、このスキーマを定義するための最も一般的なデータ・モデルを示します。
XML データ・モデル | 詳細 |
---|---|
文書タイプ定義 (DTD) | DTD を使用する XML 文書 |
スキーマ文書 | スキーマ文書を使用する XML 文書 |
DTD またはスキーマ文書により XML 文書の構造が記述されるように、ビジネス・オブジェクトの構造はビジネス・オブジェクト定義により記述されます。XML データ・ハンドラーは、ビジネス・オブジェクトと XML 文書の間の変換を実行するとき、ビジネス・オブジェクト定義を使用します。XML データ・ハンドラーは、ビジネス・オブジェクト定義の構造およびアプリケーション固有情報を使用することにより、変換方法を決定します。ビジネス・オブジェクト定義を正しく作成することにより、データ・ハンドラーがビジネス・オブジェクトと XML 文書との相互の変換を正しく行うことができます。XML データ・ハンドラーが XML 文書とビジネス・オブジェクトの間の変換を実行するためには、関連するビジネス・オブジェクト定義を見つけることが必要です。
XML 文書からビジネス・オブジェクトへの変換、およびその逆の変換に XML
データ・ハンドラーを使用するためには、次のステップを実行することが必要です。
ステップ | 詳細 |
---|---|
1. XML 文書とビジネス・オブジェクトの構造を記述しているビジネス・オブジェクト定義が存在し、実行中の XML データ・ハンドラーから使用できること。 | ビジネス・オブジェクト定義の要件
DTD からのビジネス・オブジェクト定義の作成 |
2. XML データ・ハンドラーが運用環境向けに構成されていること。 | XML データ・ハンドラーの構成 |
3. 適切なデータ操作を実行するために、XML データ・ハンドラーがコネクター (またはアクセス・クライアント) から呼び出されていること。 |
|
a) データ操作: 呼び出し元からビジネス・オブジェクトを受け取り、これを XML 文書に変換し、変換結果を呼び出し元に渡します。 | ビジネス・オブジェクトの XML 文書への変換 |
b) データ操作: 呼び出し元から XML 文書を受け取り、ネーム・ハンドラーおよび SAX パーサーを使用して、ビジネス・オブジェクトを作成します。次にデータ・ハンドラーがこのビジネス・オブジェクトを呼び出し元に戻します。 | XML 文書のビジネス・オブジェクトへの変換 |
XML データ・ハンドラーは次の 2 つのコンポーネントを使用して、XML データをビジネス・オブジェクトに変換します。
図 11 に、XML データ・ハンドラーのコンポーネントとその相互の関係を示します。これらのコンポーネントは、この後のセクションで説明します。
XML データ・ハンドラーはネーム・ハンドラーを使用して、XML メッセージからビジネス・オブジェクトの名前を抽出します。 データ・ハンドラーは、XML データ・ハンドラー子メタオブジェクト内の NameHandlerClass 属性値を基に、ネーム・ハンドラーのインスタンスを呼び出します。
BOPrefix_rootElement
カスタム・ネーム・ハンドラーの作成方法については、"カスタム XML ネーム・ハンドラーの作成"を参照してください。
XML 子メタオブジェクト内 Parser 属性の Default Value プロパティーにパーサーが指定されていない 場合には、データ・ハンドラーはデフォルトの SAX パーサーを使用します。
org.apache.xerces.parsers.SAXParser
検証パーサーを使用するには、次のステップのいずれかを実行します。
com.ibm.xml.parsers.ValidatingSaxParser
ビジネス・オブジェクト定義が DTD に基づいている場合には、ローカル・エンティティー・リゾルバーを使用し、DTDPath 属性内の文書タイプ定義 (DTD) またはスキーマ・パスに Default Value を指定します。すべての DTD または Schema ファイルを 、DTDPath 属性に指定した場所に配置してください。
あるいは、IBM 提供の検証用でない SAX パーサーを使用する方法もあります。このパーサーを使用するには、XML 子メタオブジェクトの Parser 属性 の Default Value プロパティーを値 com.ibm.xml.parsers.SAXParser に設定します。
エンティティー・リゾルバーにより、SAX パーサーによる XML データ内の外部参照 (DTD およびスキーマ文書の参照など) の解決方法を指定します。 XML 文書にエンティティー参照が含まれている場合、SAX パーサーは XML データ・ハンドラー構成メタオブジェクト内の EntityResolver 属性を使用してエンティティー・リゾルバーのインスタンスを起動します。
外部参照の処理は、EntityResolver
で指定されるエンティティー・リゾルバーのクラスにより異なります。表 11 は、XML
データ・ハンドラーが提供するエンティティー・リゾルバーのクラスを表しています。
表 11. XML データ・ハンドラーのエンティティー・リゾルバーのクラス
com.crossworlds.DataHandlers.xml
XML 文書でスキーマ文書を使用する場合、そのスキーマ文書に組み込まれているすべての外部スキーマは、外部エンティティーとしても取り扱われます。したがって、SAX パーサーは、これらの組み込まれたスキーマ文書を解決するために、エンティティー・リゾルバーを呼び出します。XML 文書がスキーマ・ロケーションを指定するために schemaLocation または noNamespaceSchemaLocation を使用する場合は、EntityResolver 属性を LocalEntityResolver または URIEntityResolver のいずれかに、(組み込み済みまたはインポート済みの) 外部スキーマ文書の検証用として、設定が可能です。
別の方法を使用して外部エンティティーを検出する必要がある場合は、カスタム・エンティティー・リゾルバーを作成する必要があります。カスタム・エンティティー・リゾルバーの作成の詳細については、カスタム・エンティティー・リゾルバーの作成を参照してください。