27 統合C++インタフェースの概要
統合C++インタフェースについて説明します。
27.1 統合C++ APIの概要
Extensible Markup Language (XML)ツールの統合C++アプリケーション・プログラミング・インタフェース(API)とは、OracleのXMLツール製品の一連のC++インタフェースを表します。一般的なテンプレート・パラメータによって表される3種類のインタフェース(抽象クラス、テンプレートおよび暗黙的なインタフェース)はすべて、統合したフレームワークで使用されます。
この統合によって、一般的なインタフェース・ベースのフレームワークが提供されます。このフレームワークを使用すると、XMLツール製品を改善、更新、置換または追加できます。この動作がインタフェース・ベースのユーザー・コードに影響を及ぼすことはなく、アプリケーション・ドライバおよびアプリケーション構成に及ぼす影響は最小限で済みます。
注意:
Oracle XML Developer's Kit(XDK)アプリケーションには、xml.hppに統合されたC++ APIを使用してください。oraxml.hpp内の非統合の旧C++ APIは非推奨で、下位互換性のためにのみサポートされています。これは、将来のリリースでは削除される予定です。
統合C++ APIは、World Wide Web Consortium (W3C)仕様をほぼサポートしています。ただし、W3C仕様ではC++実装をサポートしていないため、この実装でDOM仕様が完全にサポートされることは保証していません。
27.2 C++インタフェースへのアクセス
C++インタフェースは、Oracle Databaseに付属しています。サンプル・ファイルは、$ORACLE_HOME/xdk/demo/cppにあります。ソフトウェア・アーカイブのルート・ディレクトリにあるreadme.htmlファイルには、不具合の修正や追加のAPIなどのリリース固有の情報が含まれています。
27.3 OracleXMLネームスペース
OracleXmlは、すべてのXML C++インタフェースのC++名前空間です。これには、異なるXDKパッケージに共通するインタフェースおよび名前空間が含まれます。
名前空間OracleXMLには、次の名前空間が含まれます。
-
Ctx: TCtxに関連する宣言の名前空間 -
Dom: Document Object Model (DOM)に関連する宣言の名前空間 -
Parser: パーサーおよびスキーマ・バリデータ宣言の名前空間 -
IO: 入力および出力ソース宣言の名前空間 -
Xsl: Extensible Stylesheet Language Transformation (XSLT)に関連する宣言の名前空間 -
XPath: XPathに関連する宣言の名前空間 -
Tools: Tools::Factoryに関連する宣言の名前空間
OracleXmlはファイルxml.hppで完全に定義されています。ユーザーに対して表示可能な別の名前空間、XmlCtxNSはxmlctx.hppで定義されています。この名前空間には、xmlctxコンテキストのCレベルの定義に対応するデータ構造および関連するデータ構造の、C++の定義が含まれています。ユーザーがこの名前空間の詳細を認識する必要はありませんが、xmlctx.hppをほとんどのアプリケーションのメイン・モジュールに含める必要があります。
複数のエンコーディングが、現在すべての実装で使用される予定である、oratextタイプに基づいてサポートされています。全文字列はoratext*として表されます。
27.4 Ctx名前空間
Ctx名前空間には、TCtxインタフェースに関連するデータ型およびインタフェースが含まれます。
27.4.1 OracleXMLデータ型
OracleXMLのデータ型について説明します。
encoding: 特定のサポートされるエンコーディングです。次の種類のエンコーディング(またはエンコーディング名)がサポートされます。
-
data_encoding
-
default_input_encoding
-
input_encoding: 以前のものを上書きします。
-
error_language: エラー・ハンドラの言語によって上書きされます(指定されている場合)。
encodings: エンコーディングの配列です。
27.4.2 Ctxインタフェース
CtxインタフェースErrorHandler、MemAllocatorおよびTctxについて説明します。
ErrorHandlerインタフェース: ルート・エラー・ハンドラ・クラスです。これは、主に基礎となるC実装からのエラーをローカル処理します。一部の実装では、XmlExceptionがスローされる可能性があります。すべての実装の要件を満たすために、この動作は署名では指定されていません。しかし、例外オブジェクトの作成は可能です。このエラー・ハンドラは、TCtxが初期化されるときにTCtxコンストラクタに渡されます。このインタフェースの実装はユーザーが行います。
MemAllocatorインタフェース: 将来、異なる割当て方法を使用できるように、TCtxインタフェースを合理的に一般化する単純なルート・インタフェースです。これは、TCtxが初期化されるときにTCtxコンストラクタに渡されます。これは、割り当てられるオブジェクトのタイプを認識しない低レベルのアロケータです。このインタフェースを含むアロケータは直接使用できます。この場合、ユーザーは(deallocを使用して)オブジェクトを明示的に割当て解除する責任があります。
MemAllocatorインタフェースがTCtxコンストラクタに対するパラメータとして渡される場合、通常、演算子newを上書きできます。この場合、CおよびC++両方におけるすべてのメモリー割当ては同じアロケータによって行われます。
Tctxインタフェース: XMLコンテキスト実装に対する暗黙的なインタフェースです。これは、主にメモリー割当て、エラー(例外以外の)処理および異なるエンコーディング処理で使用されます。コンテキスト・インタフェースは、タイプ・パラメータとして使用される暗黙的なインタフェースです。TCtxという名前は、対応するタイプ・パラメータ名として使用されます。実際の置換は、実際のコンテキスト実装によってパラメータ化(テンプレート化)された実装をインスタンス化することで行われます。この場合、エラーXmlExceptionがスローされる可能性があります。すべてのコンストラクタで、コンテキスト実装を作成および初期化できます。マルチスレッド環境では、各スレッドに対して別個のコンテキスト実装を初期化する必要があります。
27.5 IOネームスペース
IO名前空間では、全XMLツール製品の様々な入出力オプションに対してインタフェースを指定します。
27.5.1 IOデータ型
データ型InputSourceTypeは、サポートされている入力ソースの種類を指定します。
-
ISRC_URI: 入力は、指定されたUniversal Resource Identifier (URI)から読み取られます。 -
ISRC_FILE: 入力はファイルから読み取られます。 -
ISRC_BUFFER: 入力はバッファから読み取られます。 -
ISRC_DOM: 入力はDOMツリーです。 -
ISRC_CSTREAM: 入力はCレベルのストリームです。
27.7 エラー・メッセージ・ファイル
エラー・メッセージ・ファイルは、$ORACLE_HOME/xdk/mesgディレクトリにあります。このディレクトリを指すように環境変数ORA_XML_MESGを設定できますが、これは必須ではありません。
関連項目:
『Oracle Database XML C++ APIリファレンス』のパッケージCtx API for C++に関する項