ヘッダーをスキップ
Oracle XML Developer's Kitプログラマーズ・ガイド
10gリリース3(10.1.3)
B28611-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

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

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

XDK C/C++コンポーネントの仕様

Oracle XDK C/C++コンポーネントは、W3C勧告に基づいて構築されています。リリース10.1でサポートされる標準は次のとおりです。

XDK Cコンポーネントの概要

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

  • XML Parser for C: XML文書が整形式であるかどうか、およびDTDに対して妥当であるかどうか(オプション)を確認します。このパーサーは、DOMインタフェースを介してアクセス可能なオブジェクト・ツリーを構築するか、SAXインタフェースを介して順次操作します。

  • XSLT Processor for C: パーサーに付属するスタイルシートに従って、XML文書をフォーマットする機能を提供します。

  • XVM: 高機能なXSLT変換エンジンです。

  • XML Schema Processor for C: XMLスキーマ定義ファイルに対するXMLファイルの解析および検証をサポートします。


    関連項目:

    XDK Cコンポーネントの詳細は、「XML Parser for Cの使用」を参照してください。

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

Oracle DatabaseまたはOracle Application Serverをインストールすると、すでにXDK Cコンポーネントがインストールされています。次の手順を実行して、OTNからXDK Cコンポーネントの最新バージョンをダウンロードすることもできます。

  1. http://www.oracle.com/technology/tech/xml/にナビゲートします。

  2. 右側のバーにある「ソフトウェア」のリンクをクリックします。

  3. OTNのユーザー名とパスワードでログオンします(アカウントをお持ちでない場合、登録は無料で行えます)。

  4. WindowsバージョンのダウンロードまたはUNIXバージョンのダウンロードを選択します。

  5. ライセンス契約のすべての条件を受諾します。

  6. 該当する*.tar.gzまたは*.zipファイルをクリックします。

  7. 配布パッケージのファイルを解凍します。

    1. xdkディレクトリとサブディレクトリを置くディレクトリを選択します。

    2. そのディレクトリに移動し、次を使用してXDKダウンロード・アーカイブ・ファイルを抽出します。

      UNIX: tar xvfz xdk_xxx.tar.gz
      Windows: use WinZip visual archive extraction tool
      

UNIX環境の設定

UNIXバージョンのXDKをインストールすると、ディレクトリ構造は次のようになります。

-$XDK_HOME
     | - bin: executable files
     | - lib: library files
     | - nls/data: Globalization Support data files(*.nlb)
     | - xdk
          | - demo/c: demonstration code
          | - doc/c: documentation
          | - public: header files
          | - mesg: message files (*.msb)

次に、UNIXバージョンのXDK Cコンポーネントに付属するすべてのライブラリを示します。

表13-1 XDK Cコンポーネントのライブラリ

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

XML Parser

XSLT Processor

XML Schema Processor

libxml10.a

DOM、SAXおよびXSLTのAPIを含むXML Parser for C

XML Schema Processor for C


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

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

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

COREライブラリ

libcore10.a

Oracle COREライブラリ

Globalization Supportライブラリ

libnls10.a

libunls10.a

Oracle Globalization Support共通ライブラリ

Unicodeサポート用のOracle Globalization Supportライブラリ


コマンドラインの環境設定

パーサーは、bin/xmlを起動することによって、次のオプションを持つ実行可能ファイルとしてコールできます。

表13-3 パーサーのコマンドライン・オプション

オプション 意味

-c

準拠の確認のみ。検証は行いません。

-e encoding

デフォルトの入力ファイルのエンコーディング(インコーディング)を指定します。

-E encoding

DOM/SAXのエンコーディング(アウトコーディング)を指定します。

-f file

ファイル - URIではなくfilespecとして解析します。

-h

ヘルプ - 使用方法のヘルプおよびフラグの全リストを表示します。

-i n

XSLTプロセスを繰り返す回数。

-l language

エラーを報告する言語。

-n

DOMを全検索し、要素の数を報告します。

-o XSLoutfile

XSLTプロセッサの出力ファイルを指定します。

-p

解析後、文書を出力します。

-r

XSLTプロセスの<xsl:output>命令を無視しません。

-s stylesheet

スタイルシート - XSLスタイルシートを指定します。

-v

バージョン - パーサーのバージョンを表示し、終了します。

-V var value

CXSLTの最上位の変数をテストします。

-w

空白 - すべての空白を保持します。

-W

警告 - 警告の後で解析を停止します。

-x

SAX - SAXインタフェースを実行し、文書を出力します。


環境変数ORA_NLS10がグローバリゼーション・サポート・データ・ファイルの場所を指すように設定されているかどうかを確認します。Oracleデータベースをインストールすると、この変数を次のように設定できます。

setenv ORA_NLS10 ${ORACLE_HOME}/nls/data

Oracleデータベースをインストールしていない場合、次のように設定してXDKリリースに付属するグローバリゼーション・サポート・データ・ファイルを使用できます。

setenv ORA_NLS10 ${XDK_HOME}/nls/data

エラー・メッセージ・ファイルは、mesgサブディレクトリにあります。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。このメッセージ・ファイルは、$ORACLE_HOME/xdk/mesgディレクトリにもあります。

ORACLE_HOMEが存在しない場合、環境変数ORA_XML_MESGがmesgディレクトリへの絶対パスを指すように設定されているかどうかを確認します。Oracleデータベースをインストールすると、ORA_XML_MESGを設定できます。ただし、これは必須ではありません。

setenv ORA_XML_MESG ${ORACLE_HOME}/xdk/mesg

Oracleデータベースをインストールしていない場合、mesgサブディレクトリへの絶対パスを指すように環境変数ORA_XML_MESGを設定する必要があります。

setenv ORA_XML_MESG ${XDK_HOME}/xdk/mesg

パーサーは、提供されるAPIを使用するようにコードを記述することで起動することもできます。このコードは、includeサブディレクトリにあるヘッダーを使用してコンパイルし、libサブディレクトリにあるライブラリにリンクする必要があります。プログラムを構築する方法の詳細は、demoサブディレクトリにあるMakefileを参照してください。

UNIXで使用するXDKバージョンの取得の手順:

strings libxml10.a | grep -i Version

Windows環境の設定

次に、XDK Cコンポーネントに付属するWindowsライブラリを示します。

表13-4 XDK Cコンポーネントのライブラリ(Windows)

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

XML Parser

XSL Processor

XML Schema Processor

oraxml10.lib

oraxml10.dll

DOM、SAXおよびXSLTのAPIを含むXML Parser for C

XML Schema Processor for C


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

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

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

COREライブラリ

oracore10.dll

Oracle COREライブラリ

Globalization Supportライブラリ

oranls10.dll

Oracle Globalization Support共通ライブラリ

Globalization Supportライブラリ

oraunls10.dll

Unicodeサポート用のOracle Globalization Supportライブラリ


コマンドラインを使用する環境

パーサーとスキーマ・バリデータのオプションについては、表13-3「パーサーのコマンドライン・オプション」を参照してください。

環境変数ORA_NLS10がグローバリゼーション・サポート・エンコーディング定義ファイルの場所を指すように設定されているかどうかを確認します。この変数は、次のように設定できます。

setenv ORA_NLS10 %ORACLE_HOME%\nls\data

Oracleデータベースをインストールしていない場合、XDKリリース(Oracleデータベース内のサブセット)に付属するグローバリゼーション・サポート・エンコーディング定義ファイルを使用できます。

set ORA_NLS10 =%XDK_HOME%\nls\data

エラー・メッセージ・ファイルは、mesgサブディレクトリにあります。.msbで終わるファイルは、マシンで読取り可能な形式で、実行時に必要とされます。.msgで終わるファイルは、ユーザーが読取り可能な形式で、各エラーの原因および処理に関する説明が含まれます。このメッセージ・ファイルは、$ORACLE_HOME/xdk/mesgディレクトリにもあります。

Oracleデータベースをインストールすると、ORA_XML_MESGを設定できます。ただし、これは必須ではありません。

set ORA_XML_MESG =%ORACLE_HOME%\xdk\mesg

Oracleデータベースをインストールしていない場合、mesgサブディレクトリへの絶対パスを指すように環境変数ORA_XML_MESGを設定する必要があります。

set ORA_XML_MESG =%XDK_HOME%\xdk\mesg

サンプル・コードをコンパイルするには、clコンパイラのパスを設定します。

「スタート」メニューから、「設定」→「コントロール パネル」を選択します。「コントロール パネル」のポップアップ・ウィンドウで、「システム」アイコンを選択してタブルクリックします。「システムのプロパティ」という名前のウィンドウがポップアップ表示されます。「環境」タブを選択して、図13-1「Windowsでのclコンパイラのパスの設定」に示すように、cl.exeのパスをPATH変数に入力します。

図13-1 Windowsでのclコンパイラのパスの設定

図13-1の説明が続きます
「図13-1 Windowsでのclコンパイラのパスの設定」の説明

次のMake.batファイルの例に示すように、ライブラリとヘッダー・ファイルのパスをCOMPILEおよびLINKコマンドに追加してMake.batを更新する必要があります。

: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 -
ID:\Progra~1\Micros~1\VC98\Include %filename%.c
goto :EOF

:LINK
set filename=%1
link %link_dbg% /out:..\..\..\..\bin\%filename%.exe /libpath:%ORACLE_HOME%\lib
/libpath:D:\Progra~1\Micros~1\VC98\lib /libpath:..\..\..\..\lib %filename%.obj
oraxml10.lib oracore10.lib oranls10.lib oraunls10.lib user32.lib kernel32.lib
msvcrt.lib ADVAPI32.lib oldnames.lib winmm.lib
:EOF

この場合、次のようになります。

D:\Progra~1\Micros~1\VC98\Includeがヘッダー・ファイルのパス、D:\Progra~1\Micros~1\VC98\libがライブラリ・ファイルのパスです。

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

Microsoft Visual C++コンパイラを使用する場合、次のようにします。

環境変数ORA_NLS10がグローバリゼーション・サポート・データ・ファイルの場所を指すように設定されているかどうかを確認します。

Visual C++を使用するには、Windowsのシステム設定を使用して環境変数を定義する必要があります。

「スタート」メニューから、「設定」→「コントロール パネル」を選択します。「コントロール パネル」のポップアップ・ウィンドウで、「システム」アイコンを選択してタブルクリックします。「システムのプロパティ」という名前のウィンドウがポップアップ表示されます。「環境」タブを選択して、図13-2に示すように、ORA_NLS10と、その値d:\xdk\nls\dataを入力します。

図13-2 ORA_NLS10環境変数の設定

図13-2の説明が続きます
「図13-2 ORA_NLS10環境変数の設定」の説明

環境変数ORA_XML_MESGmesgディレクトリへの絶対パスを指すように設定されているかどうかを確認します。

Visual C++で環境変数を使用するには、Windowsのシステム設定を使用して環境変数を定義する必要があります。

「スタート」メニューから、「設定」→「コントロール パネル」を選択します。「コントロール パネル」のポップアップ・ウィンドウで、「システム」アイコンを選択してタブルクリックします。「システムのプロパティ」という名前のウィンドウがポップアップ表示されます。「環境」タブを選択して、図13-3(この図は以前のリリースの画面を示しています)に示すように、ORA_XML_MESGを入力します。

図13-3 ORA_XML_MESG環境変数の設定

図13-3の説明が続きます
「図13-3 ORA_XML_MESG環境変数の設定」の説明

図13-4に、DLLのPATHの設定を示します。

図13-4 DLLのPATHの設定

図13-4の説明が続きます
「図13-4 DLLのPATHの設定」の説明

Visual C++でワークスペースをオープンして、プロジェクト用の*.cファイルをインクルードした後、プロジェクトのパスを設定する必要があります。「Tools」メニューに移動し、「Options」を選択します。ウィンドウがポップアップ表示されます。図13-5に示すように、「Directories」タブを選択して、インクルード・パスを設定します。

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

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

図13-6に示すように、ライブラリ・パスを設定します。

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

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

%XDK_HOME%\lib内の静的ライブラリのパスを設定した後、Visual C++のコンパイル環境でライブラリ名も設定する必要があります。

メニュー・バーで「Project」メニュー→「Settings」を選択します。ウィンドウがポップアップ表示されます。図13-7に示すように、「Object/Library Modules」フィールドで「Link」タブを選択し、XDK Cコンポーネントのライブラリの名前を入力します。

図13-7 Visual C++プロジェクトでの静的ライブラリの設定

図13-7の説明が続きます
「図13-7 Visual C++プロジェクトでの静的ライブラリの設定」の説明

デモ・プログラムをコンパイルして、実行します(オプション)。これでC XDKコンポーネントを使用できます。

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

このパーサーでは、300を超えるIANAキャラクタ・セットがサポートされています。サポートされているキャラクタ・セットには、次のものがあります。

UTF-8、UTF-16、UTF16-BE、UTF16-LE、US-ASCII、ISO-10646-UCS-2、ISO-8859-{1-9、13-15}、EUC-JP、SHIFT_JIS、BIG5、GB2312、GB_2312-80、HZ-GB-2312、KOI8-R、KSC5601、EUC-KR、ISO-2022-CN、ISO-2022-JP、ISO-2022-KR、WINDOWS-{1250-1258}、EBCDIC-CP-{US、CA、NL、WT、DK、NO、FI、SE、IT、ES、GB、FR、HE、BE、CH、ROECE、YU、IS、AR1}、IBM{037、273、277、278、280、284、285、297、420、424、437、500、775、850、852、855、857、00858、860、861、863、865、866、869、870、871、1026、01140、01141、01142、01143、01144、01145、01146、01147、01148}

前述のキャラクタ・セットの別名も使用できます。また、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録A「キャラクタ・セット」に指定されたキャラクタ・セットは、IW7IS960を除いて使用できます。

ただし、他のXMLパーサーとの相互運用性のために、IANAキャラクタ・セット名を使用することをお薦めします。また、XMLパーサーでサポートが必須とされているのはUTF-8とUTF-16のみであるため、これらのキャラクタ・セットを使用することをお薦めします。

これらのエンコーディングを使用できるようにするには、ORACLE_HOME環境変数を設定して、Oracleインストールの場所を指すようにする必要があります。この設定により、サポートされるすべてのエンコーディングのデータを含むグローバリゼーション・サポート・データ・ファイルを使用できます。UNIXシステムの場合、これらのファイルは通常$ORACLE_HOME/nls/dataにあります。Windowsの場合、通常%ORACLE_HOME%\nls\dataにあります。OTNからダウンロードしたCおよびC++ XDKリリースには、nls/dataサブディレクトリが含まれます。Oracleをインストールしていない場合、環境変数ORA_NLS10をnls/dataサブディレクトリへの絶対パスに設定する必要があります。

デフォルトの入力エンコーディング(インコーディング)はUTF-8です。入力文書のエンコーディングが(HTTPキャラクタ・セット、バイト・オーダー・マーク、XMLDeclなどによって)自明ではない場合は、デフォルトの入力エンコーディングが想定されます。シングルバイト・キャラクタ・セット(US-ASCII、ISO 8859キャラクタ・セットのいずれか)のみを使用している場合、明示的にデフォルトのエンコーディングを設定することをお薦めします。シングルバイトが圧倒的に速いです。フラグXML_FLAG_FORCE_INCODINGは、入力文書には常にデフォルトの入力エンコーディングを適用する必要があることを指定します。この場合、BOMまたはXMLDeclは無視されます。ただし、プロトコル宣言(HTTPキャラクタ・セットなど)は常にサポートされます。

DOMおよびSAXのデータ・エンコーディング(アウトコーディング)は、慎重に選択する必要があります。シングルバイト・エンコーディングは最速ですが、表示できるキャラクタ・セットは非常に限られています。次に高速なのはUnicode(UTF-16)で、最も遅いのは、UTF-8などのマルチバイト・エンコーディングです。入力データのアウトコーディングへの変換によりデータが失われると、エラーが発生します。そのため、最大限の効用を得るには、Unicodeベースのアウトコーディングを使用してください。Unicodeはすべての文字を表現できます。アウトコーディングを指定しないと、デフォルトでは、解析された最初の文書のインコーディングに設定されます。