この章では、XSQLページ・フレームワークに関する参照情報を示します。「XSQL構成ファイルのパラメータ」では、XSQL構成ファイルの設定について説明します。表30-1に、XSQLページの有効な組込みアクションを示します。
表30-1 組込みXSQLアクション・ハンドラ要素およびアクション・ハンドラ・クラス
XSQLアクション・ハンドラ要素 | oracle.xml.xsql.actionsのハンドラ・クラス | 用途 |
---|---|---|
<xsql:action> |
|
Javaに実装されたユーザー定義のアクション・ハンドラを起動し、カスタム・ロジックを実行して、カスタムXMLデータをXSQLページに挿入します。 |
<xsql:delete-request> |
|
リクエストで指定されたポスト済XML文書に基づいて、データベース内の既存の行を削除します。 |
<xsql:dml> |
|
SQL DML文またはPL/SQL無名ブロックを実行します。 |
<xsql:if-param> |
|
XMLコンテンツまたは他のXSQLアクションを条件付きで挿入します。 |
<xsql:include-owa> |
|
データベース内でOracle Web Agent(OWA)パッケージを使用してXMLを生成するストアド・プロシージャの結果を挿入します。 |
<xsql:include-param> |
|
パラメータおよびその値を要素としてXSQLページに挿入します。 |
<xsql:include-posted-xml> |
|
リクエストでポストされたXML文書をXSQLページに挿入します。 |
<xsql:include-request-params> |
|
すべてのリクエスト・パラメータをXML要素としてXSQLページに挿入します。 |
<xsql:include-xml> |
|
相対URLまたは絶対URLを使用して、任意のXMLリソースをページの任意の場所に挿入します。 |
<xsql:include-xsql> |
|
XSQLページの結果を別のXSQLページの任意の場所に挿入します。 |
<xsql:insert-param> |
|
単一のパラメータの値に含まれるXML文書を挿入します。 |
<xsql:insert-request> |
|
リクエストでポストされたXML文書またはHTMLフォームを表またはビューに挿入します。 |
<xsql:query> |
|
任意のSQL文を実行し、その結果を正規のXML形式に挿入します。 |
<xsql:ref-cursor-function> |
|
PL/SQLストアド・ファンクションが戻すカーソルの結果セットの正規のXML表示を挿入します。 |
<xsql:set-cookie> |
|
HTTP Cookieを設定します。 |
<xsql:set-page-param> |
|
HTTPセッション・レベルのパラメータを設定します。ページの後続のSQL文内で参照できるページ・レベル(ローカル)のパラメータを設定します。 |
<xsql:set-session-param> |
|
HTTPセッション・レベルのパラメータを設定します。 |
<xsql:set-stylesheet-param> |
|
最上位のXSLTスタイルシート・パラメータの値を設定します。 |
<xsql:update-request> |
|
リクエストで指定されたポスト済XML文書に基づいて、データベース内の既存の行を更新します。 |
XSQL構成ファイルを使用して、XSQLページ環境をチューニングできます。表30-2に、有効なパラメータの定義を示します。
表30-2 XSQL構成ファイルの設定
構成設定名 | 説明 |
---|---|
XSQLConfig/servlet/output-buffer-size |
バッファ付き出力ストリーム・サイズ(バイト単位)を設定します。サーブレット・エンジンがすでにI/Oをサーブレット出力ストリームにバッファリング済である場合は、 |
XSQLConfig/servlet/suppress-mime-charset/media-type |
XSQLサーブレットは、HTTP |
XSQLConfig/processor/character-set-conversion/ default-charset 注意: 設定名は単一行です。スペースの制約により、2行に表示されています。 |
デフォルトでは、HTTPパラメータの値に基づいてキャラクタ・セット変換が行われ、ほぼすべてのサーブレット・エンジンが使用するデフォルトのキャラクタ・セットを補完します。変換に使用されるデフォルトのベース・キャラクタ・セットは、IANAの キャラクタ・セット変換を抑制するには、 有効値は、すべてのJavaキャラクタ・セット名または |
XSQLConfig/processor/reload-connections-on-error |
XSQL Page Processorを起動すると、接続定義が初期化されます。 |
XSQLConfig/processor/default-fetch-size |
SQL問合せを使用して情報を取得するための行のフェッチ・サイズのデフォルト値を設定します。この設定は、Oracle JDBC Driversを使用している場合にのみ有効です。それ以外の場合は無視されます。この方法により、異なる層で実行中のサーブレット・エンジンからデータベースへのネットワーク・ラウンドトリップが削減されます。 デフォルト値は |
XSQLConfig/processor/page-cache-size |
XSQLページ・テンプレート用のキャッシュ・サイズを設定します。この設定は、キャッシュされるXSQLページの最大数を決定します。この最大数を超えると、最も使用頻度の少ないページがキャッシュから削除されます。デフォルト値は |
XSQLConfig/processor/stylesheet-cache-size |
XSLTスタイルシート用のキャッシュ・サイズを設定します。この設定は、キャッシュされるXSQLページの最大数を決定します。この最大数を超えると、最も使用頻度の少ないページがキャッシュから削除されます。デフォルト値は |
XSQLConfig/processor/stylesheet-pool/initial |
キャッシュされた各スタイルシートは、スループットを改善するためにキャッシュされたスタイルシート・インスタンスのプールです。この構成設定は、各スタイルシート・プールに対するスタイルシートの初期割当て数を設定します。 デフォルト値は |
XSQLConfig/processor/stylesheet-pool/increment |
サーバー上でのロードが増加したためスタイルシート・プールを拡大する必要がある場合に割り当てるスタイルシートの数を設定します。 デフォルト値は |
XSQLConfig/processor/stylesheet-pool/timeout-seconds |
プールが縮小して初期サイズに戻ろうとするときに、プール内のスタイルシート・インスタンスが削除され、リソースが解放される前の非活動時間(秒)を設定します。 デフォルト値は |
XSQLConfig/processor/connection-pool/initial |
各接続プールに対するJDBC接続の初期割当て数を制御します。XSQL Page ProcessorのデフォルトのConnection Managerは、接続プーリングを実装して、スループットを改善します。 デフォルト値は |
XSQLConfig/processor/connection-pool/increment |
サーバー上でのロードが増加したため接続プールを拡大する必要がある場合に割り当てる接続の数を設定します。 デフォルト値は |
XSQLConfig/processor/connection-pool/timeout-seconds |
プールが縮小して初期サイズに戻ろうとするときに、プール内のJDBC接続が削除され、リソースが解放される前の非活動時間(秒)を設定します。 デフォルト値は |
XSQLConfig/processor/connection-pool/dump-allowed |
デフォルト値は |
XSQLConfig/processor/connection-manager/factory |
XSQL Connection Managerファクトリ実装の完全修飾Javaクラス名を指定します。指定しない場合、デフォルトは 有効値は、 |
XSQLConfig/processor/owa/fetch-style |
|
XSQLConfig/processor/timing/page |
XSQL Page Processorが 有効値は、 |
XSQLConfig/processor/timing/action |
XSQL Page Processorがページ内の、アクションの処理に必要な経過時間(秒)を報告するコンテンツを持つアクション・ハンドラ要素のすぐ前にコメントを追加するかどうかを決定します。 有効値は、 |
XSQLConfig/processor/logger/factory |
カスタムXSQLログ出力ファクトリ実装の完全修飾Javaクラス名を指定します。値を設定しない場合は、ログは出力されません。 有効値は、 |
XSQLConfig/processor/error-handler/class |
カスタムXSQLエラー・ハンドラの完全修飾Javaクラス名を指定します。指定したハンドラがデフォルトのエラー・ハンドラ実装になります。値を設定しない場合は、デフォルトのエラー・ハンドラが使用されます。 有効値は、 |
XSQLConfig/processor/xml-parsing/preserve-whitespace |
XSQLページおよびXSLTスタイルシートの解析時に、XSQL Page Processorで空白を保持するかどうかを決定します。 有効値は、 |
XSQLConfig/processor/security/stylesheet/defaults/ allow-client-style 注意: 設定名は単一行です。スペースの制約により、2行に表示されています。 |
クライアントによるスタイルシートのオーバーライドを禁止します。有効値は、 開発中は、
この設定で指定されるのはデフォルト動作のみです。特定のXSQLページのドキュメント要素に対してこの属性値を明示的に指定すると、その値がこのグローバル・デフォルト値より優先されます。 |
XSQLConfig/processor/security/stylesheet/ trusted-hosts/host 注意: 設定名は単一行です。スペースの制約により、2行に表示されています。 |
XSLTスタイルシートへの絶対URLが構成ファイルに示されているトラステッド・ホストからのものである必要があることを規定します。 XSLTプロセッサは、Java拡張関数をサポートします。通常、XSQLページは相対URLを使用してXSLTスタイルシートを参照します。 |
XSQLConfig/http/proxyhost |
HTTPプロトコルを使用する 有効値は、すべてのホスト名またはIPアドレスです。 |
XSQLConfig/http/proxyport |
HTTPプロトコルを使用する 有効値は0(ゼロ)以外の整数です。 |
XSQLConfig/connectiondefs/connection |
XSQL Page Processorが使用する名前付き接続の短縮名およびJDBCの詳細を定義します。
|
XSQLConfig/connectiondefs/connection/username |
現行の接続のユーザー名を定義します。 |
XSQLConfig/connectiondefs/connection/password |
現行の接続のパスワードを定義します。 |
XSQLConfig/connectiondefs/connection/dburl |
現行の接続のJDBC接続URLを定義します。 |
XSQLConfig/connectiondefs/connection/driver |
現行の接続に使用するJDBCドライバの完全修飾Javaクラス名を指定します。値を指定しない場合は、デフォルトで |
XSQLConfig/connectiondefs/connection/autocommit |
現行の接続の自動コミット・フラグを明示的に設定します。値を指定しない場合、接続はJDBCドライバの自動コミットのデフォルト設定を使用します。 |
XSQLConfig/serializerdefs/serializer |
名前付きカスタム・シリアライザの実装を定義します。 |
XSQLConfig/serializerdefs/serializer/name |
現行のカスタム・シリアライザ定義の名前を定義します。 |
XSQLConfig/connectiondefs/connection/class |
現行のカスタム・シリアライザの完全修飾Javaクラス名を指定します。このクラスは、 |
用途
Javaに実装されたユーザー定義のアクション・ハンドラを起動し、カスタム・ロジックを実行して、カスタムXMLデータをXSQLページに挿入します。このアクションで起動するJavaクラスには、oracle.xml.xsql.XSQLActionHandler
インタフェースを実装する必要があります。
<xsql:action>
を使用して、組込みアクション・ハンドラが処理しないタスクを実行する必要があります。カスタム・アクションは、任意のXMLコンテンツをデータ・ページに提供し、任意の処理を実行することができます。
使用上の注意
XSQL Page Processorは、ページ内のアクションを次の方法で処理します。
デフォルトのコンストラクタを使用して、アクション・ハンドラ・クラスのインスタンスを作成します。
メソッドinit(Element actionElt,XSQLPageRequest context)
をコールして、アクション・ハンドラ要素オブジェクトおよびXSQL Page Processorコンテキストを含むハンドラ・インスタンスを初期化します。
メソッド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.YourCustomHandler
にparam1
およびparam2
という名前の属性が必要である場合、次の構文を使用します。
<xsql:action handler="yourpackage.YourCustomHandler" param1="xxx" param2="yyy">
例
例30-1に、myactions.StockQuotes
Javaクラスを起動するXSQLページを示します。このページには、symbol
パラメータで渡された記号に対してGoogleから取得した株価情報が挿入されます。このパラメータを指定しなければ、デフォルト・リストが指定されます。
用途
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"/>
属性
表30-3に、<xsql:delete-request>
アクションに対して使用できるオプションの属性を示します。太字の属性は必須です。
表30-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"
|
|
commit-batch-size = "integer"
|
0(ゼロ)以外の正数である |
date-format = "string"
|
削除中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列 |
例
例30-2に、ポストされたXML文書をstyle.xsl
スタイルシートで変換し、departments
表から削除する例を示します。departments.department_id
列が削除の主キーです。
用途
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>
属性
表30-4に、<xsql:dml>
アクションに対して使用できるオプションの属性を示します。
表30-4 <xsql:dml>の属性
属性名 | 説明 |
---|---|
commit = "boolean"
|
|
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
error-statement = "boolean"
|
|
例
例30-3は、webuser
cookieに保存されているユーザー名をrequest_log
表に挿入します。バインド変数でSQL挿入攻撃から保護します。
用途
ある条件が真である場合に、ネストされている要素またはアクションを挿入できます。条件が真である場合は、すべてのネストされたXMLコンテンツおよびアクションがページに挿入されます。条件が偽である場合は、ネストされたXMLコンテンツまたはアクションはいずれも挿入されません(したがって、ネストされたアクションは実行されません)。
評価するパラメータ値を指定するには、必要なname
属性を指定します。単純なパラメータの名前と配列パラメータの名前の両方を指定できます。
注意: テスト対象のパラメータが存在しない場合は、偽と評価されます。 |
構文
このアクションの構文は、次のとおりです。some_name
は、name
属性の値です。またtest_condition
は、表30-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
属性の他に表30-5の属性のいずれかを使用する必要があります。その他のXSQLアクションでは、<xsql:if-param>
アクションの属性に、字句置換パラメータ式(たとえば、{@paramName}
)を含めることができます。
表30-5 <xsql:if-param>の属性
属性名 | 説明 |
---|---|
exists="yes_or_no"
|
|
equals="stringValue"
|
この条件では、名前付きパラメータと指定された文字列値が等しいかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、 配列値パラメータについては、配列内の任意の要素に指定された値が含まれているかどうかがテストされます。 |
not-equals="stringValue"
|
この条件では、名前付きパラメータと指定された文字列値が等しくないかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。配列値パラメータについては、配列内の要素のいずれにも指定された値が含まれていないときに真と評価されます。 |
in-list = "comma-or-space-separated-list"
|
この条件では、名前付きパラメータが指定されたリスト内の文字列のいずれかに一致するかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、 文字列内にカンマが検出された場合、そのカンマはデリミタとして使用され、 |
not-in-list = "comma-or-space-separated-list"
|
名前付きパラメータが指定されたリスト内の文字列のいずれかに一致しないかどうかがテストされます。デフォルトでは、文字列が完全一致するかどうかが比較されます。一致の比較で大/小文字を区別しない場合は、 文字列内にカンマが検出された場合、そのカンマはデリミタとして使用され、 |
例
2つの異なる条件がそれぞれ真であるかどうかをテストするには、例30-4のように<xsql:if-param>
要素をネストして使用します。
例30-4 条件のテスト
<?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>
用途
データベース・ストアド・プロシージャによって生成されたXMLコンテンツを挿入します。このアクションを使用するには、そのアクションを使用するXSQLページのドキュメント要素にconnection="connname"
属性を指定し、データベース接続を指定する必要があります。
ストアド・プロシージャは、標準のOracle Web Agent(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>
属性
表30-6に、このアクションがサポートするオプションの属性を示します。
表30-6 <xsql:include-owa>の属性
属性名 | 説明 |
---|---|
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
error-statement = "boolean"
|
|
例
プロジェクトのステータスを更新するPL/SQLプロシージャ、UpdateStatus
を作成するとします。このプロシージャでは、HTPを使用して<UpdateStatus>
データグラムを出力します。このデータグラムは、エラーが発生しなかった場合は要素<Success/>
を含み、1つ以上のエラーが発生した場合は要素<Error>
を含みます。
例30-5に、XSQLページからUpdateStatus
をコールする方法を示します。この例では、字句置換ではなく、SQLバインド変数を使用して、SQL挿入攻撃を防ぎます。
例30-5 ストアド・プロシージャで作成したXMLコンテンツの挿入
<xsql:include-owa connection="demo" bind-params="project status" xmlns:xsql="urn:oracle-xsql"> UpdateStatus( ?,? ); </xsql:include-owa>
ユーザーが無効なプロジェクト・ステータス番号をWebベースのフォームに入力するとします。例30-5に示すように、このフォームからXSQLページに入力パラメータをポストします。次のデータグラムが戻されます。このデータグラムは、XSLTスタイルシートでHTMLエラー・ページに変換できます。
<UpdateStatus> <Error Field="status">Status must be 1, 2, 3, or 4</Error> </UpdateStatus>
用途
1つのパラメータの名前と値のXML表示を挿入します。この方法は、関連付けられたXSLTスタイルシートがXPath式を使用してパラメータ値を参照する必要がある場合に有効です。
構文
このアクションの構文は、次のとおりです。paramname
はパラメータの名前です。
<xsql:include-param name="paramname" />
このname
属性は必須で、値を挿入する必要があるパラメータの名前を指定します。
属性
name
属性は必須で、オプションの属性はありません。
例
例30-6は、XPATHを使用してパラメータの値を取得し、XMLで表示します。
例30-6 パラメータ値の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>
用途
ポストされたXML文書をXSQLページに挿入します。XML文書ではなくHTML形式をポストした場合、挿入されるXMLは、<xsql:include-request-params>
アクションによって挿入されるものと類似したものになります。
構文
このアクションの構文は、次のとおりです。
<xsql:include-posted-xml/>
属性
なし。
例
例30-7は、ポストされたXML文書を挿入するサンプルXSQLページを示します。
用途
リクエスト内のすべてのパラメータのXML表示をデータグラムに挿入します。ページのリクエスト時、ページ内のアクション・ハンドラ要素は、リクエストに使用可能なパラメータを示すXML要素のツリーに置き換えられます。
この方法は、関連付けられたXSLTスタイルシートがXPath式を使用してリクエスト・パラメータ値を参照する必要がある場合に有効です。
使用上の注意
XSQLサーブレットを使用してページを処理する場合、挿入されるXMLの形式は例30-8のようになります。
例30-8 リクエスト・パラメータの挿入
<request> <parameters> <paramname>value1</paramname> <ParamName2>value2</ParamName2> ... </parameters> <session> <sessVarName>value1</sessVarName> ... </session> <cookies> <cookieName>value1</cookieName> ... </cookies> </request>
XSQLコマンドライン・ユーティリティまたはXSQLRequest
クラスを使用する場合、XMLの形式は例30-11のようになります。
例30-9 リクエスト・パラメータの挿入
<request> <parameters> <paramname>value1</paramname> <ParamName2>value2</ParamName2> ... </parameters> </request>
この方法では、値が<parameters>
、<session>
または<cookies>
の子要素であるため、リクエスト・パラメータとセッション・パラメータまたはCookieを識別できます。
構文
このアクションの構文は、次のとおりです。
<xsql:include-request-params/>
属性
なし。
例
例30-10に、すべてのリクエスト・パラメータをデータ・ページに挿入するサンプルXSQLページを示します。
例30-10 リクエスト・パラメータの挿入
<?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が存在するかどうかに基づいて出力形式を選択します。例30-11に、スタイルシートの一部分を示します。
用途
ローカル・リソース、リモート・リソースまたはデータベース・ドリブンのXMLリソースのXMLコンテンツをデータグラムに挿入します。リソースは、URLまたはSQL文で指定できます。サーバーは、静的XMLファイルまたはサーブレットや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文は、相互に排他的です。どちらか一方が指定されている場合は、他方を指定できません。
属性
表30-7に、このアクションがサポートする属性を示します。太字の属性は必須です。
表30-7 <xsql:include-xml>の属性
属性名 | 説明 |
---|---|
href="URL" |
挿入するXMLリソースの絶対URL、相対URLまたはパラメータ化されたURL。リソースには静的ファイルの動的ソースを指定できます。 |
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらの名前の値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
例
例30-12は、データベース問合せにより取得したXML文書を挿入します。このXMLコンテンツは、ユーザー定義型のCLOB
値メンバー・フィールドです。挿入するXMLは、XMLType
ではなく、VARCHAR2
またはCLOB
の列から取得する必要があります。
用途
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"/>
属性
表30-8に、このアクションがサポートする属性を示します。太字の属性は必須です。それ以外の属性はオプションです。
表30-8 <xsql:include-xsql>の属性
属性名 | 説明 |
---|---|
href="string" |
挿入するXSQLページの相対URLまたは絶対URL。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列 |
reparse = "boolean"
|
挿入されたXSQLページの出力を挿入前に再解析するかどうかを指定します。有効値は、 この属性は、挿入側のページが要素として処理する必要があるXML文書のフラグメントのテキストを、挿入されたXSQLページが選択している場合に有効です。 |
例
例30-13は、ディスカッション・フォーラムのカテゴリを示すXSQLページを表示します。
例30-13 Categories.xsql
<?xml version="1.0"?> <xsql:query connection="demo" xmlns:xsql="urn:oracle-xsql"> SELECT name FROM categories ORDER BY name </xsql:query>
例30-14に、例30-13のページの結果を、現行のフォーラムで最新のトピック10個を示すページに挿入する方法を示します。
例30-14 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ページを作成することです。例30-15は、Categories.xsql
を集計し、cats-as-html.xsl
スタイルシートを適用するXSQLページを示します。
例30-15 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"/>
例30-16は、Categories.xsql
を集計し、cats-as-html.xsl
スタイルシートを適用してワイヤレス・デバイスに配信するXSQLページを示します。
用途
パラメータの値を表またはビューに挿入します。このタグは、クライアントが整形式の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"/>
属性
表30-9に、<xsql:insert-param>
アクションに対して使用できるオプションの属性を示します。
表30-9 <xsql:insert-param>の属性
属性名 | 説明 |
---|---|
name="string" |
挿入されるXMLを値に含むパラメータの名前。 |
table="string" |
XMLデータの挿入に使用する表、ビューまたはシノニムの名前。 |
transform = "URL"
|
挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。 |
columns = "string"
|
値を挿入する1つ以上の列名のリスト。指定する列名は空白またはカンマで区切ります。列名を指定すると、指定された列のみが挿入されます。列名を指定しない場合は、すべての列が挿入され、値がXML文書に表示されない列にはNULL値が指定されます。 |
commit = "boolean"
|
|
commit-batch-size = "integer"
|
0(ゼロ)以外の正数である |
date-format = "string"
|
挿入中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、 |
例
例30-17は、データベースに挿入するHTMLフォーム・パラメータxmlfield
の内容を解析および変換します。
用途
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文書を特定の表に対して適切な正規の形式に変換できます。結果として戻る正規のXMLがXSUで挿入されます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *
問合せからのXML出力の1行によって指定されます。
使用上の注意
データベース・ビューをINSERT
のターゲットにする場合、そのビューに対するINSTEAD OF INSERT
トリガーを作成し、ポストされたデータの処理をさらに自動化できます。たとえば、ビューのINSTEAD OF INSERT
トリガーは、PL/SQLを使用してレコードの有無を確認し、その確認結果に応じてINSERT
またはUPDATE
のどちらを実行するかを効果的に選択できます。
構文
このアクションの構文は、次のとおりです。
<xsql:insert-request table="table"/>
属性
表30-10に、<xsql:insert-request>
アクションに対して使用できるオプションの属性を示します。
表30-10 <xsql:insert-request>の属性
属性名 | 説明 |
---|---|
table = "string" |
XMLデータの挿入に使用する表、ビューまたはシノニムの名前。 |
transform = "URL"
|
挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。 |
columns = "string"
|
挿入されるドキュメントを正規のROWSET/ROW形式に変換するために使用するXSLT変換の相対URLまたは絶対URL。 |
commit = "boolean"
|
|
commit-batch-size = "integer"
|
0(ゼロ)以外の正数である |
date-format = "string"
|
挿入中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列 |
例
例30-18は、挿入用にポストされたXML文書またはHTMLフォームのコンテンツを解析および変換します。
用途
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>
アクション・ハンドラ要素の場合と同じです。
属性
表30-11に示すオプションの属性を指定すると、<xsql:query>
アクションによって取得されるデータおよび生成されるXMLを様々な面で制御できます。
表30-11 <xsql:query>の属性
属性名 | 説明 |
---|---|
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
date-format = "string"
|
問合せ中のXML内の書式化された日付列と属性の値に対して使用する日付書式マスク。有効値は |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
error-statement = "boolean"
|
|
fetch-size = "integer"
|
データベース・ラウンドトリップごとにフェッチするレコードの数。指定しない場合は、 |
id-attribute = "string"
|
結果セット内の各行を一意に識別するためのデフォルトの |
id-attribute-column = "string"
|
結果セット内の列の大/小文字を区別した名前。この値は、行IDの属性値として各行に指定する必要があります。デフォルトでは、行カウントが行IDの属性値として使用されます。 |
include-schema = "boolean"
|
|
max-rows = "integer"
|
フェッチする行の最大数。オプションで、 |
null-indicator = "boolean"
|
|
row-element = "string"
|
問合せ結果の |
rowset-element = "string"
|
問合せ結果の |
skip-rows = "integer"
|
結果セットから行をフェッチする前にスキップする行の数。 |
tag-case = "string"
|
有効値は、 |
例
例30-20に、単純なXSQLページを示します。
例30-19 Hello World
<?xml version="1.0"?> <xsql:query connection="xmlbook" xmlns:xsql="urn:oracle-xsql"> SELECT 'Hello, World!' AS text FROM DUAL</xsql:query>
例30-20をhello.xsql
という名前で保存し、ブラウザで実行すると、次のXMLが戻されます。
<?xml version = '1.0'?> <ROWSET> <ROW num="1"> <TEXT>Hello, World!</TEXT> </ROW> </ROWSET>
デフォルトでは、問合せによって生成されたXMLはその結果セットの列構造を反映し、要素名は列名と一致します。次のようなネストした構造を持つ、結果内の列は、その構造を反映するネストした要素を生成します。
オブジェクト型
コレクション型
CURSOR式
異なる型の列を含み、1行を戻す典型的な問合せの結果は、例30-20のようになる場合があります。
例30-20 ネストした構造の例
<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要素には無効な名前を持つ列に対しては必須です。
たとえば、例30-21の<xsql:query>
アクションでは、計算された式のデフォルト列名が無効なXML要素名であるため、エラーが発生します。
例30-21 エラーが発生する問合せ
<?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>
この問題は、例30-22のような列別名を使用して解決できます。
用途
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
を使用できないことを除き、表30-11に示す<xsql:query>
アクションの属性と同じです。
例
PL/SQLの動的SQL機能を使用すると、結果セットへのカーソル・ハンドルをXSQL Page Processorに戻す前に、ファンクションで条件付きの動的問合せを作成できます。ファンクションの戻り値はREF
CURSOR
型である必要があります。例30-23のPL/SQLパッケージについて考えてみます。
例30-23 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>
は、例30-24の構文によって、このファンクションが戻したREF
CURSOR
の動的結果を挿入できます。
用途
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の数と一致している必要があります。一致していない場合は、エラー・メッセージが戻されます。
属性
表30-12に、このアクションがサポートする属性を示します。太字の属性は必須です。その他はすべてオプションです。
表30-12 <xsql:set-cookie>の属性
属性名 | 説明 |
---|---|
name = "string" |
値を設定するCookieの名前。 |
names = "string string ..." |
値を設定するCookie名を空白またはカンマで区切ったリスト。 |
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
domain = "string"
|
Cookieの値が有効で読取り可能なドメイン。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
ignore-empty-value = "boolean"
|
Cookieに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、 |
immediate = "boolean"
|
Cookieの割当てを現在のページにすぐに表示するかどうかを指定します。通常、現行のリクエストで設定されたCookieは、ブラウザが後続のリクエストでCookieをサーバーに送信するまでは、表示されません。有効値は、 |
max-age = "integer"
|
Cookieの存続期間の最大値(秒)を設定します。デフォルトでは、Cookieが現行ブラウザ・セッションの終了時に期限切れになるように設定されます。 |
only-if-unset = "boolean"
|
Cookieが存在しない場合にのみCookieを割り当てるかどうかを指定します。有効値は、 |
path = "string"
|
Cookieの値が有効で読取り可能なドメイン内の相対URLパス。パスが明示的に設定されていない場合は、デフォルトで、そのCookieを作成するドキュメントのURLパスに設定されます。 |
value = "string"
|
Cookieに割り当てる値を設定します。 |
例
例30-25は、HTTP Cookieにパラメータchoice
の値を設定します。
例30-25 Cookieへのパラメータ値の設定
<?xml version="1.0"?> <xsql:set-cookie name="last_selection" value="{@choice}" xmlns:xsql="urn:oracle-xsql"/>
例30-3は、HTTP Cookieにデータベースから選択した値を設定します。
例30-26 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>
例30-4は、1つのSELECT
文の結果に基づいて3つのCookieを設定します。
用途
ページのプライベート・パラメータの値を設定します。この値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、別の方法として、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文は、相互に排他的です。
属性
表30-13に、このアクションがサポートする属性を示します。太字の属性は必須です。その他はすべてオプションです。
表30-13 <xsql:set-page-param>の属性
属性名 | 説明 |
---|---|
name = "string" |
値を設定する、ページのプライベート・パラメータの名前。 |
names = "string string ..." |
値を設定するページ・パラメータ名を空白またはカンマで区切ったリスト。 |
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。これらのパラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
ignore-empty-value = "boolean"
|
ページ・レベルのパラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、 |
quote-array-values = "boolean"
|
パラメータ名が単一の値のパラメータ名(たとえば、 |
treat-list-as-array = "boolean"
|
パラメータに割り当てられた文字列値を、割当て前に別の値の配列にトークン化するかどうかを指定します。文字列中にカンマが存在する場合、トークンの区切りにそのカンマが使用されます。それ以外の場合は、空白が使用されます。有効値は、 |
value = "string"
|
パラメータに割り当てる値を設定します。 |
xpath = "XPathExpression"
|
XSQL Page ProcessorにポストされたXML文書またはHTML形式に対して評価されたXPath式に、パラメータの値を設定します。 |
例
例30-28は、単一のSQL文の結果に基づいて複数のパラメータ値を設定します。
例30-28 複数のページ・パラメータの設定
<?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>
例30-29は、ページ・レベルのパラメータにデータベースから選択した値を設定し、xsql:query
属性の値として使用します。
例30-29 データベースで生成した値のパラメータへの設定
<?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>
用途
HTTPセッション・レベルのパラメータの値を設定します。セッション・レベルのパラメータの値は、現行ブラウザ・ユーザーのHTTPセッションの存続期間中、存続します。HTTPセッションは、Webサーバーによって制御されます。この値には、静的テキストと他のパラメータ値を組み合せて指定できます。また、SQLのSELECT
文の結果から指定することもできます。
この機能はJavaサーブレットに固有であるため、このアクションは、それが使用されているXSQLページがXSQLサーブレットによって処理されている場合にのみ有効です。このアクションは、XSQLコマンドライン・ユーティリティまたはXSQLRequest
プログラムAPIによって処理されているXSQLページで使用した場合は、何もしません。
使用上の注意
SQL文を使用する方法では、単一行が結果セットからフェッチされ、パラメータに最初の列の値が割り当てられます。この使用方法では、この使用方法を適用する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文は、相互に排他的です。
属性
表30-14に、このアクションがサポートするオプションの属性を示します。太字の属性は必須です。その他はすべてオプションです。
表30-14 <xsql:set-session-param>の属性
属性名 | 説明 |
---|---|
name = "string" |
値を設定するセッション・レベルの変数の名前。 |
names = "string string ..." |
値を設定するセッション・パラメータ名を空白またはカンマで区切ったリスト。 |
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。パラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
ignore-empty-value = "boolean"
|
セッション・レベルのパラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、 |
only-if-unset = "boolean"
|
セッション変数が存在しない場合にのみセッション変数を割り当てるかどうかを指定します。有効値は、 |
quote-array-values = "boolean"
|
パラメータ名が単一の値のパラメータ名(たとえば、 |
treat-list-as-array = "boolean"
|
パラメータに割り当てられた文字列値を、割当て前に別の値の配列にトークン化するかどうかを指定します。文字列中にカンマが存在する場合、トークンの区切りにそのカンマが使用されます。それ以外の場合は、空白が使用されます。有効値は、 |
value = "string"
|
パラメータに割り当てる値を設定します。 |
例
例30-30は、単一のSELECT
文の結果に基づいて複数のセッション・パラメータ値を設定します。
例30-30 セッション・パラメータの設定
<?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>
用途
最上位の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文は、相互に排他的です。
属性
表30-15に、このアクションがサポートするオプションの属性を示します。太字の属性は必須です。その他はすべてオプションです。
表30-15 <xsql:set-stylesheet-param>の属性
属性名 | 説明 |
---|---|
name = "string" |
値を設定する最上位のスタイルシート・パラメータの名前。 |
names = "string string ..." |
値を設定する最上位のスタイルシート・パラメータ名を空白またはカンマで区切ったリスト。 |
bind-params = "string"
|
順序付けられ、空白で区切られた1つ以上のXSQLパラメータ名のリスト。パラメータの値は、SQL文内の該当する順序位置にあるJDBCバインド変数にバインドするために使用されます。 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、文字列' |
ignore-empty-value = "boolean"
|
スタイルシート・パラメータに割当て中の値が空の文字列である場合に、その割当てを無視するかどうかを指定します。有効値は、 |
value = "string"
|
パラメータに割り当てる値を設定します。 |
例
例30-31は、スタイルシートを関連付け、<xsql:set-stylesheet-param>
アクション・ハンドラ要素を使用して、XSQLページ・パラメータp_table
の値を最上位のXSLTスタイルシート・パラメータtable
に割り当てます。
例30-31 スタイルシート・パラメータの設定
<?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>
用途
XML文書またはHTMLフォームからポストされたデータを受け入れ、XML SQL Utility(XSU)を使用して、ターゲット表またはビューから正規の形式のXML文書のコンテンツを更新します。
XSUとXSLTを組み合せると、XML文書を特定の表に対して適切な正規の形式に変換できます。変換後、結果として戻る正規のXMLをXSUで更新できます。特定のデータベース表では、正規のXML形式は、その表に対するSELECT *
問合せからのXML出力の1行によって指定されます。
構文
このアクションの構文は、次のとおりです。
<xsql:update-request table="table_name"/>
属性
表30-3に、<xsql:update-request>
アクションに対して使用できる属性を示します。太字の属性は必須です。
表30-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"
|
|
commit-batch-size = "integer"
|
0(ゼロ)以外の正数である |
date-format = "string"
|
更新中のXML内の日付フィールド値を解析するために使用する日付書式マスク。有効値は、 |
error-param = "string"
|
ページのプライベート・パラメータの名前。このアクションの処理中に致命的でないエラーが発生した場合は、 |
例
例30-32は、更新用にポストされたXML文書またはHTMLフォームのコンテンツを解析および変換します。