208 DBMS_XSLPROCESSOR

DBMS_XSLPROCESSORパッケージは、XML文書の内容と構造を管理するインタフェースを提供します。

この章のトピックは、次のとおりです:

208.1 DBMS_XSLPROCESSORの概要

DBMS_XSLPROCESSORパッケージは、XML文書の内容と構造を管理するインタフェースを提供します。

標準

XSL ProcessorのPL/SQL実装は、W3C XSLT草案(改訂WD-xslt-19990813)に準拠しています。また、XSLTスタイルシートの読込み方法と影響を与える変換に関して、XSL Processorに要求される動作が含まれています。

概要

eXtensible Stylesheet Language Transformation(XSLT)は、ソース・ツリーを結果ツリーに変換するルールを記述します。XSLTで表現する変換は、スタイルシートと呼ばれます。指定した変換は、パターンをスタイルシートで定義したテンプレートに関連付けることで実行されます。結果ツリーの一部を作成するために、テンプレートはインスタンス化されます。

実装

このPL/SQL XSL Processorのデフォルト動作は、次のとおりです。

  • DOMプログラム・インタフェースからアクセス可能な結果ツリーが作成されます。

  • エラー・ログが指定されていない場合、エラーは記録されません。ただし、解析に失敗すると、アプリケーション・エラーが発生します。

208.2 DBMS_XSLPROCESSORの推奨されないサブプログラム

Oracle Database 12cリリース12.2では、次のサブプログラムの使用はDBMS_XSLPROCESSORパッケージで推奨されていません。

ノート:

新しいアプリケーションでは、推奨されないプロシージャは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。

このリリース以降、これらのサブプログラムはDBMS_LOBパッケージで提供されます。

208.3 DBMS_XSLPROCESSORのセキュリティ・モデル

DBMS_XSLPROCESSORパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

208.4 DBMS_XSLPROCESSORサブプログラムの要約

この表は、DBMS_XSLPROCESSORサブプログラムを示し、簡単に説明しています。

表208-1 DBMS_XSLPROCESSORパッケージのサブプログラム

メソッド 説明

CLOB2FILEプロシージャ

CLOBの内容をファイルに書き込みます。

Oracle Database 12cリリース12.2から、このプロシージャは非推奨になっています。

FREEPROCESSORプロシージャ

プロセッサ・オブジェクトを解放します。

FREESTYLESHEETプロシージャ

スタイルシート・オブジェクトを解放します。

NEWPROCESSORファンクション

新規のプロセッサ・インスタンスを戻します。

NEWSTYLESHEETファンクション

入力と参照URLから新規のスタイルシートを作成します。

PROCESSXSLファンクションおよびプロシージャ

入力XML文書を変換します。

READ2CLOBファンクション

ファイルの内容をCLOBに読み込みます。

Oracle Database 12cリリース12.2から、このプロシージャは非推奨になっています。

REMOVEPARAMプロシージャ

トップレベルのスタイルシート・パラメータを削除します。

RESETPARAMSプロシージャ

トップレベルのスタイルシート・パラメータをリセットします。

SELECTNODESファンクション

パターンと一致するDOMツリーからノードを選択します。

SELECTSINGLENODEファンクション

パターンと一致するツリーから最初のノードを選択します。

SETERRORLOGプロシージャ

指定したファイルに送信するエラーを設定します。

SETPARAMプロシージャ

スタイルシートにトップレベルのパラメータを設定します。

SHOWWARNINGSプロシージャ

警告をオンまたはオフにします。

TRANSFORMNODEファンクション

スタイルシートを使用してDOMツリー内のノードを変換します。

VALUEOFファンクションおよびプロシージャ

パターンと一致する最初のノードの値を取得します。

208.4.1 CLOB2FILEプロシージャ

このプロシージャは、CLOBの内容をファイルに書き込みます。Oracle Database 12cリリース12.2以降、このプロシージャはDBMS_LOBパッケージに移動されました。

構文

DBMS_XSLPROCESSOR.CLOB2FILE(
  cl          IN  CLOB;
  flocation   IN  VARCHAR2,
  fname       IN  VARCHAR2,
  csid        IN  NUMBER:=0);

パラメータ

表208-2 CLOB2FILEプロシージャのパラメータ

パラメータ 説明

CLOB

ファイル・ディレクトリ

flocation

ファイル・ディレクトリ

fname

ファイル名

csid

ファイルの文字セットID。

  • Oracleの有効なIDを指定します。そうでない場合、エラーが戻されます。

  • 0(ゼロ)の場合、出力ファイルの内容はデータベースの文字セットの内容になります。

208.4.2 FREEPROCESSORプロシージャ

このプロシージャは、Processorオブジェクトを解放します。

構文

DBMS_XSLPROCESSOR.FREEPROCESSOR(
  p  IN  Processor);

パラメータ

表208-3 FREEPROCESSORプロシージャのパラメータ

パラメータ 説明

p

プロセッサ

208.4.3 FREESTYLESHEETプロシージャ

このプロシージャは、Stylesheet オブジェクトを解放します。

構文

DBMS_XSLPROCESSOR.FREESTYLESHEET(
  ss  IN  Stylesheet);

パラメータ

表208-4 FREESTYLESHEETプロシージャのパラメータ

パラメータ 説明

ss

スタイルシート

208.4.4 NEWPROCESSORファンクション

このファンクションは、新規のプロセッサ・インスタンスを戻します。

このファンクションは、他のプロセッサ・メソッドを使用する必要がある場合、プロセッサのデフォルト動作の変更前にコールする必要があります。

構文

DBMS_XSLPROCESSOR.NEWPROCESSOR
 RETURN Processor;

208.4.5 NEWSTYLESHEETファンクション

このファンクションは、新規のスタイルシート・インスタンスを作成して戻します。

指定できるオプションは、次の表のとおりです。

構文

指定のDOMDOCUMENTと参照URLを使用して、新規のスタイルシート・インスタンスを作成して戻します。

DBMS_XSLPROCESSOR.NEWSTYLESHEET(
   xmldoc  IN   DOMDOCUMENT,
   ref     IN   VARCHAR2) 
 RETURN Stylesheet;

指定の入力と参照URLを使用して、新規のスタイルシート・インスタンスを作成して戻します。

DBMS_XSLPROCESSOR.NEWSTYLESHEET(
   inp    IN   VARCHAR2,
   ref    IN   VARCHAR2) 
 RETURN Stylesheet;

パラメータ

表208-5 NEWSTYLESHEETファンクションのパラメータ

パラメータ 説明

xmldoc

構成に使用するDOMDocument

inp

構成に使用する入力URL。

ref

参照URL。

208.4.6 PROCESSXSLファンクションおよびプロシージャ

このファンクションは、入力されたXMLDocumentを変換します。

プロセッサのデフォルト動作に対する変更は、このプロシージャのコール前に有効にしておく必要があります。処理に失敗すると、アプリケーション・エラーが発生します。

構文

指定のDOMDocumentとスタイルシートを使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p      IN   Processor,
   ss     IN   Stylesheet,
   xmldoc IN   DOMDOCUMENT), 
 RETURN DOMDOCUMENTFRAGMENT;

指定のドキュメントをURLおよびスタイルシートとして使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p     IN   Processor,
   ss    IN   Stylesheet,
   url   IN   VARCHAR2, 
 RETURN DOMDOCUMENTFRAGMENT;

指定のドキュメントをCLOBおよびStylesheetとして使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p     IN   Processor,
   ss    IN  Stylesheet,
   clb   IN  CLOB)
 RETURN DOMDOCUMENTFRAGMENT;

指定のDOMDOCUMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、指定のファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.DBMS_XSLPROCESSOR.(
   p           IN    Processor,
   ss          IN    Stylesheet,
   xmldoc      IN    DOMDOCUMENT,
   dir         IN    VARCHAR2,
   fileName    IN    VARCHAR2);

指定のURLとスタイルシートを使用して、入力されたXMLDocumentを変換し、指定のディレクトリ内の指定したファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p          IN    Processor,
   ss         IN    Stylesheet,
   url        IN    VARCHAR2,
   dir        IN    VARCHAR2,
   fileName   IN    VARCHAR2);

指定のDOMDOCUMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、CLOBに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p          IN      Processor,
   ss         IN      Stylesheet,
   xmldoc     IN      DOMDOCUMENT,
   cl         IN OUT  CLOB);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentを変換し、結果のドキュメント・フラグメントを戻します。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p         IN    Processor,
   ss        IN    Stylesheet,
   xmldf     IN    DOMDOCUMENTFRAGMENT)
 RETURN DOMDOCUMENTFRAGMENT;

指定のDOMDocumentFragmentとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、指定のディレクトリ内の指定したファイルに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p         IN    Processor,
   ss        IN    Stylesheet,
   xmldf     IN    DOMDOCUMENTFRAGMENT,
   dir       IN    VARCHAR2,
   filename  IN    VARCHAR2);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、バッファに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p          IN       Processor,
   ss         IN       Stylesheet,
   xmldf      IN       DOMDOCUMENTFRAGMENT,
   buf        IN OUT   VARCHAR2);

指定のDOMDOCUMENTFRAGMENTとスタイルシートを使用して、入力されたXMLDocumentFragmentを変換し、CLOBに出力を書き込みます。

DBMS_XSLPROCESSOR.PROCESSXSL(
   p          IN      Processor,
   ss         IN      Stylesheet,
   xmldf      IN      DOMDOCUMENTFRAGMENT,
   cl         IN OUT  CLOB);

パラメータ

表208-6 PROCESSXSLファンクション/プロシージャのパラメータ

パラメータ 説明

p

プロセッサ・インスタンス。

ss

スタイルシート・インスタンス。

xmldoc

変換するXML文書。

url

変換する情報のURL。

clb

変換する情報が含まれるCLOB

dir

処理対象の出力ファイルを保存するディレクトリ。

filename

処理対象の出力ファイル。

cl

処理対象の出力を保存するCLOB

xmldf

変換するXMLDocumentFragment

208.4.7 READ2CLOBファンクション

このファンクションは、ファイルの内容をCLOBに読み込みます。

ノート:

Oracle Database 12cリリース12.2以降、このプロシージャはDBMS_LOBパッケージに移動されました。

構文

DBMS_XSLPROCESSOR.READ2CLOB(
   flocation     IN   VARCHAR2,
   fname         IN   VARCHAR2,
   csid          IN   NUMBER:=0)
 RETURN CLOB;

パラメータ

表208-7 READ2CLOBファンクションのパラメータ

パラメータ 説明

flocation

ファイル・ディレクトリ

fname

ファイル名

csid

ファイルの文字セットID。

  • Oracleの有効なIDを指定します。そうでない場合、エラーが戻されます。

  • 0(ゼロ)の場合、入力ファイルはデータベースの文字セット内にあるものとみなされます。

208.4.8 REMOVEPARAMプロシージャ

このプロシージャは、トップレベルのスタイルシート・パラメータを削除します。

構文

DBMS_XSLPROCESSOR.REMOVEPARAM(
   ss     IN  Stylesheet,
   name   IN  VARCHAR2);

パラメータ

表208-8 REMOVEPARAMプロシージャのパラメータ

パラメータ 説明

ss

スタイルシート・インスタンス。

name

パラメータ名

208.4.9 RESETPARAMSプロシージャ

このプロシージャは、トップレベルのスタイルシート・パラメータをリセットします。

構文

DBMS_XSLPROCESSOR.RESETPARAMS(
   ss  IN   Stylesheet);

パラメータ

表208-9 RESETPARAMSプロシージャのパラメータ

パラメータ 説明

ss

スタイルシート・インスタンス。

208.4.10 SELECTNODESファンクション

このファンクションは、入力されたパス式と一致するノードをDOMツリーから選択し、選択の結果を戻します。

構文

DBMS_XSLPROCESSOR.SELECTNODES( 
   n           IN   DBMS_XMLDOM.DOMNODE,
   pattern     IN   VARCHAR2,
   namespace   IN VARCHAR2 := NULL)
 RETURN DBMS_XMLDOM.DOMNODELIST;

パラメータ

表208-10 SELECTNODESファンクションのパラメータ

パラメータ 説明

n

ツリーのルートDOMNode

pattern

使用するパターン。

namespace

宣言されたネームスペース。

208.4.11 SELECTSINGLENODEファンクション

このファンクションは、入力されたパス式と一致するツリーから最初のノードを選択し、そのノードを戻します。

構文

DBMS_XSLPROCESSOR.SELECTSINGLENODE(
   n           IN   DBMS_XMLDOM.DOMNODE,
   pattern     IN   VARCHAR2,
   namespace   IN VARCHAR2 := NULL)
 RETURN DBMS_XMLDOM.DOMNODE;

パラメータ

表208-11 SELECTSINGLENODEファンクションのパラメータ

パラメータ 説明

n

ツリーのルートDOMNode

pattern

使用するパターン。

namespace

宣言されたネームスペース。

208.4.12 SETERRORLOGプロシージャ

この推奨されないプロシージャは、指定したファイルに送信するエラーを設定します。

ノート:

このサブプログラムは非推奨となっています。ここに含まれているのは下位互換性を保つという理由のみからです。

構文

DBMS_XSLPROCESSOR.SETERRORLOG(
   p         IN   Processor,
   fileName  IN   VARCHAR2);

パラメータ

表208-12 SETERRORLOGプロシージャのパラメータ

パラメータ 説明

p

プロセッサ・インスタンス。

fileName

エラー・ログとして使用するファイルの完全パス。

208.4.13 SETPARAMプロシージャ

このプロシージャは、スタイルシートにトップレベルのパラメータを設定します。

パラメータ値は、有効なXPath式であることが必要です。必ずリテラル文字列値を引用します。

構文

DBMS_XSLPROCESSOR.SETPARAM(
   ss      IN   Stylesheet,
   name    IN   VARCHAR2,
   value   IN   VARCHAR2);

パラメータ

表208-13 SETPARAMプロシージャのパラメータ

パラメータ 説明

ss

スタイルシート・インスタンス。

name

パラメータ名

value

パラメータの値

208.4.14 SHOWWARNINGSプロシージャ

このプロシージャは、警告をオン(TRUE)またはオフ(FALSE)にします。

構文

DBMS_XSLPROCESSOR.SHOWWARNINGS(
   p     IN   Processor,
   yes   IN   BOOLEAN);

パラメータ

表208-14 SHOWWARNINGSプロシージャのパラメータ

パラメータ 説明

p

プロセッサ・インスタンス。

yes

設定するモード。警告を表示する場合はTRUE、表示しない場合はFALSEを指定します。

208.4.15 TRANSFORMNODEファンクション

このファンクションは、指定のスタイルシートを使用してDOMツリー内のノードを変換し、変換結果をDOMDocumentFragmentとして戻します。

構文

DBMS_XSLPROCESSOR.TRANSFORMNODE(
   n    IN  DOMNODE,
   ss   IN  Stylesheet)
 RETURN DOMDocumentFragment;

パラメータ

表208-15 TRANSFORMNODEファンクションのパラメータ

パラメータ 説明

n

変換するDOMNode

ss

使用するスタイルシート。

208.4.16 VALUEOFファンクションおよびプロシージャ

このサブプログラムは、指定のパターンと一致するツリーから最初のノードの値を取得します。ファンクションまたはプロシージャのいずれかを使用できます。

構文

DBMS_XSLPROCESSOR.VALUEOF(
  n           IN    DBMS_XMLDOM.DOMNODE,
  pattern     IN    VARCHAR2,
  namespace   IN    VARCHAR2 := NULL)
 RETURN VARCHAR2;
DBMS_XSLPROCESSOR.VALUEOF(
  n           IN    DBMS_XMLDOM.DOMNODE,
  pattern     IN    VARCHAR2,
  val         OUT   VARCHAR2,
  namespace   IN    VARCHAR2 := NULL);

パラメータ

表208-16 VALUEOFファンクション/プロシージャのパラメータ

パラメータ 説明

n

値を取得するノード。

pattern

使用するパターン。

val

取得された値。

namespace

使用する名前空間。