33 XSQLページ・リファレンス

XSQLページ・フレームワークに関する参照情報を示します。

「XSQL構成ファイルのパラメータ」では、XSQL構成ファイルの設定について説明します。表33-1に、XSQLページの有効な組込みアクションを示します。

表33-1 組込みXSQLアクション・ハンドラ要素およびアクション・ハンドラ・クラス

XSQLアクション要素 oracle.xml.xsql.actionsのハンドラ・クラス 用途
<xsql:action>

XSQLExtensionActionHandler

Javaに実装されたユーザー定義のアクション・ハンドラを起動し、カスタム・ロジックを実行して、カスタムExtensible Markup Language (XML)データをXSQLページに挿入します。

<xsql:delete-request>

XSQLDeleteRequestHandler

リクエストで指定されたポスト済XML文書に基づいて、データベース内の既存の行を削除します。

<xsql:dml>

XSQLDMLHandler

Structured Query Language (SQL)データ操作言語(DML)文またはProcedural Language/Structured Query Language (PL/SQL)無名ブロックを実行します。

<xsql:if-param>

XSQLIfParamHandler

XMLコンテンツまたは他のXSQLアクションを条件付きで挿入します。

<xsql:include-owa>

XSQLIncludeOWAHandler

データベース内でOracle Web Agent(OWA)パッケージを使用してXMLを生成するストアド・プロシージャの結果を挿入します。

<xsql:include-param>

XSQLGetParameterHandler

パラメータおよびその値を要素としてXSQLページに挿入します。

<xsql:include-posted-include-posted>

XSQLIncludePostedXMLHandler

リクエストでポストされたXML文書をXSQLページに挿入します。

<xsql:include-request-params>

XSQLIncludeRequestHandler

すべてのリクエスト・パラメータをXML要素としてXSQLページに挿入します。

<xsql:include-xml>

XSQLIncludeXMLHandler

相対URLまたは絶対URLを使用して、任意のXMLリソースをページの任意の場所に挿入します。

<xsql:include-xsql>

XSQLIncludeXSQLHandler

XSQLページの結果を別のXSQLページの任意の場所に挿入します。

<xsql:insert-param>

XSQLInsertParameterHandler

単一のパラメータの値に含まれるXML文書を挿入します。

<xsql:insert-request>

XSQLInsertRequestHandler

リクエストでポストされたXML文書またはHTMLフォームを表またはビューに挿入します。

<xsql:query>

XSQLQueryHandler

任意のSQL文を実行し、その結果を正規のXML形式に挿入します。

<xsql:ref-cursor-function>

XSQLRefCursorFunctionHandler

PL/SQLストアド・ファンクションが戻すカーソルの結果セットの正規のXML表示を挿入します。

<xsql:set-cookie>

XSQLSetCookieHandler

HTTP Cookieを設定します。

<xsql:set-page-param>

XSQLSetPageParamHandler

HTTPセッション・レベルのパラメータを設定します。ページの後続のSQL文内で参照できるページ・レベル(ローカル)のパラメータを設定します。

<xsql:set-session-param>

XSQLSetSessionParamHandler

HTTPセッション・レベルのパラメータを設定します。

<xsql:set-stylesheet-param>

XSQLStylesheetParameterHandler

最上位レベルのExtensible Stylesheet Language Transformation (XSLT)パラメータの値を設定します。

<xsql:update-request>

XSQLUpdateRequestHandler

リクエストで指定されたポスト済XML文書に基づいて、データベース内の既存の行を更新します。

33.1 XSQL構成ファイルのパラメータ

XSQL構成ファイルを使用して、XSQLページ環境をチューニングできます。使用可能な構成設定について説明します。

表33-2 XSQL構成ファイルの設定

構成設定名 説明
XSQLConfig/servlet/output-buffer-size

バッファ付き出力ストリーム・サイズ(バイト単位)を設定します。サーブレット・エンジンがすでにI/Oをサーブレット出力ストリームにバッファリング済である場合は、0(デフォルト)に設定してさらなるバッファリングを回避できます。有効値は負ではない整数です。

XSQLConfig/servlet/suppress-mime-charset/media-type

XSQLサーブレットは、リクエストへ戻されるリソースのMultipurpose Internet Mail Extensions (MIME)タイプを示すようHTTP ContentTypeヘッダーを設定します。デフォルトでは、サーブレットはMIMEタイプにオプションのキャラクタ・セット・データを挿入します。特定のMIMEタイプについて、必要なMIMEタイプをコンテンツとして指定した<media-type>要素を挿入すると、キャラクタ・セット・データの挿入を抑制できます。任意の数の<media-type>要素を指定できます。有効値はすべての文字列です。

XSQLConfig/processor/character-set-conversion/
default-charset 

注意: 設定名は単一行です。スペースの制約により、2行に表示されています。

デフォルトでは、HTTPパラメータの値に基づいてキャラクタ・セット変換が行われ、ほぼすべてのサーブレット・エンジンが使用するデフォルトのキャラクタ・セットを補完します。変換に使用されるデフォルトのベース・キャラクタ・セットは、Internet Assigned Numbers Authority (IANA)のISO-8859-1セットに対応するJava8859_1です。サーブレット・エンジンが異なるキャラクタ・セットをベースとして使用する場合は、この構成設定でその値を指定できます。

キャラクタ・セット変換を抑制するには、<default-charset>要素のコンテンツとして、キャラクタ・セット名ではなく空の要素である<none/>を指定します。この方法は、サーブレットのデフォルト・キャラクタ・セットを使用して適切に表示できるパラメータ値を使用する場合に有効です。キャラクタ・セット変換の実行に関連するオーバーヘッドが削減されます。

有効値は、すべてのJavaキャラクタ・セット名または<none/>です。

XSQLConfig/processor/reload-connections-on-error

XSQL Page Processorを起動すると、接続定義が初期化されます。yesに設定した場合(デフォルト)、キャッシュされた接続のリストに含まれていない接続名のリクエストが試行されると、XSQL Page ProcessorはXSQLConfig.xmlファイルを再度読み取り、接続定義を再ロードします。yesを設定すると、サーブレットの実行中に新しい<connection>定義をファイルに追加する場合に有効です。インメモリーのキャッシュで接続名が見つからなかった場合の接続定義ファイルの再ロードを回避するには、noに設定します。有効値は、yesおよびnoです。

XSQLConfig/processor/default-fetch-size

SQL問合せを使用して情報を取得するための行のフェッチ・サイズのデフォルト値を設定します。この設定は、Oracle JDBC Driverを使用している場合にのみ有効です。それ以外の場合は無視されます。この方法により、異なる層で実行中のサーブレット・エンジンからデータベースへのネットワーク・ラウンドトリップが削減されます。

デフォルトは50です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/page-cache-size

XSQLページ・テンプレート用のキャッシュ・サイズを設定します。この設定は、キャッシュされるXSQLページの最大数を決定します。この最大数を超えると、最も使用頻度の少ないページがキャッシュから削除されます。デフォルトは25です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/stylesheet-cache-size

XSLTスタイルシート用のキャッシュ・サイズを設定します。この設定は、キャッシュされるXSQLページの最大数を決定します。この最大数を超えると、最も使用頻度の少ないページがキャッシュから削除されます。デフォルトは25です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/stylesheet-pool/initial

キャッシュされた各スタイルシートは、スループットを改善するためにキャッシュされたスタイルシート・インスタンスのプールです。この構成設定は、各スタイルシート・プールに対するスタイルシートの初期割当て数を設定します。

デフォルトは1です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/stylesheet-pool/increment

サーバー上でのロードが増加したためスタイルシート・プールを拡大する必要がある場合に割り当てるスタイルシートの数を設定します。

デフォルトは1です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/stylesheet-pool/timeout-seconds

プールが縮小して初期サイズに戻ろうとするときに、プール内のスタイルシート・インスタンスが削除され、リソースが解放される前の非活動時間(秒)を設定します。

デフォルトは60です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/connection-pool/initial

各接続プールに対するJava Database Connectivity (JDBC)接続の初期割当て数を制御します。XSQL Page ProcessorのデフォルトのConnection Managerは、接続プーリングを実装して、スループットを改善します。

デフォルトは2です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/connection-pool/increment

サーバー上でのロードが増加したため接続プールを拡大する必要がある場合に割り当てる接続の数を設定します。

デフォルトは1です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/connection-pool/timeout-seconds

プールが縮小して初期サイズに戻ろうとするときに、プール内のJDBC接続が削除され、リソースが解放される前の非活動時間(秒)を設定します。

デフォルトは60です。有効値は0(ゼロ)以外の正の整数です。

XSQLConfig/processor/connection-pool/dump-allowed

dump-pool=yパラメータをページ・リクエストで渡すことによって接続プール・アクティビティの診断レポートをリクエストできるかどうかを決定します。

デフォルトはnoです。有効値は、yesまたはnoです。

XSQLConfig/processor/connection-manager/factory

XSQL Connection Managerファクトリ実装の完全修飾Javaクラス名を指定します。指定しない場合、デフォルトはXSQLConnectionManagerFactoryImplです。

有効値は、XSQLConnectionManagerFactoryインタフェースを実装するすべてのクラス名です。

XSQLConfig/processor/owa/fetch-style

<xsql:include-owa>アクションが使用するOWAページ・バッファのフェッチ・スタイルを設定します。有効値は、CLOB(デフォルト)またはTABLEです。

CLOBに設定すると、プロセッサは一時CLOBを使用してOWAページ・バッファを取得します。TABLEに設定すると、プロセッサは、Oracle Databaseのユーザー定義型XSQL_OWA_ARRAYを必要とする、より効率的な方法を使用します。次のデータ定義言語(DDL)文を使用してこのタイプを作成します。

CREATE TYPE xsql_owa_array AS TABLE OF VARCHAR2(32767)

XSQLConfig/processor/timing/page

XSQL Page Processorがxsql-timing属性を、ページの処理に必要な経過時間(ミリ秒)を報告する値を持つページのドキュメント要素に追加するかどうかを決定します。

有効値は、yesまたはno(デフォルト)です。

XSQLConfig/processor/timing/action

XSQL Page Processorがページ内の、アクションの処理に必要な経過時間(秒)を報告するコンテンツを持つアクション・ハンドラ要素のすぐ前にコメントを追加するかどうかを決定します。

有効値は、yesまたはno(デフォルト)です。

XSQLConfig/processor/logger/factory

カスタムXSQLログ出力ファクトリ実装の完全修飾Javaクラス名を指定します。値を設定しない場合は、ログは出力されません。

有効値は、XSQLXSQLLoggerFactoryインタフェースを実装するすべてのクラス名です。

XSQLConfig/processor/error-handler/class

カスタムXSQLエラー・ハンドラの完全修飾Javaクラス名を指定します。指定したハンドラがデフォルトのエラー・ハンドラ実装になります。値を設定しない場合は、デフォルトのエラー・ハンドラが使用されます。

有効値は、XSQLErrorHandlerインタフェースを実装するすべてのクラス名です。

XSQLConfig/processor/xml-parsing/preserve-whitespace

XSQLページおよびXSLTスタイルシートの解析時に、XSQL Page Processorで空白を保持するかどうかを決定します。

有効な値は、true (デフォルト)またはfalseです。空白を無視するほうが解析が速くなるため、デフォルトをfalseに変更すると空白が無視され、XSQLページおよびXSQLスタイルシートの処理が若干速くなります。

XSQLConfig/processor/security/stylesheet/defaults/
allow-client-style

注意: 設定名は単一行です。スペースの制約により、2行に表示されています。

クライアントによるスタイルシートのオーバーライドを禁止します。有効値は、yesおよびnoです。

開発中は、xml-stylesheetパラメータの値をリクエストで指定し、XSQLスタイルシートをオーバーライドする機能を使用すると便利な場合があります。デバッグ操作のために、xml-stylesheet=noneの組合せを使用してスタイルシートの適用を一時的に無効にできます。

allow-client-style="no"属性を各XSQLページのドキュメント要素に追加して、クライアントが本番アプリケーションでスタイルシートをオーバーライドしないようにできます。この設定を使用すると、allow-client-styleのデフォルト動作を1つの場所でグローバルに変更できます。

この設定で指定されるのはデフォルト動作のみです。特定のXSQLページのドキュメント要素に対してこの属性値を明示的に指定すると、その値がこのグローバル・デフォルト値より優先されます。

XSQLConfig/processor/security/stylesheet/
trusted-hosts/host

注意: 設定名は単一行です。スペースの制約により、2行に表示されています。

XSLTスタイルシートへの絶対URLが構成ファイルに示されているトラステッド・ホストからのものである必要があることを規定します。<trusted-hosts>要素内で任意の数の<host>要素を指定します。デフォルトでは、ローカル・マシン名、localhostおよび127.0.0.1がトラステッド・ホストです。有効値は、任意のホスト名またはIPアドレスです。

XSLTプロセッサは、Java拡張関数をサポートします。通常、XSQLページは相対URLを使用してXSLTスタイルシートを参照します。

XSQLConfig/http/proxyhost

HTTPプロトコルを使用するURLを処理する場合に使用するHTTPプロキシ・サーバーの名前を設定します。

有効な値は、ホスト名またはInternet Protocol (IP)アドレスです。

XSQLConfig/http/proxyport

HTTPプロトコルを使用するURLを処理する場合に使用するHTTPプロキシ・サーバーのポート番号を設定します。

有効値は0(ゼロ)以外の整数です。

XSQLConfig/connectiondefs/connection

XSQL Page Processorが使用する名前付き接続の短縮名およびJDBCの詳細を定義します。

<connectiondefs>には、任意の数の<connection>子要素を指定できます。各接続定義にはname属性を指定する必要があります。また、子要素<username>、<password>、<driver>、<dburl>および<autocommit>を指定できます。

XSQLConfig/connectiondefs/connection/username

現行の接続のユーザー名を定義します。

XSQLConfig/connectiondefs/connection/password

現行の接続のパスワードを定義します。

XSQLConfig/connectiondefs/connection/dburl

現行の接続のJDBC接続URLを定義します。

XSQLConfig/connectiondefs/connection/driver

現行の接続に使用するJDBCドライバの完全修飾Javaクラス名を指定します。値を指定しない場合は、デフォルトでoracle.jdbc.driver.OracleDriverに設定されます。

XSQLConfig/connectiondefs/connection/autocommit

現行の接続の自動コミット・フラグを明示的に設定します。値を指定しない場合、接続はJDBCドライバの自動コミットのデフォルト設定を使用します。

XSQLConfig/serializerdefs/serializer

名前付きカスタム・シリアライザの実装を定義します。<serializerdefs>には、任意の数の<serializer>子要素を指定できます。各シリアライザには、<name>子要素と<class>子要素の両方を指定する必要があります。

XSQLConfig/serializerdefs/serializer/name

現行のカスタム・シリアライザ定義の名前を定義します。

XSQLConfig/connectiondefs/connection/class

現行のカスタム・シリアライザの完全修飾Javaクラス名を指定します。このクラスは、XSQLDocumentSerializerインタフェースを実装する必要があります。

33.2 <xsql:action>

<xsql:action>要素について説明します。

用途

Javaに実装されたユーザー定義のアクション・ハンドラを起動し、カスタム・ロジックを実行して、カスタムXMLデータをXSQLページに挿入します。このアクションで起動するJavaクラスには、oracle.xml.xsql.XSQLActionHandlerインタフェースを実装する必要があります。

<xsql:action>を使用して、組込みアクション・ハンドラが処理しないタスクを実行する必要があります。カスタム・アクションは、任意のXMLコンテンツをデータ・ページに提供し、任意の処理を実行することができます。

使用上の注意

XSQL Page Processorは、ページ内のアクションを次の方法で処理します。

  1. デフォルトのコンストラクタを使用して、アクション・ハンドラ・クラスのインスタンスを作成します。

  2. メソッドinit(Element actionElt,XSQLPageRequest context)をコールして、アクション・ハンドラ要素オブジェクトおよびXSQL Page Processorコンテキストを含むハンドラ・インスタンスを初期化します。

  3. メソッドhandleAction (Node result)を起動して、ハンドラがアクションを処理できるようにします。

構文

このアクションの構文は、次のとおりです。handlerは、単一の必須属性です。この属性の値は、起動するアクションの完全修飾Javaクラス名です。yourpackageは、Javaパッケージです。YourCustomHandlerは、Javaクラスです。

<xsql:action handler="yourpackage.YourCustomHandler"/>

一部のアクション・ハンドラでは、テキスト・コンテンツまたは要素コンテンツを<xsql:action>要素内で使用する必要がある場合があります。その場合は、次のような構文を使用します。

<xsql:action handler="yourpackage.YourCustomHandler">
  Some_text
</xsql:action>

次の構文を使用することもできます。

<xsql:action handler="yourpackage.YourCustomHandler">
  <some>
    <other/>
    <elements/>
    <here/>
  </some>   
</xsql:action>

属性

必須属性はhandlerのみですが、その他にもハンドラに指定可能な属性があります。たとえば、yourpackage.YourCustomHandlerparam1およびparam2という名前の属性が必要である場合、次の構文を使用します。

<xsql:action handler="yourpackage.YourCustomHandler" param1="xxx" param2="yyy">

次の例に、myactions.StockQuotes Javaクラスを起動するXSQLページを示します。これには、symbolパラメータで渡された記号に対してGoogleから取得した株価情報が挿入されます。このパラメータを指定しない場合、デフォルト・リストが指定されます。

株価情報の取得

<?xml version="1.0"?>
<page xmlns:xsql="urn:oracle-xsql">
  <xsql:action handler="myactions.StockQuotes"
               symbols="{@symbol}"
               symbol="ORCL,SAP,MSFT,IBM"/>
</page>

33.3 <xsql:delete-request>

<xsql:delete-request>要素について説明します。

用途

XML文書またはHTMLフォームからポストされたデータを受け入れ、XML SQL Utility(XSU)を使用して、ターゲット表またはビューから正規の形式のXML文書のコンテンツを削除します。

XSUとXSLTを組み合せると、XML文書を特定の表に対して適切な正規の形式に変換できます。変換後、結果として戻る正規のXMLをXSUで削除できます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *問合せからのXML出力の1行によって指定されます。

構文

このアクションの構文は、次のとおりです。table_nameは表名、keyは一意キーとして使用する1つ以上の列のリストです。

<xsql:delete-request table="table_name" key-columns="key"/>

属性

表33-3に、<xsql:delete-request>アクションに対して使用できるオプションの属性を示します。太字の属性は必須です。

表33-3 <xsql:delete-request>の属性

属性名 説明
table = "string"

XMLデータの削除に使用する表、ビューまたはシノニムの名前。

key-columns = "string string ..."

空白またはカンマで区切られた1つ以上の列名のリスト。プロセッサは、ポストされたXML文書に指定されたこれらの名前の値によって、削除する既存の行を識別します。

transform = "URL"

削除されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

columns = "string"

削除されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

commit = "boolean"

yes(デフォルト)に設定すると、削除が正常に実行された後に、現行の接続に対するCOMMITが起動されます。有効値は、yesおよびnoです。

commit-batch-size = "integer"

0(ゼロ)以外の正数であるintegerを指定すると、integerのバッチ単位のレコードが削除されるたびにCOMMITが発行されます。数値を指定しない場合は、デフォルトのバッチ・サイズは0(ゼロ)で、プロセッサによって途中でコミットされることはありません。

date-format = "string"

削除中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、java.text.SimpleDateFormatクラスの有効値です。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列Errorに設定する必要があります。任意のパラメータ名を有効な値として指定できます。

次の例では、ポストされたXML文書をstyle.xslスタイルシートで変換し、departments表から削除します。departments.department_id列が削除の主キーです。

行の削除

<?xml version="1.0"?>
<xsql:delete-request table="departments"       transform="style.xsl" 
 connection="demo" key-columns="department_id" xmlns:xsql="urn:oracle-xsql"/>

33.4 <xsql:dml>

<xsql:dml>要素について説明します。

用途

DML文またはDDL文、あるいはPL/SQLブロックを実行します。通常は、このタグを使用して、実行またはロールバックする文をまとめて挿入します。

このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

使用上の注意

<xsql:dml>を使用してOUT変数の位置にパラメータ値をバインドしても、パラメータ値を設定できません。バインディングは、INパラメータに対してのみサポートされます。

構文

このアクションの構文は、次のとおりです。DML_DDL_or_PLSQLは有効なDML文、DDL文、またはPL/SQLブロックのプレースホルダです。

<xsql:dml>
  DML_DDL_or_PLSQL
</xsql:dml>

属性

表33-4に、<xsql:dml>アクションに対して使用できるオプションの属性を示します。

表33-4 <xsql:dml>の属性

属性名 説明
commit = "boolean"

yesに設定すると、DML文が正常に実行された後に、現行の接続に対するコミットが起動されます。有効値は、yesおよびno(デフォルト)です。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

error-statement = "boolean"

noに設定すると、生成されたすべての<xsql-error>要素への違反SQL文の挿入が抑制されます。有効値は、yes(デフォルト)およびnoです。

次の例では、webuser cookieに保存されているユーザー名をrequest_log表に挿入します。バインド変数でSQL挿入攻撃から保護します。

表へのユーザー名の挿入

 <xsql:dml connection="demo" bind-params="webuser"
           xmlns:xsql="urn:oracle-xsql">
   BEGIN
     INSERT INTO request_log(page,userid)
       VALUES( 'somepage.xsql', ? );
     COMMIT;
   END;
 </xsql:dml>

33.5 <xsql:if-param>

<xsql:if-param>要素について説明します。

用途

ある条件が真である場合に、ネストされている要素またはアクションを挿入できます。条件が真である場合は、すべてのネストされたXMLコンテンツおよびアクションがページに挿入されます。条件が偽である場合は、ネストされたXMLコンテンツまたはアクションはいずれも挿入されません(したがって、ネストされたアクションは実行されません)。

評価するパラメータ値を指定するには、必要なname属性を指定します。単純なパラメータの名前と配列パラメータの名前を指定できます。

注意:

テスト対象のパラメータが存在しない場合は、偽と評価されます。

構文

このアクションの構文は、次のとおりです。some_nameは、name属性の値です。またtest_conditionは、表33-5に示す条件のうちのいずれかです。

<xsql:if-param name="some_name" test_condition>
   element_or_action
</xsql:if-param>

任意のXMLコンテンツまたはXSQLアクション・ハンドラ要素(別の<xsql:if-param>要素など)を<xsql:if-param>内でネストできます。

属性

1つ以上のパラメータ値(配列の場合は複数)のテスト方法を指定するために、name属性の他に表33-5の属性のいずれかを選択する必要があります。その他のXSQLアクションでは、<xsql:if-param>アクションの属性に、字句置換パラメータ式(たとえば、{@paramName})を含めることができます。

表33-5 <xsql:if-param>の属性

属性名 説明
exists="yes_or_no"

exists="yes"に設定した場合、この条件では、名前付きパラメータが存在するかどうか、そして値が空でないかどうかがテストされます。配列パラメータについては、配列パラメータが存在し、空ではない要素が1つ以上含まれているかどうかがテストされます。

exists="no"に設定した場合、この条件は、パラメータが存在しないとき、または存在するが値が空であるときに真と評価されます。配列値パラメータについては、パラメータが存在しないとき、または配列要素がすべて空であるときに真と評価されます。

equals="stringValue"

この条件では、名前付きパラメータと指定された文字列値が等しいかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、ignore-case="yes"属性も指定してください。

配列値パラメータについては、配列内の任意の要素に指定された値が含まれているかどうかがテストされます。

not-equals="stringValue"

この条件では、名前付きパラメータと指定された文字列値が等しくないかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。配列値パラメータについては、配列内の要素のいずれにも指定された値が含まれていないときに真と評価されます。

in-list = "comma-or-space-separated-list"

この条件では、名前付きパラメータが指定されたリスト内の文字列のいずれかに一致するかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、ignore-case="yes"属性も指定してください。

文字列内にカンマが検出された場合、そのカンマはデリミタとして使用され、in-listパラメータの値が配列にトークン化されます。カンマが検出されなかった場合は、デリミタには空白が使用されます。配列値パラメータについては、配列内の任意の要素がリスト内の要素に一致するかどうかがテストされます。

not-in-list = "comma-or-space-separated-list"

名前付きパラメータが指定されたリスト内の文字列のいずれかに一致しないかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、ignore-case="yes"属性も指定してください。

文字列内にカンマが検出された場合、そのカンマはデリミタとして使用され、not-in-listパラメータの値が配列にトークン化されます。カンマが検出されなかった場合は、デリミタには空白が使用されます。配列値パラメータについては、配列内の要素がいずれもリスト内の任意の要素に一致しないかどうかがテストされます。

2つの異なる条件がそれぞれ真であるかどうかをテストするには、次の例に示すように<xsql:if-param>要素をネストして使用します。

条件のテスト

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<page connection="demo" xmlns:xsql="urn:oracle-xsql">
<!-- 
| Set page parameter 'some_param' to value "some_value" if parameter 'a'
| exists, and if parameter 'b' has a value equal to "X"
+-->
  <xsql:if-param name="a" exists="yes">
    <xsql:if-param name="b" equals="X">
      <xsql:set-page-param name="some_param" value="some_value"/>
    </xsql:if-param>
  </xsql:if-param>
  <!-- ... --> 
</page>

33.6 <xsql:include-owa>

<xsql:include-owa>要素について説明します。

用途

データベース・ストアド・プロシージャによって生成されたXMLコンテンツを挿入します。このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

ストアド・プロシージャは、標準のOWAパッケージ(HTPおよびHTF)を使用して、XMLタグをサーバー側ページ・バッファに出力します。その後、XSQL Page Processorが、動的に生成されたXMLコンテンツをフェッチおよび解析し、データ・ページに挿入します。ストアド・プロシージャは、整形式のXMLページを生成する必要があります。生成しなかった場合は、該当するエラーが表示されます。

使用上の注意

HTPパッケージを使用してXML要素を作成するラッパー・プロシージャを作成できます。XSQLページでは、<xsql:include-owa>を使用してそのラッパー・プロシージャを起動できます。

構文

このアクションの構文は、次のとおりです。PL/SQL_blockは、HTPまたはHTFパッケージを使用するプロシージャを起動するPL/SQLブロックです。

<xsql:include-owa>
   PL/SQL_block
</xsql:include-owa>

属性

表33-6に、このアクションがサポートするオプションの属性を示します。

表33-6 <xsql:include-owa>の属性

属性名 説明
bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

error-statement = "boolean"

noに設定すると、生成されたすべての<xsql-error>要素への違反SQL文の挿入が抑制されます。有効値は、yes(デフォルト)およびnoです。

プロジェクトのステータスを更新する、UpdateStatusという名前のPL/SQLプロシージャを作成するとします。このプロシージャでは、HTPを使用して<UpdateStatus>データグラムを出力します。このデータグラムは、エラーが発生しなかった場合は要素<Success/>を含み、1つ以上のエラーが発生した場合は要素<Success/>を含みます。

次の例に、XSQLページからUpdateStatusを起動する方法を示します。この例では、字句置換ではなく、SQLバインド変数を使用して、SQL挿入攻撃を防ぎます。

ストアド・プロシージャで作成したXMLコンテンツの挿入

<xsql:include-owa connection="demo" 
                  bind-params="project status" 
                  xmlns:xsql="urn:oracle-xsql"> 
  UpdateStatus( ?,? ); 
</xsql:include-owa> 

ユーザーが無効なプロジェクト・ステータス番号をWebベースのフォームに入力するとします。次の例に示すように、このフォームからXSQLページに入力パラメータをポストします。XSQLプロセッサによって次のデータグラムが戻され、このデータグラムはXSLTスタイルシートでHTMLエラー・ページに変換できます。

<UpdateStatus>
  <Error Field="status">Status must be 1, 2, 3, or 4</Error>
</UpdateStatus>

33.7 <xsql:include-param>

<xsql:include-param>要素について説明します。

用途

1つのパラメータの名前と値のXML表示を挿入します。この方法は、関連付けられたXSLTスタイルシートがXPath式を使用してパラメータ値を参照する必要がある場合に有効です。

構文

このアクションの構文は、次のとおりです。paramnameはパラメータの名前です。

<xsql:include-param name="paramname" />

このname属性は必須で、値を挿入する必要があるパラメータの名前を指定します。

属性

name属性は必須で、オプションの属性はありません。

次の例では、XPATHを使用してパラメータの値を取得し、XMLで表示します。

パラメータ値のXML表示の挿入

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<page connection="demo" xmlns:xsql="urn:oracle-xsql" 
                        xmlns:p="http://www.companysite.com/products">
  <xsql:set-page-param name="productid"
                       xpath="/p:Products/productid"/>
  <xsql:include-param name="productid"/>
</page>

データグラムに挿入するXML文書のフラグメントは次のようになります。

<productid>12345</productid>

次の例のように、配列パラメータ名を使用して、値を配列として処理するように設定できます。

<xsql:include-param name="productid[]"/>

すべての配列値は次の例のようなXML文書のフラグメントによって反映されます。

<productid>
  <value>12345<value>
  <value>33455</value>
  <value>88199</value>
</productid>

この配列パラメータ名の使用例のproductidが単一の値のパラメータである場合、フラグメントは次の例のように単一の要素の配列と同様になります。

<productid>
  <value>12345<value>
</productid>

33.8 <xsql:include-posted-include-posted>

<xsql:dml>要素について説明します。

用途

ポストされたXML文書をXSQLページに挿入します。XML文書ではなくHTML形式をポストした場合、挿入されるXMLは、<xsql:include-request-params>アクションによって挿入されるものと類似したものになります。

構文

アクションの構文は次のとおりです。

<xsql:include-posted-xml/>

属性

なし。

次の例に、ポストされたXML文書を挿入するサンプルXSQLページを示します。

ポストされたXMLの挿入

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsql" href="somepage.xsql"?>
<page connection="demo" 
      xmlns:xsql="urn:oracle-xsql">
  <xsql:include-posted-xml/>
</page>

33.9 <xsql:include-request-params>

<xsql:include-request-params>要素について説明します。

用途

リクエスト内のすべてのパラメータのXML表示をデータグラムに挿入します。ページのリクエスト時、ページ内のアクション・ハンドラ要素は、リクエストに使用可能なパラメータを示すXML要素のツリーに置き換えられます。

この方法は、関連付けられたXSLTスタイルシートがXPath式を使用してリクエスト・パラメータ値を参照する必要がある場合に有効です。

使用上の注意

XSQLサーブレットを使用してページを処理する場合、挿入されるXMLの形式は次の例のようになります。

リクエスト・パラメータの挿入

<request>
  <parameters>
    <paramname>value1</paramname>
    <ParamName2>value2</ParamName2>
     ...
  </parameters>
  <session>
    <sessVarName>value1</sessVarName>
     ...
  </session>
  <cookies>
    <cookieName>value1</cookieName>
     ...
  </cookies>
</request>

XSQLコマンドライン・ユーティリティまたはXSQLRequestクラスを使用する場合、XMLの形式は次の例のようになります。

リクエスト・パラメータの挿入

<request>
  <parameters>
    <paramname>value1</paramname>
    <ParamName2>value2</ParamName2>
     ...
  </parameters>
</request>

この方法では、値が<parameters><session>または<cookies>の子要素であるため、リクエスト・パラメータとセッション・パラメータまたはCookieを識別できます。

構文

アクションの構文は次のとおりです。

<xsql:include-request-params/>

属性

なし。

次の例に、すべてのリクエスト・パラメータをデータ・ページに挿入するサンプルXSQLページを示します。

リクエスト・パラメータの挿入

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsql" href="cookie_condition.xsl"?>
<page connection="demo" xmlns:xsql="urn:oracle-xsql">
  <xsql:include-request-params/>
</page>

cookie_condition.xslスタイルシートは、siteuser Cookieが存在するかどうかに基づいて出力形式を選択します。次の例に、スタイルシートの一部分を示します。

スタイルシートの条件のテスト

<xsl:choose>
  <xsl:when test="/page/request/cookies/siteuser">
  ...
  </xsl:when>
  <xsl:otherwise>
  ...
  </xsl:otherwise>
</xsl:choose>

33.10 <xsql:include-xml>

<xsql:include-xml>要素について説明します。

用途

ローカル・リソース、リモート・リソースまたはデータベース・ドリブンのXMLリソースのXMLコンテンツをデータグラムに挿入します。リソースは、URLまたはSQL文で指定できます。サーバーは、静的XMLファイルまたはサーブレットやCommon Gateway Interface (CGI)プログラムなどのプログラム・リソースから動的に作成されたXMLの形式でリソースを提供できます。

構文

このアクションの構文は、次のとおりです。URLは、他のWebサイトからXMLを取得するための相対URLまたはHTTPベースの絶対URLです。

<xsql:include-xml href="URL"/>

または、SQL_statementに1つのCLOB列またはVARCHAR2列の値を含む1つの行を選択するSQL SELECT文を指定する次の構文も使用できます。

<xsql:include-xml>
  SQL_statement
</xsql:include-xml>

href属性とSQL文は、相互に排他的です。どちらか一方が指定されている場合は、他方を指定できません。

属性

表33-7に、このアクションがサポートする属性を示します。太字の属性は必須です。

表33-7 <xsql:include-xml>の属性

属性名 説明
href="URL"

挿入するXMLリソースの絶対URL、相対URLまたはパラメータ化されたURL。リソースには静的ファイルの動的ソースを指定できます。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらの名前の値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

次の例では、データベース問合せにより取得したXML文書を挿入します。このXMLコンテンツは、ユーザー定義型のCLOB値メンバー・フィールドです。挿入するXMLは、XMLTypeではなく、VARCHAR2またはCLOBの列から取得する必要があります。

XML文書の挿入

<?xml version="1.0"?>
<xsql:include-xml bind-params="id" connection="demo"
                   xmlns:xsql="urn:oracle-xsql">
  SELECT x.document.contents doc FROM xmldoc x
  WHERE x.docid = ?                        
</xsql:include-xml>

33.11 <xsql:include-xsql>

<xsql:include-xsql>要素について説明します。

用途

XSQLページのXML出力を別のページに挿入します。オプションで他のXSQLページから変換されたコンテンツを作成するページを作成できます。

使用上の注意

集計されているページに<?xml-stylesheet?>処理命令が含まれている場合は、結果が集計される前にこのスタイルシートが適用されます。そのため、<xsql:include-xsql>を使用して、XSLTスタイルシートを連鎖させることができます。

1つのXSQLページが<xsql:include-xsql>を使用して他のページを集計する場合、ネストしたページはリクエスト・レベルのすべてのパラメータを参照できます。XSQLサーブレットが処理するページでは、セッション・レベルのパラメータおよびCookieを参照できます。集計側のページのプライベート・パラメータは、ネストしたページからは参照できません。

構文

このアクションの構文は、次のとおりです。XSQL_pageは、挿入するXSQLページの相対URLまたは絶対URLです。

<xsql:include-xsql href="XSQL_page"/>

属性

表33-8に、このアクションがサポートする属性を示します。太字の属性は必須です。それ以外の属性はオプションです。

表33-8 <xsql:include-xsql>の属性

属性名 説明
href="string"

挿入するXSQLページの相対URLまたは絶対URL。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列Errorに設定する必要があります。任意のパラメータ名を有効な値として指定できます。

reparse = "boolean"

挿入されたXSQLページの出力を挿入前に再解析するかどうかを指定します。有効値は、no(デフォルト)またはyesです。

この属性は、挿入側のページが要素として処理する必要があるXML文書のフラグメントのテキストを、挿入されたXSQLページが選択している場合に有効です。

次の例では、ディスカッション・フォーラムのカテゴリを示すXSQLページを表示します。

Categories.xsql

<?xml version="1.0"?>
<xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql">
  SELECT name
  FROM categories
  ORDER BY name
</xsql:query>

次の例は、前のCategories.xsqlの例で表示されたページを、現在のフォーラムの最新トピック10件をリストするページに挿入する方法を示しています。

TopTenTopics.xsql

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<top-ten-topics connection="demo" xmlns:xsql="urn:oracle-xsql">
  <topics>
    <xsql:query max-rows="10">
      SELECT subject 
      FROM topics 
      ORDER BY last_modified DESC
    </xsql:query>
  </topics>
  <categories>
    <xsql:include-xsql href="Categories.xsql"/>
  </categories>
</top-ten-topics>

また、<xsql:include-xsql>を使用して、挿入されたページに対してXSLTスタイルシートを適用することもできます。次のXSLTスタイルシートを作成するとします。

  • cats-as-html.xsl(HTMLでのトピックのレンダリング用)

  • cats-as-wml.xsl(WMLでのトピックのレンダリング用)

この場合、2つの異なるタイプのデバイスに対応するための1つの方法は、各デバイス用に異なるXSQLページを作成することです。次の例に、Categories.xsqlを集計し、cats-as-html.xslスタイルシートを適用するXSQLページを示します。

HTMLCategories.xsql

<?xml version="1.0"?>
<!-- HTMLCategories.xsql -->
<?xml-stylesheet type="text/xsl" href="cats-as-html.xsl"?>
<xsql:include-xsql href="Categories.xsql" xmlns:xsql="urn:oracle-xsql"/>

次の例に、Categories.xsqlを集計し、cats-as-html.xslスタイルシートを適用してワイヤレス・デバイスに配信するXSQLページを示します。

WMLCategories.xsql

<?xml version="1.0"?>
<!-- WMLCategories.xsql -->
<?xml-stylesheet type="text/xsl" href="cats-as-wml.xsl"?>
<xsql:include-xsql href="Categories.xsql" xmlns:xsql="urn:oracle-xsql"/>

33.12 <xsql:insert-param>

<xsql:insert-param>要素について説明します。

用途

パラメータの値を表またはビューに挿入します。このタグは、クライアントが整形式のXML文書をHTTPパラメータまたは個別のHTMLフォーム・フィールドのテキストとしてポストする場合に使用します。

XML SQL Utility(XSU)とXSLTを組み合せると、XMLを特定の表に対して適切な正規の形式に変換できます。変換後、結果として戻る正規のXMLをXSUで挿入できます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *問合せからのXML出力の1行によって指定されます。

構文

このアクションの構文は、次のとおりです。table_or_view_nameは、挿入するXSQLページの相対URLまたは絶対URLです。

<xsql:insert-param table="table_or_view_name" name="string"/>

属性

表33-9に、<xsql:insert-param>アクションに対して使用できるオプションの属性を示します。

表33-9 <xsql:insert-param>の属性

属性名 説明
name="string"

挿入されるXMLを値に含むパラメータの名前。

table="string"

XMLデータの挿入に使用する表、ビューまたはシノニムの名前。

transform = "URL"

挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

columns = "string"

値を挿入する1つ以上の列名のリスト。指定する列名は空白またはカンマで区切ります。列名を指定すると、指定された列のみが挿入されます。列名を指定しない場合は、すべての列が挿入され、値がXML文書に表示されない列にはNULL値が指定されます。

commit = "boolean"

yesに設定すると、挿入が正常に実行された後に、現行の接続に対するコミットが起動されます。有効値は、yes(デフォルト)およびnoです。

commit-batch-size = "integer"

0(ゼロ)以外の正数であるintegerを指定すると、integerのバッチ単位のレコードが挿入されるたびにCOMMITがXSQLプロセッサにより発行されます。デフォルトのバッチ・サイズは0(ゼロ)で、途中でコミットされることはありません。

date-format = "string"

挿入中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、java.text.SimpleDateFormatクラスの有効値です。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、Errorに設定する必要があります。任意のパラメータ名を有効な値として指定できます。

次の例では、データベースに挿入するHTMLフォーム・パラメータxmlfieldの内容を解析および変換します。

HTMLフォーム・パラメータに含まれるXMLの挿入

<?xml version="1.0"?>
<xsql:insert-param name="xmlfield" table="image_metadata_table"
transform="field-to-rowset.xsl" connection="demo" xmlns:xsql="urn:oracle-xsql"/>

33.13 <xsql:insert-request>

<xsql:insert-request>要素について説明します。

用途

XML文書またはHTMLフォームからポストされたデータを受け入れ、XML SQL Utility(XSU)を使用して、ターゲット表またはビューに正規の形式のXML文書のコンテンツを挿入します。

HTMLフォームをポストすると、ポストされたXML文書はHTTPリクエスト・パラメータ、Cookieおよびセッション変数からマテリアライズされます。XML文書は次のとおりです。

<request>
<parameters>
  <param1>value1</param1>
    :
  </paramN>valueN</paramN>
</parameters>
  :
</request>

XSUとXSLTを組み合せると、XML文書を特定の表に対して適切な正規の形式に変換できます。XSQLエンジンを使用して、結果として戻る正規のXMLがXSUで挿入されます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *問合せからのXML出力の1行によって指定されます。

使用上の注意

データベース・ビューをINSERTのターゲットにする場合、そのビューに対するINSTEAD OF INSERTトリガーを作成し、ポストされたデータの処理をさらに自動化できます。たとえば、ビューのINSTEAD OF INSERTトリガーは、PL/SQLを使用してレコードの有無を確認し、その確認結果に応じてINSERTまたはUPDATE のどちらを実行するかを効果的に選択できます。

構文

このアクションの構文は次のとおりです。

<xsql:insert-request table="table"/>

属性

表33-10に、<xsql:insert-request>アクションに対して使用できるオプションの属性を示します。

表33-10 <xsql:insert-request>の属性

属性名 説明
table = "string"

XMLデータの挿入に使用する表、ビューまたはシノニムの名前。

transform = "URL"

挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

columns = "string"

挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

commit = "boolean"

yes(デフォルト)に設定すると、挿入が正常に実行された後に、現行の接続に対するCOMMITが起動されます。有効値は、yesおよびnoです。

commit-batch-size = "integer"

0(ゼロ)以外の正数であるintegerを指定すると、integerのバッチ単位のレコードが挿入されるたびにCOMMITが発行されます。数値を指定しない場合は、デフォルトのバッチ・サイズは0(ゼロ)で、プロセッサによって途中でコミットされることはありません。

date-format = "string"

挿入中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、java.text.SimpleDateFormatクラスの有効値です。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列Errorに設定する必要があります。任意のパラメータ名を有効な値として指定できます。

次の例では、挿入のためにポストされたXML文書またはHTMLフォームのコンテンツを解析および変換します。

パラメータで受け取ったXMLの挿入

<?xml version="1.0"?>
<xsql:insert-request 
  table="purchase_order"
  transform="purchseorder-to-rowset.xsl"
  connection="demo" 
  xmlns:xsql="urn:oracle-xsql"/>

33.14 <xsql:query>

<xsql:query>要素について説明します。

用途

SQLのSELECT文を実行し、問合せの結果セットの正規のXML表示をデータ・ページに挿入します。このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

構文

アクションの構文は次のとおりです。

<xsql:query>
   SELECT_Statement
</xsql:query>

任意の有効なSQLのSELECT文でSELECT_Statementプレースホルダを置換できます。使用したSELECT文によって行が生成されない場合、次のようにネストした<xsql:no-rows-query>要素を含めることによって、代替の問合せを作成できます。

<xsql:query>
  SELECT_Statement
  <xsql:no-rows-query>
    Fallback_SELECT_Statement
  </xsql:no-rows-query>
</xsql:query>

<xsql:no-rows-query>要素自体が、任意のネスト・レベルまでネストした<xsql:no-rows-query>要素を含むことができます。<xsql:no-rows-query>に対して使用可能なオプションは、<xsql:query>アクション・ハンドラ要素の場合と同じです。

属性

表33-11に示すオプションの属性を指定すると、<xsql:query>アクションによって取得されるデータおよび生成されるXMLを様々な面で制御できます。

表33-11 <xsql:query>の属性

属性名 説明
bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

date-format = "string"

問合せ中のXML内の書式化された日付列と属性の値に対して使用する日付書式マスク。有効値はjava.text.SimpleDateFormatクラスの場合と同じです。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

error-statement = "boolean"

noに設定すると、生成されたすべての<xsql-error>要素への違反SQL文の挿入が抑制されます。有効値は、yes(デフォルト)およびnoです。

fetch-size = "integer"

データベース・ラウンドトリップごとにフェッチするレコードの数。指定しない場合は、XSQLConfig.xml内の/XSQLConfig/processor/default-fetch-size構成設定で指定されているデフォルト値が使用されます。

id-attribute = "string"

結果セット内の各行を一意に識別するためのデフォルトのnum属性のかわりに使用するXML属性名。この属性の値が空の文字列である場合は、行のID属性が抑制されます。

id-attribute-column = "string"

結果セット内の列の大/小文字を区別した名前。この値は、行IDの属性値として各行に指定する必要があります。デフォルトでは、行カウントが行IDの属性値として使用されます。

include-schema = "boolean"

yesに設定すると、結果セットの構造を記述するインラインXML Schemaが挿入されます。有効値は、yesおよびno(デフォルト)です。

max-rows = "integer"

オプションでskip-rows属性で示される行数をスキップした後にフェッチする行の最大数。指定しない場合は、デフォルトですべての行がフェッチされます。

null-indicator = "boolean"

NULL="Y"属性が列の要素に挿入され、列の値がnullであることを通知するかどうかを指定します。デフォルトでは、値がNULLである列は出力されません。有効値は、yesおよびno(デフォルト)です。

row-element = "string"

問合せ結果のrowsetに対するデフォルトの<ROW>のかわりに使用するXML要素名。結果セット内の各行に対して含まれる<ROW>要素の生成を抑制するには、空の文字列を設定します。

rowset-element = "string"

問合せ結果のrowsetに対するデフォルトの<ROWSET>のかわりに使用するXML要素名。含まれる<ROWSET>要素の生成を抑制するには、空の文字列を設定します。

skip-rows = "integer"

結果セットから行をフェッチする前にスキップする行の数。max-rowsと組み合せて、問合せ結果のステートレス・ページングを行うこともできます。

tag-case = "string"

有効値は、lowerおよびupperです。指定しない場合は、デフォルトで、問合せで対応するXML要素名として指定されている列名の大/小文字が使用されます。

次の例に、単純なXSQLページを示します。

Hello World

<?xml version="1.0"?>
<xsql:query connection="xmlbook" xmlns:xsql="urn:oracle-xsql">
   SELECT 'Hello, World!' AS text     FROM DUAL</xsql:query>

前の例をhello.xsqlという名前で保存し、ブラウザで実行すると、XSQL Page Processorによって次のXMLが戻されます。

<?xml version = '1.0'?>
<ROWSET>
   <ROW num="1">
      <TEXT>Hello, World!</TEXT>
   </ROW>
</ROWSET>

デフォルトでは、問合せによって生成されたXMLはその結果セットの列構造を反映し、要素名は列名と一致します。次のようなネストした構造を持つ、結果内の列は、その構造を反映するネストした要素を生成します。

  • オブジェクト型

  • コレクション型

  • CURSOR式

異なる型の列を含み、1行を戻す典型的な問合せの結果は、次の例のようになる場合があります。

ネストした構造の例

<ROWSET>
  <ROW id="1">
    <VARCHARCOL>Value</VARCHARCOL>
    <NUMBERCOL>12345</NUMBERCOL>
    <DATECOL>12/10/2001 10:13:22</DATECOL>
    <OBJECTCOL>
       <ATTR1>Value</ATTR1>
       <ATTR2>Value</ATTR2>
    </OBJECTCOL>
    <COLLECTIONCOL>
       <COLLECTIONCOL_ITEM>
         <ATTR1>Value</ATTR1>
         <ATTR2>Value</ATTR2>
       </COLLECTIONCOL_ITEM>
       <COLLECTIONCOL_ITEM>
         <ATTR1>Value</ATTR1>
         <ATTR2>Value</ATTR2>
       </COLLECTIONCOL_ITEM>
    </COLLECTIONCOL>
    <CURSORCOL>
      <CURSORCOL_ROW>
        <COL1>Value1</COL1>
        <COL2>Value2</COL2>
      </CURSORCOR_ROW>
    </CURSORCOL>
  </ROW>
</ROWSET>

<ROW>要素は、結果セット内の行ごとに繰り返されます。問合せで標準SQL列別名を使用して、結果セット内の列の名前を変更できます。これによって、生成されたXML要素の名前も変更されます。列別名は、XML要素には無効な名前を持つ列に対しては必須です。

たとえば、次の例の<xsql:query>アクションでは、計算された式のデフォルト列名が無効なXML要素名であるため、エラーが発生します。

エラーが発生する問合せ

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql">
  SELECT TO_CHAR(hire_date,'DD-MON') 
  FROM   employees
</xsql:query>

この問題は、次の例のような列別名を使用して解決できます。

列別名を使用した問合せ

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql">
  SELECT TO_CHAR(hire_date,'DD-MON') AS hiredate FROM   employees
</xsql:query>

33.15 <xsql:ref-cursor-function>

<xsql:ref-cursor-function>要素について説明します。

用途

REF CURSORを戻す任意のストアド・ファンクションを実行し、問合せの結果セットを正規のXML形式に挿入します。このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

このタグは、問合せの内容を指定し、その問合せにカーソルを戻すストアド・プロシージャを起動する場合に使用します。この方法でこのタグを使用すると、問合せを非表示にして、直接参照されないようにすることができるため、軽度のセキュリティが施されます。

構文

このアクションの構文は、次のとおりです。SCHEMA_NAMEはオプションのデータベース・スキーマ名です。PACKAGE_NAMEはオプションのPL/SQLパッケージ名です。FUNCTION_NAME(必須)は、PL/SQLファンクションの名前です。

<xsql:ref-cursor-function>
  [SCHEMA_NAME.][PACKAGE_NAME.]FUNCTION_NAME(args);
</xsql:ref-cursor-function>

属性

オプションの属性は、<xsql:ref-cursor-function>fetch-sizeを使用できないことを除き、表33-11に示す<xsql:query>アクションの属性と同じです。

PL/SQLの動的SQL機能を使用すると、結果セットへのカーソル・ハンドルをXSQL Page Processorに戻す前に、ファンクションで条件付きの動的問合せを作成できます。ファンクションの戻り値はREF CURSOR型である必要があります。次の例のPL/SQLパッケージについて考えてみます。

DynCursor PL/SQLパッケージ

CREATE OR REPLACE PACKAGE DynCursor IS
  TYPE ref_cursor IS REF CURSOR;
  FUNCTION DynamicQuery(id NUMBER) RETURN ref_cursor;
END;
CREATE OR REPLACE PACKAGE BODY DynCursor IS
  FUNCTION DynamicQuery(id NUMBER) RETURN ref_cursor IS
    the_cursor ref_cursor;
  BEGIN
    IF id = 1 THEN -- Conditionally return a dynamic query as a REF CURSOR
      OPEN the_cursor  -- An employees Query
       FOR 'SELECT employee_id, email FROM employees';
    ELSE
      OPEN the_cursor  -- A departments Query
        FOR 'SELECT department_name, department_id FROM departments'; 
   END IF;
   RETURN the_cursor;
  END;
END;

<xsql:ref-cursor-function>は、次の例に示すように、このファンクションで戻されたREF CURSORの動的結果を挿入できます。

REF CURSORファンクションの実行

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<xsql:ref-cursor-function connection="demo" xmlns:xsql="urn:oracle-xsql"> 
  DynCursor.DynamicQuery(1);
</xsql:ref-cursor-function>

33.16 <xsql:set-cookie>

<xsql:set-cookie>要素について説明します。

用途

HTTP Cookieの値を設定します。デフォルトでは、Cookieの値は現行のブラウザの存続期間中、存続します。ただし、その存続期間は、オプションのmax-age属性を指定して変更できます。Cookieに割り当てられる値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、SQLのSELECT文の結果から指定することもできます。

この機能はHTTPプロトコル固有であるため、このアクションは、それが使用されているXSQLページがXSQLサーブレットによって処理されている場合にのみ有効です。このアクションは、XSQLコマンドライン・ユーティリティまたはXSQLRequestアプリケーション・プログラミング・インタフェース(API)によって処理されているXSQLページで検出された場合は、何もしません。

使用上の注意

SQL文を使用する方法では、単一行が結果セットからフェッチされ、パラメータに最初の列の値が割り当てられます。この使用方法では、この使用方法を適用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

単一のSQL文の結果に基づいて複数のCookie値を設定する必要がある場合、name属性を使用しないでください。かわりに、names属性を使用して、1つ以上のCookie名を空白またはカンマで区切ったリストを指定できます。

構文

このアクションの構文は、次のとおりです。paramnameはパラメータの名前です。

<xsql:set-cookie name="paramname" value="value"/>

または、SQL_statementにSQLのSELECT文、paramnameにパラメータの名前を指定する次の構文も使用できます。

<xsql:set-cookie name="paramname">
  SQL_statement
</xsql:set-cookie>

name属性またはnames属性のいずれかが必要です。value属性と含まれるSQL文は、相互に排他的です。選択リストの列数は、設定されているCookieの数と一致している必要があります。一致していない場合は、エラー・メッセージが戻されます。

属性

表33-12に、このアクションがサポートする属性を示します。太字の属性は必須です。その他はすべてオプションです。

表33-12 <xsql:set-cookie>の属性

属性名 説明
name = "string"

値を設定するCookieの名前。nameまたはnamesを使用する必要があります。両方は使用できません。

names = "string string ..."

値を設定するCookie名を空白またはカンマで区切ったリスト。nameまたはnamesを使用する必要があります。両方は使用できません。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

domain = "string"

Cookieの値が有効で読取り可能なドメイン。domainが明示的に設定されていない場合は、デフォルトで、そのCookieを作成するドキュメントの完全修飾ホスト名(server.biz.comなど)に設定されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定します。任意のパラメータ名を有効な値として指定できます。

ignore-empty-value = "boolean"

Cookieに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、yesおよびno(デフォルト)です。

immediate = "boolean"

Cookieの割当てを現在のページにすぐに表示するかどうかを指定します。通常、現行のリクエストで設定されたCookieは、ブラウザが後続のリクエストでCookieをサーバーに送信するまでは、表示されません。有効値は、yesおよびno (デフォルト)です。

max-age = "integer"

Cookieの存続期間の最大値()を設定します。デフォルトでは、Cookieが現行ブラウザ・セッションの終了時に期限切れになるように設定されます。

only-if-unset = "boolean"

Cookieが存在しない場合にのみCookieを割り当てるかどうかを指定します。有効値は、yesおよびno(デフォルト)です。

path = "string"

Cookieの値が有効で読取り可能なドメイン内の相対URLパス。パスが明示的に設定されていない場合は、デフォルトで、そのCookieを作成するドキュメントのURLパスに設定されます。

value = "string"

Cookieに割り当てる値を設定します。

次の例では、HTTP Cookieをchoiceという名前のパラメータの値に設定します。

Cookieへのパラメータ値の設定

<?xml version="1.0"?>
<xsql:set-cookie name="last_selection" 
                 value="{@choice}" xmlns:xsql="urn:oracle-xsql"/>

表33-5では、HTTP Cookieにデータベースから選択した値を設定します。

Cookieへのデータベースで生成した値の設定

<?xml version="1.0"?>
<xsql:set-cookie name="shopping_cart_id" bind-params="user"
                 connection="demo"       xmlns:xsql="urn:oracle-xsql">
 SELECT cartmgr.new_cart_id(UPPER(?)) FROM DUAL 
</xsql:set-cookie>

表33-6では、1つのSELECT文の結果に基づいて3つのCookieを設定します。

3つのCookieの設定

<?xml version="1.0"?>
<xsql:set-cookie names="paramname1 paramname2 paramname3"
                 connection="demo" xmlns:xsql="urn:oracle-xsql">
  SELECT expression_or_column1, expression_or_column2, expression_or_column3
  FROM table
  WHERE clause_identifying_a_single_row
</xsql:set-cookie>

33.17 <xsql:set-page-param>

<xsql:set-page-param>要素について説明します。

用途

ページのプライベート・パラメータの値を設定します。この値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、別の方法として、SQLのSELECT文の結果から指定することもできます。

使用上の注意

SQL文を使用する方法では、単一行が結果セットからフェッチされ、パラメータに最初の列の値が割り当てられます。このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

value属性またはSQL文を指定するもう1つの方法として、xpath属性を指定して、ページ・レベルのパラメータをXPath式の値に設定できます。XPath式は、XSQL Page ProcessorにポストされたXML文書またはHTML形式に対して評価されます。xpath属性の値には、任意の有効なXPath式を指定できます。オプションで、他のXSQLアクション・ハンドラ要素と同様に、XSQLパラメータを属性値の一部として使用して作成できます。

ページのプライベート・パラメータが設定されると、後続のアクション・ハンドラは、この値を{@po_id}などの字句パラメータとして使用できます。または、SQL操作をサポートするアクション・ハンドラのbind-params属性でその名前を参照することによって、SQLバインド・パラメータ値として使用できます。

name属性を使用するのではなく、単一のSQL文の結果に基づいて複数のセッション・パラメータ値を設定する必要がある場合は、names属性を使用できます。1つ以上のセッション・パラメータ名を空白またはカンマで区切ったリストを指定できます。

構文

このアクションの構文は、次のとおりです。paramnameはパラメータの名前です。またvalueは値です。

<xsql:set-page-param name="paramname" value="value"/>

または、SQL_statementにSQLのSELECT文、paramnameにパラメータの名前を指定する次の構文も使用できます。

<xsql:set-page-param nname="paramname">
  SQL_statement
</xsql:set-page-param>

または、paramnameにパラメータの名前、expressionにXPath式を指定する次の構文も使用できます。

<xsql:set-page-param name="paramname" xpath="expression"/>

name属性またはnames属性のいずれかが必要です。value属性と含まれるSQL文は、相互に排他的です。

属性

表33-13に、このアクションがサポートする属性を示します。太字の属性は必須です。その他はすべてオプションです。

表33-13 <xsql:set-page-param>の属性

属性名 説明
name = "string"

値を設定する、ページのプライベート・パラメータの名前。

names = "string string ..."

値を設定するページ・パラメータ名を空白またはカンマで区切ったリスト。name属性またはnames属性のいずれかを使用します。両方は使用できません。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

ignore-empty-value = "boolean"

ページ・レベルのパラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、yesまたはno(デフォルト)です。

quote-array-values = "boolean"

パラメータ名が単一の値のパラメータ名(たとえば、myparam)で、treat-list-as-array="yes"を指定している場合、quote-array-values="yes"を指定すると、カンマで値が区切られる前に各文字列トークンが一重引用符で囲まれます。有効値は、yesおよびno(デフォルト)です。

treat-list-as-array = "boolean"

パラメータに割り当てられた文字列値を、割当て前に別の値の配列にトークン化するかどうかを指定します。文字列中にカンマが存在する場合、トークンの区切りにそのカンマが使用されます。それ以外の場合は、空白が使用されます。有効値は、yesおよびnoです。デフォルト値は、設定中のパラメータ名が配列パラメータ名(たとえば、myparam[])である場合はyes、設定中のパラメータ名が単一の値のパラメータ名(たとえば、myparam)である場合はnoです。

value = "string"

パラメータに割り当てる値を設定します。

xpath = "XPathExpression"

XSQL Page ProcessorにポストされたXML文書またはHTML形式に対して評価されたXPath式に、パラメータの値を設定します。

次の例では、単一のSQL文の結果に基づいて複数のパラメータ値を設定します。

複数のページ・パラメータの設定

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<xsql:set-page-param names="paramname1 paramname2 paramname3"
                     connection="demo" xmlns:xsql="urn:oracle-xsql>
  SELECT expression_or_column1, expression_or_column2, expression_or_column3
  FROM table
  WHERE clause_identifying_a_single_row
</xsql:set-page-param>

次の例では、ページ・レベルのパラメータにデータベースから選択した値を設定し、xsql:query属性の値として使用します。

データベースで生成した値のパラメータへの設定

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<page connection="demo" xmlns:xsql="urn:oracle-xsql">
  <xsql:set-page-param name="max-rows-pref">
     SELECT max_rows
     FROM user_profile
     WHERE userid = {@userid}
  </xsql:set-page-param>
  <xsql:query max-rows="{@max-rows-pref}">
    SELECT title, url
    FROM newsstory
    ORDER BY date_entered DESC
  </xsql:query>
</page>

33.18 <xsql:set-session-param>

<xsql:set-session-param>要素について説明します。

用途

HTTPセッション・レベルのパラメータの値を設定します。セッション・レベルのパラメータの値は、現行ブラウザ・ユーザーのHTTPセッションの存続期間中、存続します。Webサーバーがセッションを制御します。この値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、SQLのSELECT文の結果から指定することもできます。

この機能はJavaサーブレットに固有であるため、このアクションは、それが使用されているXSQLページがXSQLサーブレットによって処理されている場合にのみ有効です。このアクションは、XSQLコマンドライン・ユーティリティまたはXSQLRequestプログラムAPIによって処理されているXSQLページで使用した場合は、何もしません。

使用上の注意

SQL文を使用する方法では、XSQLプロセッサによって単一行が結果セットからフェッチされ、パラメータに最初の列の値が割り当てられます。この使用方法では、この使用方法を適用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

単一のSQL文の結果に基づいて複数のセッション・パラメータ値を設定する場合、name属性を使用しないでください。かわりに、names属性を使用して、1つ以上のセッション・パラメータ名を空白またはカンマで区切ったリストを指定できます。

構文

このアクションの構文は、次のとおりです。paramnameはパラメータの名前です。またvalueは値です。

<xsql:set-session-param name="paramname" value="value"/>

または、SQL_statementにSQLのSELECT文、paramnameにパラメータの名前を指定する次の構文も使用できます。

<xsql:set-session-param name="paramname">
  SQL_statement
</xsql:set-session-param>

name属性またはnames属性のいずれかが必要です。value属性と含まれるSQL文は、相互に排他的です。

属性

表33-14に、このアクションがサポートするオプションの属性を示します。太字の属性は必須です。その他はすべてオプションです。

表33-14 <xsql:set-session-param>の属性

属性名 説明
name = "string"

値を設定するセッション・レベルの変数の名前。name属性またはnames属性のいずれかを使用します。両方は使用できません。

names = "string string ..."

値を設定するセッション・パラメータ名を空白またはカンマで区切ったリスト。name属性またはnames属性のいずれかを使用します。両方は使用できません。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。パラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定します。任意のパラメータ名を有効な値として指定できます。

ignore-empty-value = "boolean"

セッション・レベルのパラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、yesおよびno(デフォルト)です。

only-if-unset = "boolean"

セッション変数が存在しない場合にのみセッション変数を割り当てるかどうかを指定します。有効値は、yesおよびno(デフォルト)です。

quote-array-values = "boolean"

パラメータ名が単一の値のパラメータ名(たとえば、myparam)で、treat-list-as-array="yes"を指定している場合、quote-array-values="yes"を指定すると、カンマで値が区切られる前に各文字列トークンが一重引用符で囲まれます。有効値は、yesおよびno(デフォルト)です。

treat-list-as-array = "boolean"

パラメータに割り当てられた文字列値を、割当て前に別の値の配列にトークン化するかどうかを指定します。文字列中にカンマが存在する場合、トークンの区切りにそのカンマが使用されます。それ以外の場合は、空白が使用されます。有効値は、yesおよびnoです。デフォルト値は、設定中のパラメータ名が配列パラメータ名(たとえば、myparam[])である場合はyes、設定中のパラメータ名が単一の値のパラメータ名(たとえば、myparam)である場合はnoです。

value = "string"

パラメータに割り当てる値を設定します。

次の例では、単一のSELECT文の結果に基づいて複数のセッション・パラメータ値を設定します。

セッション・パラメータの設定

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<page connection="demo" xmlns:xsql="urn:oracle-xsql">
  <xsql:set-session-param names="paramname1 paramname2 paramname3">
    SELECT expression_or_column1, expression_or_column2, expression_or_column3
    FROM   table
    WHERE  clause_identifying_a_single_row
  </xsql:set-session-param>
  <!-- ... -->
</page>

33.19 <xsql:set-stylesheet-param>

<xsql:set-stylesheet-param>要素について説明します。

用途

最上位のXSLTスタイルシート・パラメータの値を設定します。この値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、SQLのSELECT文の結果から指定することもできます。スタイルシート・パラメータ値は、現行のページの処理中に使用されるすべてのスタイルシートに対して設定できます。

使用上の注意

SQL文を使用する方法では、単一行が結果セットからフェッチされ、パラメータに最初の列の値が割り当てられます。この使用方法では、この使用方法を適用するXSQLページのドキュメント要素にconnection="connname"属性を指定し、データベース接続を指定する必要があります。

単一のSQL文の結果に基づいて複数のスタイルシート・パラメータ値を設定する場合、name属性を使用しないでください。かわりに、names属性を使用して、1つ以上のスタイルシート・パラメータ名を空白またはカンマで区切ったリストを指定できます。

構文

このアクションの構文は、次のとおりです。paramnameはパラメータの名前です。またvalueは値です。

<xsql:set-stylesheet-param name="paramname" value="value"/>

または、SQL_statementにSQLのSELECT文、paramnameにパラメータの名前を指定する次の構文も使用できます。

<xsql:set-stylesheet-param name="paramname">
  SQL_statement
</xsql:set-stylesheet-param>

name属性またはnames属性のいずれかが必要です。value属性と含まれるSQL文は、相互に排他的です。

属性

表33-15に、このアクションがサポートするオプションの属性を示します。太字の属性は必須です。その他はすべてオプションです。

表33-15 <xsql:set-stylesheet-param>の属性

属性名 説明
name = "string"

値を設定する最上位のスタイルシート・パラメータの名前。

names = "string string ..."

値を設定する最上位のスタイルシート・パラメータ名を空白またはカンマで区切ったリスト。name属性またはnames属性を使用します。両方は使用できません。

bind-params = "string"

順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。パラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列'Error'に設定する必要があります。任意のパラメータ名を有効な値として指定できます。

ignore-empty-value = "boolean"

スタイルシート・パラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、yesおよびno(デフォルト)です。

value = "string"

パラメータに割り当てる値を設定します。

次の例では、スタイルシートを関連付け、<xsql:set-stylesheet-param>アクション要素を使用して、XSQLページ・パラメータp_tableの値を最上位のXSLTスタイルシート・パラメータtableに割り当てます。

スタイルシート・パラメータの設定

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<page connname="xmlbook" connection="{@p_connname}">
  <xsql:query null-indicator="yes" xmlns:xsql="urn:oracle-xsql">
  <![CDATA[
    SELECT *
    FROM {@p_table}
    WHERE rownum < 2
  ]>
  </xsql:query>
  <xsql:set-stylesheet-param name="table" value="{@p_table}"
                             xmlns:xsql="urn:oracle-xsql" />
</page>

33.20 <xsql:update-request>

<xsql:update-request>要素について説明します。

用途

XML文書またはHTMLフォームからポストされたデータを受け入れ、XML SQL Utility(XSU)を使用して、ターゲット表またはビューから正規の形式のXML文書のコンテンツを更新します。

XSUとXSLTを組み合せると、XML文書を特定の表に対して適切な正規の形式に変換できます。変換後、結果として戻る正規のXMLをXSUで更新できます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *問合せからのXML出力の1行によって指定されます。

構文

このアクションの構文は次のとおりです。

<xsql:update-request table="table_name"/>

属性

表33-3に、<xsql:update-request>アクションに対して使用できる属性を示します。太字の属性は必須です。

表33-16 <xsql:update-request>の属性

属性名 説明
table = "string"

XMLデータの更新に使用する表、ビューまたはシノニムの名前。

key_columns = "string string ..."

空白またはカンマで区切られた1つ以上の列名のリスト。プロセッサは、ポストされたXML文書に指定されたこれらの名前の値によって、更新する既存の行を識別します。

transform = "URL"

更新されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

columns = "string"

更新されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。

commit = "boolean"

yes(デフォルト)に設定すると、更新が正常に実行された後に、現行の接続に対するCOMMITが起動されます。有効値は、yesおよびnoです。

commit-batch-size = "integer"

0(ゼロ)以外の正数であるintegerを指定すると、integerのバッチ単位のレコードが更新されるたびにCOMMITが発行されます。数値を指定しない場合は、デフォルトのバッチ・サイズは0(ゼロ)で、途中でコミットされることはありません。

date-format = "string"

更新中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、java.text.SimpleDateFormatクラスの有効値です。

error-param = "string"

ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、Errorに設定する必要があります。任意のパラメータ名を有効な値として指定できます。

次の例では、更新のためにポストされたXML文書またはHTMLフォームのコンテンツを解析および変換します。

パラメータで受け取ったXMLの更新

<?xml version="1.0"?>
<xsql:update-request table="purchase_order"   key-columns="department_id"
                     connection="demo"        transform="doc-to-departments.xsl"
 xmlns:xsql="urn:oracle-xsql/>