ヘッダーをスキップ
Oracle XML Developer's Kitプログラマーズ・ガイド
11gリリース1(11.1)
E05676-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

24 統合C++インタフェースの概要

この章の内容は次のとおりです。

統合C++ APIの概要

XMLツールの統合C++ APIとは、OracleのXMLツール製品の一連のC++インタフェースを表します。この統合によって、一般的なインタフェース・ベースのフレームワークが提供されます。このフレームワークを使用すると、XMLツール製品を改善、更新、置換または追加できます。この動作がインタフェース・ベースのユーザー・コードに影響を及ぼすことはなく、アプリケーション・ドライバおよびアプリケーション構成に及ぼす影響は最小限で済みます。一般的なテンプレート・パラメータによって表される3種類のインタフェース(抽象クラス、テンプレートおよび暗黙的なインタフェース)はすべて、統合したフレームワークで使用されます。


注意:

新規のXDKアプリケーションには、xml.hppにある新規の統合C++ APIを使用してください。oraxml.hppにある以前のC++ APIは非推奨です。下位互換性のみを目的としてサポートされていますが、今後は拡張されません。これは、将来のリリースでは削除される予定です。

これらのC++のAPIは、できるだけ緊密にW3C仕様をサポートしています。ただし、W3C仕様ではC++実装をサポートしていないため、この実装でW3C仕様が完全にサポートされるかどうかは保証できません。


C++インタフェースへのアクセス

C++インタフェースは、Oracle Databaseに付属しています。サンプル・ファイルは、$ORACLE_HOME/xdk/demo/cppにあります。

ソフトウェア・アーカイブのルート・ディレクトリにあるreadme.htmlファイルには、不具合の修正や追加のAPIなどのリリース固有の情報が含まれています。

OracleXML名前空間

OracleXMLは、全XML C++インタフェースのC++名前空間です。これには、異なるXDKパッケージに共通するインタフェースおよび名前空間が含まれます。次の名前空間が含まれます。

OracleXmlはファイルxml.hppで完全に定義されています。ユーザーに対して表示可能な別の名前空間、XmlCtxNSxmlctx.hppで定義されています。この名前空間には、xmlctxコンテキストのCレベルの定義に対応するデータ構造および関連するデータ構造の、C++の定義が含まれています。ユーザーがこの名前空間の詳細を認識する必要はありませんが、xmlctx.hppをほとんどのアプリケーションのメイン・モジュールに含める必要があります。

複数のエンコーディングが、現在すべての実装で使用される予定である、oratextタイプに基づいてサポートされています。全文字列はoratext*として表されます。

OracleXMLインタフェース

XMLExceptionインタフェース: 全XML例外のルート・インタフェースです。

Ctx名前空間

Ctx名前空間には、TCtxインタフェースに関連するデータ型およびインタフェースが含まれます。

OracleXMLデータ型

データ型エンコーディング: 特定のサポートされるエンコーディングです。次の種類のエンコーディング(またはエンコーディング名)がサポートされます。

  • data_encoding

  • default_input_encoding

  • input_encoding: 前述のエンコーディングを上書きします。

  • error_language: エラー・ハンドラの言語によって上書きされます(指定されている場合)。

データ型エンコーディング: エンコーディングの配列です。

Ctxインタフェース

ErrorHandlerインタフェース: ルート・エラー・ハンドラ・クラスです。これは、主に基礎となるC実装からのエラーをローカル処理します。ある実装では、XmlExceptionが発生する可能性があります。ただし、すべての実装の要件を満たすために、これは署名では指定されていません。例外オブジェクトの作成は可能です。このエラー・ハンドラは、TCtxが初期化されるときにTCtxコンストラクタに渡されます。このインタフェースの実装はユーザーが行います。

MemAllocatorインタフェース: 将来、異なる割当て方法を使用できるように、TCtxインタフェースを合理的に一般化する単純なルート・インタフェースです。これは、TCtxが初期化されるときにTCtxコンストラクタに渡されます。これは、割り当てられるオブジェクトのタイプを認識しない低レベルのアロケータです。このインタフェースを含むアロケータは直接使用できます。この場合、ユーザーは(deallocを使用して)オブジェクトを明示的に割当て解除する責任があります。

MemAllocatorインタフェースがTCtxコンストラクタに対するパラメータとして渡される場合、通常、演算子newを上書きできます。この場合、CおよびC++両方におけるすべてのメモリー割当ては同じアロケータによって行われます。

Tctxインタフェース: XMLコンテキスト実装に対する暗黙的なインタフェースです。これは、主にメモリー割当て、エラー(例外以外の)処理および異なるエンコーディング処理で使用されます。コンテキスト・インタフェースは、タイプ・パラメータとして使用される暗黙的なインタフェースです。この名前TCtxは、対応するタイプ・パラメータ名として使用されます。実際の置換は、実際のコンテキスト実装によってパラメータ化(テンプレート化)された実装をインスタンス化することで行われます。この場合、エラーXmlExceptionが発生する可能性があります。全コンストラクタでは、コンテキスト実装を作成および初期化できます。マルチスレッド環境では、各スレッドに対して別個のコンテキスト実装を初期化する必要があります。

IO名前空間

IO名前空間では、全XMLツール製品の様々な入出力オプションに対してインタフェースを指定します。

IOデータ型

データ型InputSourceTypeは、現在サポートされている様々な種類の入力ソースを指定します。これには、次が含まれます。

  • ISRC_URI: 入力は指定されたURIから読み取られます。

  • ISRC_FILE: 入力はファイルから読み取られます。

  • ISRC_BUFFER: 入力はバッファから読み取られます。

  • ISRC_DOM: 入力はDOMツリーです。

  • ISRC_CSTREAM: 入力はCレベルのストリームです。

IOインタフェース

URISource: 指定されたURIからの入力に対するインタフェースです。

FileSource: ファイルからの入力に対するインタフェースです。

BufferSource: バッファからの入力に対するインタフェースです。

DOMSource: DOMツリーからの入力に対するインタフェースです。

CStreamSource: Cレベルのストリームからの入力に対するインタフェースです。

ツール製品のパッケージ

Toolsは、Oracle XMLツール製品の作成およびインスタンス化に関連するタイプおよびインタフェースのパッケージ(OracleXmlのサブ空間)です。

ツール製品のインタフェース

FactoryException: ツール製品のファクトリ例外を指定します。これは、XMLExceptionsから派生します。

Factory: XMLツール製品のファクトリです。全XMLツール製品の実装を非表示にし、これらのツール製品をそのID値に基づいて表すオブジェクトを作成するメソッドを提供します。

エラー・メッセージ・ファイル

エラー・メッセージ・ファイルは、mesgサブディレクトリにあります。このメッセージ・ファイルは、$ORACLE_HOME/xdk/mesgディレクトリにもあります。環境変数ORA_XML_MESGを設定して、mesgサブディレクトリへの絶対パスを指定することもできます。ただし、これは必須ではありません。


関連項目:

『Oracle Database XML C++ APIリファレンス』のパッケージCtx API for C++に関する項