OracleでXMLを活用する
XSQLプログラミング入門
第2回 XSQLタグの機能を使う
(4/4ページ)
他のXML文書やXSQL出力をインポートするタグ <xsql:include-xml>, <xsql:include-xsql> |
. <xsql:include-xml>は単純に他のXML文書をXSQL文書内に取り込むときに使用します。 取り込むXML文書はhref引数として渡されます。
単にXML文書を取り込むだけでは面白くないでしょうから、例えば、MY_PAGEという表が、ユーザーごとのXML文書のURLをPAGE列に入れていたとします。すると次のXSQL文書で、そのXML文書がXSQL文書内に取り込まれることになります。
<xsql:set-page-param name="page> |
<xsql:include-xsql>タグも、同様にXSQL文書を取り込むものです。これらはXSQL文書のコンポーネント化を進める上で大変便利です。
その他の便利なXSQLタグ <xsql:include-request-params>, <xsql:set-page-param>, <xsql:set-coookie>, <xsql:set-session-param>, <xsql:set-stylesheet-param> |
■HTTPパラメータを処理する
<xsql:include-request-params>タグは、HTTPパラメータをXSLT上で処理するのに大変便利です。このタグには、Attribute(属性)はありません。
パラメータを出力するXSQLプログラム<?xml version='1.0' encoding="Shift_JIS"?> |
このXSQL文書をパラメータ"p_subject1=English"と"p_subject2=Math"で呼び出してみると以下のような出力を得ることができます。
<?xml version="1.0" encoding="Shift_JIS"
?> |
では今度はパラメータの名前が同じ場合、たとえば"p_subject=English"と"p_subject=Math"で呼び出してみます。
<?xml version="1.0" encoding="Shift_JIS"
?> |
結果をご覧になっていただくとお分かりのように<row>というエレメントが追加されパラメターはその子どものエレメントとなり構造化されて表示されるようになりました。
■パラメータの設定
<xsql:set-page-param>は、このタグ以降に書かれたタグで使えるパラメータを設定することができます。
引数名 | 引数値 | 役割 |
Name | 文字列 | 設定するパラメターの名前。 |
ignore-empty-value | bool値 (yes/no) |
設定するパラメターの値が空のとき無視するかどうかを設定します。 デフォルトは"no"です。 |
Value | 文字列 | QUERYを使用しないで直接パラメターを設定するときにつかわれます。 |
例えば、
パラメータを代入する<xsql:set-page-param name="v_boss"> |
パラメータを利用したプログラム<xsql:query> |
はじめのSELECT文ではパラメター"v_boss"にSELECT文の結果を代入します。もし値がNULL値でなければ次の<xsql:query>内のSELECT文の条件で使用されます。(NULL
値の場合はQUERYのエラーが出ます)。このXSQLの出力結果は"p_empno"で指定された従業員の上司のレコードだけを(もちろんもっと簡単な方法があるのですが)表示します。
またこのように<xsql:set-page-param>で設定されたパラメータは、設定された後のXSQLタグすべてで何回でも有効です。
■セッションの設定
<xsql:set-session-param>
引数名 | 引数値 | 役割 |
Name | 文字列 | 設定するセッション値の名前。 |
ignore-empty-value | bool値 (yes/no) | 設定するセッション値が空のとき無視するかどうかを設定します。 デフォルトは"no"です。 |
Value | 文字列 | QUERYを使用しないで直接パラメターを設定するときにつかわれます。 |
このタグを有効に使用するにはセッション情報を格納する表を用意するかまたはユーザー表の中にセッション情報を格納する列を作ったほうがよいでしょう。
CREATE TABLE SESSIONS <?xml version='1.0' encoding="Shift_JIS"?> |
ここで注意しないといけないことは現在のところSESSIONは日本語は通りません。ですから値にはASCII文字列のみ使用可能になっています。日本語などが値に代入された場合、'?????'というような文字列で返されます。
<?xml version="1.0" encoding="Shift_JIS"
?> |
■クッキーの設定
<xsql:set-cookie>はCookieを設定するときに使われます。
引数名 | 引数値 | 役割 |
Name | 文字列 | 設定するクッキーの名前 |
Domain | 文字列 | 設定するクッキーが有効なドメインを指定します。 もし設定されていない場合はページの存在するフルドメインになります |
ignore-empty-value | bool値 (yes/no) |
設定するクッキーの値が空のとき無視するかどうかを設定します。 デフォルトは"no"です |
max-age | 整数 | クッキーが有効な時間を秒単位で設定します。デフォルトはユーザーがブラウザーのセッションを終えるまでです |
only-if-unset | bool値 (yes/no) | クッキーを上書きするかどうかを設定します。デフォルトは"no"すなわち上書きするになっています |
Path | 文字列 | クッキーが有効なPATHを設定します。設定されていなければクッキーを設定したページのものがしようされます |
Value | 文字列 | QUERYを使用しないで直接パラメターを設定するときにつかわれます |
クッキーをセットするXSQLプログラム<?xml version='1.0' encoding="Shift_JIS"?> |
このページでセットされた"KEY" Cookieは/xsql以下のパスで100秒間だけ有効です。<xsql:include-request-params/>タグで呼び出すと以下のような出力が得られます。
クッキーの内容<?xml version="1.0" encoding="Shift_JIS"
?> |
■スタイルシートに実行結果を渡す
<xsql:set-stylesheet-param>はスタイルシートにXSQLプログラムの実行で得られた結果を渡したいときに使用します。 たとえば、test_set_stylesheet.xsqlという次のファイルがあります。 ここでは“emps”というパラメ-タにEMP表から従業員数を取り出して代入しています。<xsql:set-stylesheet-pram>でこの“emps”パラメターをtest_set_stylesheet.xslに渡しています。
スタイルシートに検索結果を渡すXSQLプログラム
|
具体的にこの"emps"パラメターをスタイルシート側で取得するには<xsl:param name="emps"/>を<xsl:stylesheet>のすぐあとぐらいに書いておく必要がありますのでご注意ください。
結果が渡されるスタイルシートの例
|
急ぎ足でしたが、これでXSQLタグの使い方をご理解いただけたと思います。もちろん、ここに掲載したものは基本ですし、XSLTと組み合わせることで、よりパワフルなアプリケーションを開発することができるのは言うまでもありません。また、都合上ここでは書けなかったこともあることは否めません、XSQLリリースノートver.1.0.0やXSQLのDEMOなどのソースをご覧になって更なる技術を身につけてください。
次回(最終回)は、Javaでのカスタムアクションハンドラーの作り方について説明します。
目次 |
1ページ 主要XSQLタグの概要 XML形式への出力言語 DataをDBから取り出すときに使用するXSQLタグ XSQLでデータベースを検索する 引数を用いた動的な検索 2ページ 動的な検索も可能に 該当レコードがないときに実行される文 カーソルの扱い オブジェクトデータの取り扱い 3ページ Dataを挿入または変更するときに使用するXSQLタグ INSERT文を実行する ストアドプロシージャを実行する Webフォームからデータ入力する(1) Webフォームからデータ入力する(2) 4ページ 他のXML文書やXSQL出力をインポートするタグ その他の便利なXSQLタグ HTTPパラメータを処理する パラメータの設定 セッションの設定 クッキーの設定 スタイルシートに実行結果を渡す |
「連載 XSQLプログラミング入門」 |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|