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

戻る
戻る
 
次へ
次へ
 

16 C XDKコンポーネントを使用する前に

XDK Cコンポーネントは、XML文書の読取り、操作、変換および検証を行うための基本コンポーネントです。

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

C XDKコンポーネントのインストール

C XDKコンポーネントは、Oracle Databaseに付属しています。この章では、Oracle DatabaseとともにXDKをインストールし、Oracle Database Examplesメディアのデモ・プログラムもインストールしたと想定します。インストールの手順およびXDKディレクトリ構造の説明は、「XDKのインストール」を参照してください。

例16-1 に、XDKデモとXDKコンポーネントで使用されるライブラリのUNIXディレクトリ構造を示します。$ORACLE_HOME/xdk/demo/cのサブディレクトリには、XDK for Cコンポーネントのサンプル・プログラムとデータ・ファイルが入っています。第II部「XDK for C」では、これらのプログラムを理解および使用する方法について説明します。

例16-1 C XDKのライブラリ、ヘッダー・ファイル、ユーティリティおよびデモ

- Oracle_home_directory
    | - bin/
         schema
         xml
         xmlcg
         xsl
         xvm
    | - lib/
         libcore11.a
         libcoresh11.so
         libnls11.a
         libunls11.a
         libxml11.a
         libxmlsh10.a
    | - xdk/
         | demo/
            | - c/
                 | - dom/
                 | - parser/
                 | - sax/
                 | - schema/
                 | - webdav/
                 | - xslt/
                 | - xsltvm/
         | 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

サブディレクトリには、C XDKコンポーネントのサンプル・プログラムとデータ・ファイルが入っています。第II部「XDK for C」では、これらのプログラムを使用して最も重要なC言語の機能を理解する方法について説明します。


関連項目:

XDK Cコンポーネントのリストは、「Oracle XML Developer's Kit(XDK)の概要」を参照してください。

C XDKコンポーネント用のUNIX環境の構成

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

UNIXでのC XDKコンポーネントの依存性

この項で説明するCライブラリは、$ORACLE_HOME/libにあります。XDK CおよびC++コンポーネントは、次のライブラリに含まれます。

libxml11.a

このライブラリに含まれるXDKコンポーネントは次のとおりです。

  • XMLパーサー: XML文書が整形式であるか、DTDまたはXMLスキーマに対して妥当であるかどうか(オプション)を確認します。プログラム・アクセス用のDOMおよびSAXインタフェースをサポートします。

  • XSLTプロセッサ: XML文書を別のXML文書に変換します。

  • XSLTコンパイラ: XSLTスタイルシートをコンパイルしてバイト・コードを生成します。生成したコードはXSLT仮想マシンによって使用されます。

  • XSLTVM: XSLT変換エンジンです。

  • XMLスキーマ・プロセッサ: XMLファイルをXMLスキーマに対して検証します。

表16-1 に、XDK Cコンポーネント(UNIX)が依存するOracleのCOREライブラリおよびGlobalization Supportライブラリを示します。

表16-1 XDK Cコンポーネントの依存ライブラリ(UNIX)

コンポーネント ライブラリ 説明

COREライブラリ

libcore11.a

複数プラットフォームにわたる移植性を実現するCランタイム関数を含みます。

CORE動的リンク・ライブラリ

libcoresh11.so

UNIXプラットフォームでの動的リンクをサポートするCランタイム・ライブラリ。

Globalization Support共通ライブラリ

libnls11.a

UTF-8、UTF-16およびISO-8859-1のキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。

Unicode用のGlobalization Supportライブラリ

libunls11.a

『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルの場所を特定する際に環境に依存します。


UNIXでのC XDK環境変数の設定

表16-2 に、XDK Cコンポーネントを使用するときに必要なUNIX環境変数を示します。

表16-2 XDK CコンポーネントのUNIXでの環境設定

変数 説明 設定

$ORA_NLS10

グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。

グローバリゼーション・サポート・データ・ファイルの場所を設定します。この変数は次のように設定します。

setenv ORA_NLS10 $ORACLE_HOME/nls/data

$ORA_XML_MESG

XMLエラー・メッセージ・ファイルの場所を設定します。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。

mesgディレクトリのパスを設定します。次に例を示します。

setenv ORA_XML_MESG $ORACLE_HOME/xdk/mesg

$PATH

C XDK実行可能ファイルの場所を設定します。

PATHは次のように設定できます。

setenv PATH ${PATH}:${ORACLE_HOME}/bin

UNIXでのC XDK実行時環境のテスト

表16-3に示すいずれかのユーティリティを実行して、UNIX実行時環境をテストできます。

表16-3 C/C++ XDKユーティリティ(UNIX)

実行可能ファイル ディレクトリ 説明

schema

$ORACLE_HOME/bin

C XMLスキーマ・バリデータ

関連項目: 「C XML Schema Processorコマンドライン・ユーティリティの使用」

xml

$ORACLE_HOME/bin

C XMLパーサー

関連項目: 「C XML Parserコマンドライン・ユーティリティの使用」

xmlcg

$ORACLE_HOME/bin

C++ Class Generator

関連項目: 「XML C++ Class Generatorコマンドライン・ユーティリティの使用」

xsl

$ORACLE_HOME/bin

C XSLTプロセッサ

関連項目: 「C XSLT Processorコマンドライン・ユーティリティの使用」

xvm

$ORACLE_HOME/bin

C XVMプロセッサ

関連項目: 「XVM Processorコマンドライン・ユーティリティの使用」


オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hhフラグを付けてユーティリティを実行します。

UNIXでのC XDKコンパイル時環境の設定とテスト

表16-4 に、Cコンポーネントのコンパイルに必要なヘッダー・ファイルを示します。これらのファイルは、$ORACLE_HOME/xdk/includeにあります。コードをコンパイルする前に、実行時環境を設定する必要があります。

表16-4 C XDKのコンパイル時環境のヘッダー・ファイル

ヘッダー・ファイル 説明

oratypes.h

Oracle Cプライベート・データ型をインクルードします。

oraxml.h

libxml.aに含まれるOracle9i XML ORAデータ型とパブリックORA APIをインクルードします(下位互換性のみを目的としています)。かわりにxml.hを使用してください。

oraxmlcg.h

C++ Class Generator用のC APIをインクルードします(下位互換性のみを目的としています)。

oraxsd.h

Oracle9i XSDバリデータのデータ型とAPIをインクルードします(下位互換性のみを目的としています)。

xml.h

OCI経由で使用するか単独で使用するかにかかわらず、統合されたDOM APIを透過的に処理します。非推奨となったoraxml.hに置き換わります。

xmlerr.h

XMLエラーとエラーの番号をインクルードします。

xmlotn.h

単独でコンパイルするか、OCLを使用するかに応じて、その他のヘッダーをインクルードします。

xmlproc.h

libxml11.aのOracle XMLデータ型とXMLパブリック・パーサーのAPIをインクルードします。

xmlsch.h

Oracle XSDバリデータのパブリックAPIをインクルードします。

xmlptr.h

現在はマニュアルでの説明もサポートもされていない、XPointerのデータ型とAPIをインクルードします。

xmlxsl.h

XSLTプロセッサのデータ型とパブリックAPIをインクルードします。

xmlxvm.h

XSLTコンパイラとVMのデータ型とパブリックAPIをインクルードします。


UNIXでのC XDKコンパイル時環境のテスト

コンパイル時環境をテストする最も簡単な方法は、Oracle Database CDではなくExamplesメディアにあるサンプル・プログラムに対して、makeユーティリティを実行することです。デモをインストールした後、サンプル・プログラムは$ORACLE_HOME/xdk/demo/cディレクトリにあります。同じディレクトリにあるREADMEに、コンパイルの手順と使用上の注意が示されています。

サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。

cd $ORACLE_HOME/xdk/demo/c
make

UNIXでのC XDKコンポーネントのバージョンの検証

使用しているXDKのバージョンを取得するには、ディレクトリを$ORACLE_HOME/libに移動し、次のコマンドを実行します。

strings libxml11.a | grep -i developers

C XDKコンポーネント用のWindows環境の構成

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

WindowsでのC XDKコンポーネントの依存性

この項で説明するCライブラリは、%ORACLE_HOME%/libにあります。次のライブラリにXDK Cコンポーネントが含まれます。

libxml11.dll

このライブラリに含まれるXDKコンポーネントは次のとおりです。

  • XMLパーサー

  • XSLTプロセッサ

  • XSLTコンパイラ

  • XSLT VM

  • XML Schema Processor

表16-5に、XDK Cコンポーネント(Windows)が依存するOracleのCOREライブラリおよびGlobalization Supportライブラリを示します。

表16-5 XDK Cコンポーネントの依存ライブラリ(Windows)

コンポーネント ライブラリ 説明

COREライブラリ

libcore11.dll

複数プラットフォームにわたる移植性を実現するランタイム関数を含みます。

Globalization Support共通ライブラリ

libnls11.dll

UTF-8、UTF-16およびISO-8859-1のキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。

Unicode用のGlobalization Supportライブラリ

libunls11.dll

『Oracle Databaseグローバリゼーション・サポート・ガイド』で説明しているキャラクタ・セットをサポートします。このライブラリは、エンコーディング・ファイルおよびメッセージ・ファイルを見つける際に環境に依存します。


WindowsでのC XDK環境変数の設定

表16-6 に、XDK Cコンポーネントを使用するときに必要なWindows環境変数を示します。

表16-6 C XDKコンポーネントのWindowsでの環境設定

変数 説明 設定

%ORA_NLS10%

グローバリゼーション・サポート・キャラクタ・エンコーディング定義ファイルの場所を設定します。エンコーディング・ファイルは、Oracle Databaseで使用可能なキャラクタ・セットのサブセットを表します。

この変数には、グローバリゼーション・サポート・データ・ファイルの場所を設定します。この変数は次のように設定します。

set ORA_NLS10=%ORACLE_HOME%\nls\data

%ORA_XML_MESG%

XMLエラー・メッセージ・ファイルの場所を設定します。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。

mesgディレクトリのパスを設定します。次に例を示します。

set ORA_XML_MESG=%ORACLE_HOME%\xdk\mesg

%PATH%

C XDK DLLおよび実行可能ファイルの場所を設定します。

PATHは次のように設定できます。

path %path%;%ORACLE_HOME%\bin

WindowsでのC XDK実行時環境のテスト

表16-7に示すいずれかのユーティリティを実行して、Windows実行時環境をテストできます。

表16-7 C/C++ XDKユーティリティ(Windows)

実行可能ファイル ディレクトリ 説明

schema.exe

%ORACLE_HOME%\bin

C XMLスキーマ・バリデータ

関連項目: 「C XML Schema Processorコマンドライン・ユーティリティの使用」

xml.exe

%ORACLE_HOME%\bin

C XMLパーサー

関連項目: 「C XML Parserコマンドライン・ユーティリティの使用」

xmlcg.exe

%ORACLE_HOME%\bin

C++ Class Generator

関連項目: 「XML C++ Class Generatorコマンドライン・ユーティリティの使用」

xsl.exe

%ORACLE_HOME%\bin

C XSLTプロセッサ

関連項目: 「C XSLT Processorコマンドライン・ユーティリティの使用」

xvm.exe

%ORACLE_HOME%\bin

C XVMプロセッサ

関連項目: 「XVM Processorコマンドライン・ユーティリティの使用」


オプションを付けないでこれらのユーティリティを実行すると、使用方法のヘルプが表示されます。詳細な使用方法の情報を表示するには、-hhフラグを付けてユーティリティを実行します。

WindowsでのC XDKコンパイル時環境の設定とテスト

「UNIXでのC XDKコンパイル時環境の設定とテスト」表16-4に、WindowsでのCコンポーネントのコンパイルに必要なヘッダー・ファイルを示しています。UNIXのインストールとWindowsのインストールの両方で、相対ファイル名は同じです。

Windowsでは、ヘッダー・ファイルは%ORACLE_HOME%\xdk\includeにあります。コードをコンパイルする前に、実行時環境を設定する必要があります。

WindowsでのC XDKコンパイル時環境のテスト

デモ・プログラムをコンパイルすることによって、コンパイル時環境をテストできます。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セクションのパスは編集する必要がありません。例16-2Make.batファイルのセクションでは、追加する必要があるパスを太字のテキストで示しています。

例16-2 C XDKの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
WindowsでのC XDKコンパイラ・パスの設定

デモ用make.batファイルでは、cl.exeコンパイラの使用を想定しています。このコンパイラは、Microsoft .NET Framework Software Development Kit(SDK)に含まれ、無償で入手できます。

Windows XPでcl.exeコンパイラのパスを設定するには、次の手順を実行します。

  1. 「スタート」メニュー→「設定」「コントロール パネル」を選択します。

  2. 「システム」をダブルクリックします。

  3. 「システムのプロパティ」ダイアログ・ボックスで、「詳細」タブを選択し、「環境変数」をクリックします。

  4. 「システム環境変数」で変数のパスを選択し、「編集」をクリックします。

  5. cl.exe のパスを%PATH%変数に追加し、「OK」をクリックします。

サンプル・プログラムをビルドし、実行します。そのためには、システム・プロンプトで次のコマンドを実行します。

cd $ORACLE_HOME/xdk/demo/c
make

WindowsでのC XDKコンポーネントとVisual C/C++の使用

Microsoft Visual C/C++でプロジェクトを設定し、XDKに付属しているデモに使用できます。

Visual C/C++でのプロジェクト・パスの設定(Windows)

プロジェクトのパスを設定するには、次の手順を実行します。

  1. Visual C++で作業領域をオープンし、プロジェクト用の*.cファイルをインクルードします。

  2. 「Tools」メニューにナビゲートし、「Options」を選択します。

  3. 図16-1に示すとおり、「Directories」タブを選択し、インクルード・パスを%ORACLE_HOME%\xdk\includeに設定します。

図16-1 Visual C++でのインクルード・パスの設定

図16-1の説明が続きます
「図16-1 Visual C++でのインクルード・パスの設定」の説明

Visual C/C++でのライブラリ・パスの設定(Windows)

プロジェクトのライブラリ・パスを設定するには、次の手順を実行します。

  1. Visual C++で作業領域をオープンし、プロジェクト用の*.cファイルをインクルードします。

  2. 「Tools」メニューにナビゲートし、「Options」を選択します。

  3. 図16-2に示すとおり、「Directories」タブを選択し、ライブラリ・パスを%ORACLE_HOME%\libに設定します。

    図16-2 Visual C++での静的ライブラリ・パスの設定

    図16-2の説明が続きます
    「図16-2 Visual C++での静的ライブラリ・パスの設定」の説明

  4. %ORACLE_HOME%\lib内の静的ライブラリのパスを設定した後、Visual C++のコンパイル環境でライブラリ名を設定します。メニュー・バーで「Project」メニュー→「Settings」を選択します。

  5. 図16-3に示すとおり、「Link」タブを選択し、「Object/Library Modules」フィールドにXDK Cコンポーネントのライブラリの名前を入力します。

    図16-3 Visual C/C++プロジェクトでのライブラリ名の設定

    図16-3の説明が続きます
    「図16-3 Visual C/C++プロジェクトでのライブラリ名の設定」の説明

統合C APIの概要

統合C APIは、XDKおよびOracle XML DBの両方で必要とされる機能を統合したプログラム・インタフェースです。このAPIは、主にXSLTおよびXMLスキーマで使用されます。

表16-4に示すように、統合C APIはxml.hヘッダー・ファイルで宣言します。表16-8に、C XDK APIの概要を示します。ドキュメントの詳細は、『Oracle XML APIリファレンス』を参照してください。

表16-8に、XDK C APIの概要を示します。

パッケージ 用途

コールバックAPI

XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。

DOM API

DOMを使用してXML文書を解析および操作します。このAPIはDOM 2.0仕様にできるだけ準拠していますが、オブジェクト指向のDOM仕様からフラットなCの名前空間へマッピングする際に、一部の名前を変更します。たとえば、オーバーロードされたgetName()メソッドをgetAttrName()に変更します。

範囲API

Rangeオブジェクトを作成および操作します。

SAX API

SAXを使用したイベントベースのXML解析を有効にします。

スキーマAPI

複数のXMLスキーマ文書から、特定のインスタンス・ドキュメントを検証するために使用できる単一のスキーマを作成します。

横断API

DOMツリーの文書の検索とナビゲーションを有効にします。

XML API

XMLデータの読取り方法およびアプリケーションに提供する必要がある情報について、XMLプロセッサを定義します。

XPath API

XPathに関連するタイプおよびインタフェースを処理します。

XPointer API

XML文書内のノードの場所を特定します。

XSLT API

XSL処理を実行します。

XSLTVM API

コンパイル済のXSLTコードを実行できる仮想マシンを実装します。


このAPIは、準拠するコンテキストによって関数の統合を実現します。最上位のXMLコンテキスト(xmlctx)は、連動するXMLコンポーネント間で共通の情報を共有します。このテキストは次のような情報を定義します。

アプリケーションでは、DOMまたはSAXインタフェースを使用して文書を解析し、プログラム・アクセスを提供する前に、この情報が必要です。

XDKおよびOracle XML DBのどちらにおいても、最上位コンテキストおよびサービス・コンテキストに対し、異なる起動およびメモリー解放関数が必要です。初期化関数は実装固有の引数を取り、準拠するコンテキストを戻します。

準拠するコンテキストを使用すると、統合が可能です。準拠するコンテキストとは、戻されたコンテキストがxmlctxで始まる必要があることを意味します。この標準ヘッダーの後に、実装固有の追加部分が続く場合があります。

アプリケーションでは、xmlctxを取得した後は、統合されたDOMコールを使用し、すべてのコールにおいてxmlctxを最初の引数として使用します。

C XDKコンポーネントのグローバリゼーション・サポート

C XDKパーサーでは、300を超えるIANAキャラクタ・セットがサポートされています。サポートされているキャラクタ・セットには、「XDK for Cがサポートするキャラクタ・セット」に示したものが含まれます。キャラクタ・セットを使用する場合の注意事項を次に示します。