18 Oracle XML Developer's Kit for Cの開始
Oracle XML Developer's Kit (XDK) for Cを使用するための準備について説明します。
トピック:
- XDK for Cコンポーネントのインストール
XDK for Cコンポーネントは、Extensible Markup Language (XML)の読取り、操作、変換および検証を行うための基本コンポーネントです。XDK for Cコンポーネントは、Oracle Databaseに付属しています。 - XDK for Cコンポーネント用のUNIX環境の構成
このトピックでは、コンポーネントの依存性、環境変数、実行時環境とコンパイル時環境およびコンポーネント・バージョンについて説明します。 - XDK Cコンポーネント用のWindows環境の構成
このトピックでは、コンポーネントの依存性、環境変数の設定、実行時環境のテスト、コンパイル時環境の設定とテストおよびMicrosoft Visual StudioのVisual C++について説明します。 - 統合C APIの概要
統合C APIは、XDK for CおよびOracle XML DBの両方で必要とされる機能を統合したプログラム・インタフェースです。このAPIは、主にXSLTおよびXMLスキーマで使用されます。 - XDK for Cコンポーネントのグローバリゼーション・サポート
XDK for C Parserでは、300を超えるIANAキャラクタ・セットがサポートされています。
18.1 XDK for Cコンポーネントのインストール
XDK for Cコンポーネントは、Extensible Markup Language (XML)の読取り、操作、変換および検証を行うための基本コンポーネントです。XDK for Cコンポーネントは、Oracle Databaseに付属しています。
この章では、Oracle DatabaseとともにXDKをインストールし、Oracle Database Examplesメディアのデモ・プログラムもインストールしたと想定します。インストールの手順およびXDKディレクトリ構造の説明は、「XDKのインストールについて」を参照してください。
次の一連の例は、XDKデモとXDKコンポーネントで使用されるライブラリのUNIXディレクトリ構造を示しています。サブディレクトリには、XDK for Cコンポーネントのサンプル・プログラムとデータ・ファイルが入っています。
例18-1に、CのOracleホーム・ディレクトリの下のメイン・ディレクトリを示します。
このメイン・ディレクトリの下に、各サブディレクトリの内容が個別に表示されます。
bin
ディレクトリには、次のコンポーネントが含まれます。
schema
xml
xmlcg
xsl
xvm
lib
ディレクトリには、次のコンポーネントが含まれます。
libcore11.a
libcoresh11.so
libnls11.a
libunls11.a
libxml11.a
libxmlsh10.a
xdk
ディレクトリには、次のdemo
サブディレクトリが含まれます。
| demo/
| - c/
| - dom/
| - parser/
| - sax/
| - schema/
| - webdav/
| - xslt/
| - xsltvm/
/xdk/demo/c
サブディレクトリには、XDK for Cコンポーネントのサンプル・プログラムとデータ・ファイルが含まれます。「Oracle XML Developer's Kit for C」の章で、これらのプログラムを使用して最も重要なC言語の機能を理解する方法について説明しています。
xdk
ディレクトリには、次のinclude
サブディレクトリも含まれます。
| include/
oratypes.h
oraxml.h
oraxmlcg.h
oraxsd.h
xml.h
xmlerr.h
xmlotn.h
xmlproc.h
xmlsch.h
xmlxptr.h
xmlxsl.h
xmlxvm.h
「UNIXでのXDK Cコンパイル時環境の設定とテスト」の表18-4に、Cのヘッダー・ファイルを示しています。
例18-1 Oracle XML Developer's Kit for Cのライブラリ、ヘッダー・ファイル、ユーティリティおよびデモ
- $ORACLE_HOME
| - bin/
| - lib/
| - xdk/
関連項目
18.2 XDK for Cコンポーネント用のUNIX環境の構成
このトピックでは、コンポーネントの依存性、環境変数、実行時環境とコンパイル時環境およびコンポーネント・バージョンについて説明します。
トピック:
- UNIXでのXDK for Cコンポーネントの依存性
この項で説明するCライブラリは、$ORACLE_HOME/lib
にあります。 - UNIXでのXDK for C環境変数の設定
XDK for Cコンポーネントを使用するときに必要なUNIX環境変数について説明します。 - UNIXでのXDK for C実行時環境のテスト
いくつかのユーティリティを実行して、UNIX実行時環境でXDK for Cをテストできます。 - UNIXでのXDK Cコンパイル時環境の設定とテスト
XDK Cコンパイル時UNIX環境を設定およびテストする方法について説明します。 - UNIXでのXDK for Cコンポーネントのバージョンの検証
所有しているXDKのバージョンを確認する方法について説明します。
18.2.1 UNIXでのXDK for Cコンポーネントの依存性
この項で説明するCライブラリは、$ORACLE_HOME/lib
にあります。
XDK for CおよびXDK for C++コンポーネントは、次のライブラリに含まれます。
libxml11.a
このライブラリに含まれるXKDコンポーネントは次のとおりです。
-
XMLパーサー: XML文書が整形式であるか、Document Type Definition (DTD)またはXML Schemaに対して妥当であるかどうか(オプション)を確認します。プログラム・アクセス用のDocument Object Model (DOM)およびSimple API for XML (SAX)インタフェースをサポートします。
-
Extensible Stylesheet Language Transformation (XSLT)プロセッサ: XML文書を別のXML文書に変換します。
-
XSLTコンパイラ: XSLTスタイルシートをコンパイルして、XSLT Virtual Machine (XSLT VM)によって使用されるバイトコードを生成します
-
XSLTVM: XSLT変換エンジンです。
-
XMLスキーマ・プロセッサ: XMLファイルをXMLスキーマに対して検証します。
表18-1に、XDK for Cコンポーネント(UNIX)が依存するCommon Oracle Runtime Environment (CORE)ライブラリおよびGlobalization Supportライブラリを示します。
表18-1 Oracle XML Developer's Kit for Cコンポーネントの依存ライブラリ(UNIX)
コンポーネント | ライブラリ | 説明 |
---|---|---|
COREライブラリ |
|
複数プラットフォームにわたる移植性を実現するCランタイム関数を含みます。 |
CORE動的リンク・ライブラリ |
|
UNIXプラットフォームでの動的リンクをサポートするCランタイム・ライブラリ。 |
Globalization Support共通ライブラリ |
|
8ビット・エンコーディングのUnicode (UTF-8)、16ビット・エンコーディングのUnicode (UTF-16)およびISO-8859-1キャラクタ・セットがサポートされます。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。 |
Unicode用のGlobalization Supportライブラリ |
|
『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。 |
18.2.2 UNIXでのXDK for C環境変数の設定
XDK for Cコンポーネントを使用するときに必要なUNIX環境変数について説明します。
表18-2 Oracle XML Developer's Kit for CコンポーネントのUNIXでの環境設定
変数 | 説明 | 設定 |
---|---|---|
|
グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。 |
グローバリゼーション・サポート・データ・ファイルの場所を設定します。次のように変数を設定します。 setenv ORA_NLS10 $ORACLE_HOME/nls/data |
|
XMLエラー・メッセージ・ファイルの場所を設定します。 |
setenv ORA_XML_MESG $ORACLE_HOME/xdk/mesg |
|
XDK for C実行可能ファイルの場所を設定します。 |
次のように setenv PATH ${PATH}:${ORACLE_HOME}/bin |
18.2.3 UNIXでのXDK for C実行時環境のテスト
いくつかのユーティリティを実行して、UNIX実行時環境でXDK for Cをテストできます。
これらのユーティリティを表18-3に示します。
表18-3 Oracle XML Developer's Kit for C/C++ユーティリティ(UNIX)
実行可能ファイル | ディレクトリ | 説明 |
---|---|---|
|
|
C XMLスキーマ・バリデータ |
|
|
C XMLパーサー |
|
|
C++ Class Generator |
|
|
C XVMプロセッサ |
オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hh
フラグを付けてユーティリティを実行します。
18.2.4 UNIXでのXDK Cコンパイル時環境の設定とテスト
XDK Cコンパイル時UNIX環境を設定およびテストする方法について説明します。
表18-4 に、XDK for Cコンポーネントのコンパイルに必要なヘッダー・ファイルを示します。これらのファイルは、$ORACLE_HOME/xdk/include
にあります。コードをコンパイルする前に、実行時環境を設定する必要があります。
表18-4 Oracle XML Developer's Kit for Cコンパイル時環境のヘッダー・ファイル
ヘッダー・ファイル | 説明 |
---|---|
|
Oracle Cプライベート・データ型をインクルードします。 |
|
Oracle9i XML Open Reporting Application (ORA)データ型および |
|
C++ Class Generator用のC APIをインクルードします(下位互換性のみを目的としています)。 |
|
Oracle9i XMLスキーマ定義(XSD)バリデータのデータ型およびアプリケーション・プログラミング・インタフェース(API)をインクルードします(下位互換性のみを目的としています)。 |
|
Oracle Call Interface (OCI)経由で使用するか単独で使用するかにかかわらず、統合されたDOM APIを透過的に処理します。非推奨となった |
|
XMLエラーとエラーの番号をインクルードします。 |
|
単独でコンパイルするか、OCIを使用するかに応じて、その他のヘッダーをインクルードします。 |
|
|
|
Oracle XSDバリデータのパブリックAPIをインクルードします。 |
|
現在はマニュアルでの説明もサポートもされていない、XPointerのデータ型とAPIをインクルードします。 |
|
XSLTプロセッサのデータ型とパブリックAPIをインクルードします。 |
|
XSLTコンパイラとVMのデータ型とパブリックAPIをインクルードします。 |
トピック:
- UNIXでのXDK for Cコンパイル時環境のテスト
コンパイル時環境でXDK for Cをテストする最も簡単な方法は、Oracle Database CDではなくExamplesメディアにあるサンプル・プログラムに対して、make
ユーティリティを実行することです。
18.2.4.1 UNIXでのXDK for Cコンパイル時環境のテスト
コンパイル時環境でXDK for Cをテストする最も簡単な方法は、Oracle Database CDではなくExamplesメディアにあるサンプル・プログラムに対して、make
ユーティリティを実行することです。
デモをインストールすると、$ORACLE_HOME/xdk/demo/c
に配置されます。同じディレクトリにあるREADME
に、コンパイルの手順と使用上の注意が示されています。
サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。
cd $ORACLE_HOME/xdk/demo/c make
18.3 XDK Cコンポーネント用のWindows環境の構成
このトピックでは、コンポーネントの依存性、環境変数の設定、実行時環境のテスト、コンパイル時環境の設定とテストおよびMicrosoft Visual StudioのVisual C++について説明します。
トピック:
- WindowsでのXDK for Cコンポーネントの依存性
この項で説明するCライブラリは、%ORACLE_HOME%\lib
にあります。 - WindowsでのXDK for C環境変数の設定
XDK for Cコンポーネントを使用するときに必要なWindows環境変数について説明します。 - WindowsでのXDK for C実行時環境のテスト
いくつかのユーティリティを実行して、Microsoft Windows実行時環境でXDKをテストできます。 - WindowsでのXDK for Cコンパイル時環境の設定とテスト
コードをコンパイルする前に、実行時環境を設定する必要があります。 - Microsoft Visual StudioでのXDK for CコンポーネントとVisual C++の使用
18.3.1 WindowsでのXDK for Cコンポーネントの依存性
この項で説明するCライブラリは、%ORACLE_HOME%\lib
にあります。
XDK for Cコンポーネントは、次のライブラリに含まれます。
libxml11.dll
このライブラリに含まれるXDKコンポーネントは次のとおりです。
-
XMLパーサー
-
XSLTプロセッサ
-
XSLTコンパイラ
-
XSLT VM
-
XML Schema Processor
表18-5に、XDK for Cコンポーネント(Windows)が依存するOracleのCOREライブラリおよびGlobalization Supportライブラリを示します。
表18-5 Oracle XML Developer's Kit for Cコンポーネントの依存ライブラリ(Windows)
コンポーネント | ライブラリ | 説明 |
---|---|---|
COREライブラリ |
|
複数プラットフォームにわたる移植性を実現するランタイム関数を含みます。 |
Globalization Support共通ライブラリ |
|
UTF-8、UTF-16およびISO-8859-1のキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。 |
Unicode用のGlobalization Supportライブラリ |
|
『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。 |
18.3.2 WindowsでのXDK for C環境変数の設定
XDK for Cコンポーネントを使用するときに必要なWindows環境変数について説明します。
表18-6 Oracle XML Developer's Kit for CコンポーネントのWindowsでの環境設定
変数 | 説明 | 設定 |
---|---|---|
|
グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。 |
この変数には、グローバリゼーション・サポート・データ・ファイルの場所を設定します。次のように変数を設定します。 set ORA_NLS10=%ORACLE_HOME%\nls\data |
|
XMLエラー・メッセージ・ファイルの場所を設定します。 |
set ORA_XML_MESG=%ORACLE_HOME%\xdk\mesg |
|
XDK for Cのデータ定義言語(DLL)および実行可能ファイルの場所を設定します。 |
次のように path %path%;%ORACLE_HOME%\bin |
18.3.3 WindowsでのXDK for C実行時環境のテスト
いくつかのユーティリティを実行して、Microsoft Windows実行時環境でXDKをテストできます。
これらを表18-7に示します。
例18-7 Oracle XML Developer's Kit for C/C++ユーティリティ(Windows)
実行可能ファイル | ディレクトリ | 説明 |
---|---|---|
|
|
C XMLスキーマ・バリデータ |
|
|
C XMLパーサー 「C XML Parserコマンドライン・ユーティリティの使用」も参照してください |
|
|
C++ Class Generator |
|
|
C XVMプロセッサ 「XVM Processorコマンドライン・ユーティリティの使用」も参照してください |
オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hh
フラグを付けてユーティリティを実行します。
18.3.4 WindowsでのXDK for Cコンパイル時環境の設定とテスト
コードをコンパイルする前に、実行時環境を設定する必要があります。
「UNIXでのXDK Cコンパイル時環境の設定とテスト」の表18-4に、WindowsでのCコンポーネントのコンパイルに必要なヘッダー・ファイルを示しています。UNIXのインストールとWindowsのインストールの両方で、相対ファイル名は同じです。
Windowsでは、ヘッダー・ファイルは%ORACLE_HOME%\xdk\include
にあります。
トピック:
- WindowsでのXDK for Cコンパイル時環境のテスト
デモ・プログラムをコンパイルすることにより、コンパイル時環境でXDK for Cをテストできます。
18.3.4.1 WindowsでのXDK for Cコンパイル時環境のテスト
デモ・プログラムをコンパイルすることにより、コンパイル時環境でXDK for Cをテストできます。
これらは、Oracle Database Examplesメディアからインストールした後は%ORACLE_HOME%\xdk\demo\c
にあります。同じディレクトリにあるREADME
ファイルに、コンパイルの手順と使用上の注意が示されています。デモ・プログラムをコンパイルする前に、「WindowsでのMake.batファイルの編集」の説明に従ってMake.bat
ファイルを編集してください。
トピック:
- WindowsでのMake.batファイルの編集
フォルダ%ORACLE_HOME%\xdk\demo\c
の各サブフォルダに、Make.bat
ファイルがあります。ライブラリおよびヘッダー・ファイルのパスをCOMPILEコマンドに追加して、各フォルダのMake.bat
ファイルを更新する必要があります。/libpath:%ORACLE_HOME%\lib
ですでにCライブラリが指定されているので、:LINK
セクションのパスを編集する必要はありません。 - WindowsでのXDK for Cコンパイラ・パスの設定
Microsoft Windowsでcl.exe
コンパイラのパスを設定する方法について説明します。
18.3.4.1.1 WindowsでのMake.batファイルの編集
フォルダ%ORACLE_HOME%\xdk\demo\c
の各サブフォルダに、Make.bat
ファイルがあります。ライブラリおよびヘッダー・ファイルのパスをCOMPILEコマンドに追加して、各フォルダのMake.bat
ファイルを更新する必要があります。/libpath:%ORACLE_HOME%\lib
ですでにCライブラリが指定されているので、:LINK
セクションのパスを編集する必要はありません。
例18-2のMake.bat
ファイルのセクションでは、追加する必要があるパスを太字のテキストで示しています。
例18-2 Oracle XML Developer's Kit for CのMake.batファイルの編集(Windows)
:COMPILE
set filename=%1
cl -c -Fo%filename%.obj %opt_flg% /DCRTAPI1=_cdecl /DCRTAPI2=_cdecl /nologo /Zl
/Gy /DWIN32 /D_WIN32 /DWIN_NT /DWIN32COMMON /D_DLL /D_MT /D_X86_=1
/Doratext=OraText -I. -I..\..\..\include -I%ORACLE_HOME%\xdk\include %filename%.c
goto :EOF
:LINK
set filename=%1
link %link_dbg% /out:..\..\..\..\bin\%filename%.exe
/libpath:%ORACLE_HOME%\lib /libpath:..\..\..\..\lib
%filename%.obj oraxml10.lib user32.lib kernel32.lib msvcrt.lib ADVAPI32.lib
oldnames.lib winmm.lib
18.3.4.1.2 WindowsでのXDK for Cコンパイラ・パスの設定
Microsoft Windowsでcl.exe
コンパイラのパスを設定する方法について説明します。
デモ・ファイルmake.bat
では、Microsoft .NET Framework Software Development Kit (SDK)に含まれている無償のcl.exe
コンパイラの使用を想定しています。
Microsoft Windowsでcl.exe
コンパイラのパスを設定するには、次の手順を実行します。
- 「スタート」メニュー→「設定」→「コントロール パネル」を選択します。
- 「システム」をダブルクリックします。
- 「システムのプロパティ」ダイアログ・ボックスで、「詳細」タブを選択し、「環境変数」をクリックします。
- 「システム環境変数」リストで「Path」を選択し、「編集」をクリックします。
cl.exe
のパスを%PATH%
変数に追加し、「OK」をクリックします。
サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。
cd $ORACLE_HOME/xdk/demo/c make
18.4 統合C APIの概要
統合C APIは、XDK for CおよびOracle XML DBの両方で必要とされる機能を統合したプログラム・インタフェースです。このAPIは、主にXSLTおよびXMLスキーマで使用されます。
表18-4に示すように、統合C APIはxml.h
ヘッダー・ファイルで宣言します。表18-8に、XDK for C APIの概要を示します。詳細は、『Oracle Database XML C APIリファレンス』を参照してください。
表18-8 Oracle XML Developer's Kit for C APIの概要
パッケージ | 用途 |
---|---|
XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。 |
|
DOMを使用してXML文書を解析および操作します。このAPIはDOM 2.0仕様にできるだけ準拠していますが、オブジェクト指向のDOM仕様からフラットなCの名前空間へマッピングする際に、一部の名前を変更します。たとえば、オーバーロードされた |
|
|
|
SAXを使用したイベントベースのXML解析を有効にします。 |
|
複数のXMLスキーマ文書から、特定のインスタンス・ドキュメントを検証するために使用できる単一のスキーマを作成します。 |
|
DOMツリーの文書の検索とナビゲーションを有効にします。 |
|
XMLデータの読取り方法およびアプリケーションに提供する必要がある情報について、XMLプロセッサを定義します。 |
|
XPathに関連するタイプおよびインタフェースを処理します。 |
|
XML文書内のノードの場所を特定します。 |
|
XSL処理を実行します。 |
|
コンパイル済のXSLTコードを実行できる仮想マシンを実装します。 |
このAPIは、準拠するコンテキストによって関数の統合を実現します。最上位のXMLコンテキスト(xmlctx
)は、連動するXMLコンポーネント間で共通の情報を共有します。このコンテキストは次のような情報を定義します。
-
データのエンコーディング
-
エラー・メッセージ言語
-
下位の割当てコールバック
アプリケーションでは、DOMまたはSAXインタフェースを使用して文書を解析し、プログラム・アクセスを提供する前に、この情報が必要です。
XDK for CおよびOracle XML DBのどちらにおいても、最上位コンテキストおよびサービス・コンテキストに対し、異なる起動およびメモリー解放関数が必要です。初期化関数は実装固有の引数を取り、準拠するコンテキストを戻します。
準拠するコンテキストを使用すると、統合が可能です。準拠するコンテキストとは、戻されたコンテキストがxmlctx
で始まる必要があることを意味します。この標準ヘッダーの後に、実装固有の追加部分が続く場合があります。
アプリケーションでは、xmlctx
を取得した後は、統合されたDOMの起動を使用し、すべての起動においてxmlctx
を最初の引数として使用します。
18.5 XDK for Cコンポーネントのグローバリゼーション・サポート
XDK for C Parserでは、300を超えるIANAキャラクタ・セットがサポートされています。
これらのキャラクタ・セットには、「XDK for Cがサポートするキャラクタ・セット」に示されているものが含まれます。
キャラクタ・セットを使用する場合の考慮事項を次に示します。
-
他のXMLパーサーとの相互運用性を考慮し、Internet Assigned Numbers Authority (IANA)キャラクタ・セット名を使用することをお薦めします。
-
XMLパーサーでサポートが必須とされているのはUTF-8とUTF-16のみであるため、これらのキャラクタ・セットを使用することをお薦めします。
-
デフォルトの入力エンコーディング(インコーディング)はUTF-8です。入力文書のエンコーディングが(HTTPキャラクタ・セット、バイト・オーダー・マーク(BOM)、XMLDeclなどによって)自明ではない場合は、デフォルトの入力エンコーディングが想定されます。シングルバイト文字セット(US-ASCII、ISO 8859文字セットのいずれか)のみを使用している場合、シングルバイトのパフォーマンスが最もよいため、明示的にデフォルトのエンコーディングを設定することをお薦めします。フラグ
XML_FLAG_FORCE_INCODING
は、入力文書には常にデフォルトの入力エンコーディングを適用することを指定します。この場合、BOMまたはXMLDeclは無視されます。ただし、プロトコル宣言(HTTP文字セットなど)は常にサポートされます。 -
DOMおよびSAXのデータ・エンコーディング(アウトコーディング)は、慎重に選択してください。シングルバイト・エンコーディングは最速ですが、表示できる文字のセットは非常に限られています。次に高速なのはUnicode (UTF-16)で、最も遅いのは、UTF-8などのマルチバイト・エンコーディングです。入力データのアウトコーディングへの変換によりデータが失われると、エラーが発生します。最大限の効用を得るには、Unicodeベースのアウトコーディングを使用してください。アウトコーディングを指定しないと、デフォルトは、解析された最初のドキュメントのインコーディングに設定されます。