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

戻る
戻る
 
次へ
次へ
 

26 XSLT Processor for C++の使用

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


注意:

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

XSLT for C++の入手方法

XSLT for C++はOracle Databaseに付属しています。サンプル・ファイルはxdk/demo/cpp/newにあります。

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


関連項目:

「XVMプロセッサ」

XSL名前空間

これは、XSLTコンパイラおよびトランスフォーマの名前空間です。

XSLインタフェース

XslExceptionインタフェース: XSLTに関連するすべての例外のルート・インタフェースです。

Transformerインタフェース: 基本的なXSLTプロセッサです。このインタフェースを使用して全XSLTプロセッサを起動できます。

CompTransformerインタフェース: 拡張したXSLTプロセッサです。このインタフェースは、中間バイナリ・バイトコード(現行のXVMベースのプロセッサ専用)を作成するプロセッサとのみ併用できます。

Compilerインタフェース: XSLTコンパイラです。これは、XSLTをバイナリ・バイトコードにコンパイルするコンパイラに対して使用されます。


関連項目:

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

XSLT for C++のDOMインタフェースの使用方法

  1. XMLParser.xmlparse()には、次の2つの入力があります。

    • XML文書

    • XML文書に適用するスタイルシート

  2. ツール・ファクトリをコールして特定のXSLTトランスフォーマまたはコンパイラを作成すると、XSLTプロセッサが起動します。

  3. setXSL()メンバー関数をコールすると、スタイルシートが任意のトランスフォーマに指定されます。

  4. XMLインスタンス・ドキュメントがメンバー関数を変換するパラメータとして指定されます。

  5. 結果のドキュメント(XML、HTML、VMLなど)は、通常、アプリケーションに送られ、さらに処理されます。このドキュメントは、DOMツリーまたは一連のSAXイベントとして送られます。ユーザーがSAXイベント・ハンドラを指定すると、SAXイベントが生成されます。

  6. デストラクタを起動すると、アプリケーションではXSLTプロセッサが終了します。

XSLT for C++の起動

XSLT for C++は、次の2つの方法で起動できます。

コマンドラインの使用方法

XSLT for C++は、bin/xmlをコールすることによって、実行可能ファイルとしてコールできます。

提供されるAPIを使用するためのC++コードの記述

XSLT for C++は、提供されるAPIを使用するようにコードを記述することで起動することもできます。このコードは、publicサブディレクトリにあるヘッダーを使用してコンパイルし、libサブディレクトリにあるライブラリにリンクする必要があります。プログラムを作成する方法の詳細は、xdk/demo/cpp/newにある、MakeFileまたはmake.batを参照してください。

ソフトウェアに含まれるサンプル・ファイルの使用

$$ORACLE_HOME/xdk/demo/cpp/parser/ディレクトリには、XSLT for C++の使用方法を示すXMLアプリケーションがあります。

表26-1に、サンプル・ファイルを示します。

表26-1 XSLT for C++のサンプル・ファイル

サンプル・ファイル名 説明
XSLSampleMain.cpp
XSLSampleGen.cpp
XSLSampleGen.hpp

サンプルのXSLT使用プログラムのソース。XSLSampleは、2つの引数、XSLTスタイルシートおよびXMLファイルを取ります。このプログラムのstdoutをファイルにリダイレクトすると、環境によっては出力の一部が欠落する場合があります。

XVMSampleMain.cpp
XVMSampleGen.cpp
XVMSampleGen.hpp

サンプルのXVM使用プログラムのソース。