Oracle WebCenter Sitesは、コンテンツを管理するのみでなく、多くの有用なタスクを管理者のかわりに処理します。これらのタスクとしては、WebページやWebページの断片(ページレット)をWebCenter Sitesのキャッシュに格納することや、Webサイトの訪問者に古いページが表示されないようにこれらのキャッシュを管理することがあげられます。WebCenter Sitesがこれらの処理を実行できるためには、WebCenter SitesのタグとJavaメソッドを使用してコーディングする必要があります。
WebCenter Sitesページは、様々なエレメント・アセットとテンプレート・アセットで構成されています。エレメント・アセットとは、WebCenter Sitesデータベースからのパッケージのコンテンツを取得したり、古くなったアイテムをデータベースから削除するなどのタスクを実行するコードのブロックです。テンプレート・アセットは一般に、Webページのコンテンツを書式設定するために使用されます。エレメントとテンプレートは、HTML、XML、JSP、CSS、JavaScriptなどのいくつかのスクリプト言語とマークアップ言語で記述できます。ただし、WebCenter Sitesが解釈できるのはXMLとJSPのみです。
この章では、WebCenter Sitesを使用したプログラミングの概要を示します。次の項で構成されます。
|
注意: WebCenter Sites 11gリリース1 (11.1.1.8.0)では、SOAPベースのWebサービスの機能が非推奨になりました。この機能は、RESTサービスに置き換えられました。 |
作成するエレメントまたはテンプレートの役割に基づいて、コーディング言語やマークアップ言語を選択してください。たとえば、ページ・レイアウトにはHTMLとXMLを使用し、ロジックにはJSPとJavaを使用するのが一般的です。新聞記事などの動的なコンテンツを表示するエレメントは、通常はXMLまたはJSPで記述してください。その理由は、このようなエレメントはロジックを使用してコンテンツをWebCenter Sitesデータベースから取得するため、WebCenter SitesのXMLタグまたはJSPタグを使用して管理されるからです。
WebCenter SitesではJava APIも用意されており、コーディング言語としてJSPを選択した場合は、このAPIをWebCenter SitesのJSPタグと組み合せて使用します。
次の表では、各言語の最適な使用ケースを示しています。
表4-1 コーディング言語の使用
| コード | 使用するケース |
|---|---|
|
|
エレメントの大部分がテキストで構成されており、ループや条件分岐がほとんど含まれていません。 |
|
|
|
XMLまたはJSPで記述されたエレメントは任意のタイプのエレメントをコールできますが、XMLとJSPを同じエレメント内に混在させることはできません。たとえば、XMLまたはJSPで記述されたエレメントは、HTML、XMLまたはJSPで記述された別のエレメントをコールできます。ただし、HTMLで記述されたエレメントは、XMLまたはJSPで記述されたエレメントをコールすることはできません。
Oracle WebCenter Sitesプロジェクトのためにコーディングする場合は、Oracle WebCenter Sitesのコンテキスト内でコーディングします。WebCenter Sitesのコンテキストでは、WebCenter Sitesを構成するJavaサーブレットにアクセスできるとともに、WebCenter Sitesの機能へのアクセスを可能にするメソッドとタグを持つWebCenter Sites Javaオブジェクトにアクセスできます。
どの言語を使用してプロジェクトをコーディングする場合でも、WebCenter Sitesのコンテキスト内でコーディングします。WebCenter SitesのXMLタグとJSPタグは、WebCenter SitesのJavaオブジェクト用の簡単に使用できるインタフェースを提供するため、Javaの経験がほとんどまたはまったくないWebデザイナでも、WebCenter SitesのWebページを作成できます。
Oracle WebCenter Sitesのためにコーディングしている場合は、Interface to WebCenter Sites (ICS)オブジェクトのメソッドとタグに頻繁にアクセスします。ICSオブジェクトは、WebCenter Sitesの中核機能のいくつかをカプセル化して、WebCenter Sitesツリーを制御するサーブレット(TreeManagerサーブレット)と、データベースへのデータ入力を制御するサーブレット(CatalogManagerサーブレット)へのアクセスを可能にします。
ICSのメソッドとタグを使用して、変数を作成および表示したり、if/then文を使用して、指定された条件に基づいてタスクを実行することもできます。ICSオブジェクトのメソッドとタグの詳細なリストについては、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
WebCenter Sitesのそれぞれのエレメントやテンプレートの先頭と末尾には、ftcsタグが配置されています。このタグは、WebCenter Sitesのコンテキストを作成して、開始と終了のftcsタグの内側に含まれているコードはWebCenter Sitesのタグを格納してICSメソッドにアクセスすることを、WebCenter Sitesに通知します。
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用してエレメントとテンプレートを作成した場合は、開始と終了のftcsタグが標準ディレクティブの後ろに自動的に追加されます。コーディングは、開始と終了のftcsタグの内側で行う必要があり、これらのタグの外側にコードがあってもWebCenter Sitesでは認識されません。
他の方法を使用してエレメントとテンプレートのコードを作成する場合は、ディレクティブの後ろに開始ftcsタグを追加して、終了ftcsタグをコードの最終行として使用する必要があります。
JSPプログラマは、ディレクティブ、アクション、JSPオブジェクトなどの一連の標準ツールを自由に使用できます。WebCenter Sites内でJSPを使用してプログラミングする場合は、これらの機能の多くにアクセスできます。ただし、場合によっては、JSPのディレクティブやアクションのかわりにWebCenter Sitesのタグを使用することや、JSPの暗黙オブジェクトのいずれかのかわりにWebCenter Sitesのオブジェクトにアクセスすることが必要になります。
次の各項では、標準のJSPとWebCenter SitesのJSPの違いを詳述しているとともに、標準のJSP機能とWebCenter Sitesのタグやメソッドとの対応関係を示しています。
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerを使用して、テンプレート・アセット、CSElementアセットまたは非アセット・エレメントを作成する場合は、WebCenter Sitesによってそのエレメントまたはテンプレートに標準先頭部が自動的に追加されます。
Oracle WebCenter Sites Explorer内のJSPエレメントの標準先頭部は次のとおりです。
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld" %> <%@ taglib prefix="ics" uri="futuretense_cs/ics.tld" %> <%@ taglib prefix="satellite" uri="futuretense_cs/satellite.tld" %> <%// // elementName // // INPUT // // OUTPUT //%> <%@ page import="COM.FutureTense.Interfaces.FTValList" %> <%@ page import="COM.FutureTense.Interfaces.ICS" %> <%@ page import="COM.FutureTense.Interfaces.IList" %> <%@ page import="COM.FutureTense.Interfaces.Utilities" %> <%@ page import="COM.FutureTense.Util.ftErrors" %> <%@ page import="COM.FutureTense.Util.ftMessage"%> <cs:ftcs> <!-- user code here --> </cs:ftcs>
WebCenter Sitesユーザー・インタフェースを使用してテンプレート・アセットとCSElementアセットを作成する場合も、このコード例のような標準先頭部が表示されます。これらのアセットの標準先頭部は、ベーシック・アセットとともに使用するための追加のタグ・ライブラリをインポートして、テンプレート・アセットおよびCSElementアセットとこれらのアセットによってレンダリングされるコンテンツの間の依存関係をログに記録するタグを組み込みます。
Oracle WebCenter Sites ExplorerやWebCenter Sitesユーザー・インタフェース以外のツールを使用してエレメントとテンプレートを作成する場合は、この標準先頭部をコード内にまるごとコピーする必要があります。
次の各項では、Oracle WebCenter Sites Explorerの標準先頭部について説明します。
次のtaglibディレクティブは、WebCenter Sitesで使用するベース・タグ・ライブラリをインポートします。WebCenter Sitesユーザー・インタフェースを使用してテンプレート・アセットとCSElementアセットを作成する場合は、追加のtaglibディレクティブがシード・コード内に表示されます。
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld" %> <%@ taglib prefix="ics" uri="futuretense_cs/ics.tld" %> <%@ taglib prefix="satellite" uri="futuretense_cs/satellite.tld" %>
1つ目のディレクティブは、FTCSコンテキストを作成するftcs1_0タグをインポートします。これらのタグは、作成したテンプレートまたはエレメントごとに使用され、それらのタグで囲まれたコードがWebCenter Sitesで制御されることを示します。
2つ目のディレクティブは、WebCenter Sitesの中核機能へのアクセスを可能にするicsタグをインポートします。
3つ目のディレクティブは、Satellite Serverで使用するためのsatelliteタグをインポートします。
これらのタグ・ライブラリの詳細は、第4.3.8項「Oracle WebCenter Sitesのタグ・ライブラリ」を参照してください。
これらのタグ・ライブラリに含まれている一般的なタグについては、第4.5項「WebCenter Sitesのタグ」を参照してください。
これらのデフォルト内容にtaglibディレクティブを追加するには、OpenMarket/Xcelerate/AssetType/Template/ModelJsp.xmlファイルを変更して保存します。
次のpageディレクティブは、WebCenter Sitesで使用するベースJavaインタフェースをインポートします。
<%@ page import="COM.FutureTense.Interfaces.FTValList" %> <%@ page import="COM.FutureTense.Interfaces.ICS" %> <%@ page import="COM.FutureTense.Interfaces.IList" %> <%@ page import="COM.FutureTense.Interfaces.Utilities" %> <%@ page import="COM.FutureTense.Util.ftErrors" %> <%@ page import="COM.FutureTense.Util.ftMessage"%>
1つ目のpageディレクティブは、FTValListインタフェースをインポートします。
このインタフェースは、CatalogManagerやTreeManagerなど、WebCenter Sitesのサブシステムに引数を渡すために使用する名前と値のペアのリストを作成します。
2つ目のpageディレクティブは、ICSインタフェースをインポートします。このインタフェースは、WebCenter Sitesの中核機能へのアクセスを可能にします。
3つ目のpageディレクティブは、IListインタフェースをインポートします。このインタフェースには、WebCenter Sitesの問合せオブジェクトやリスト・オブジェクト内の行にアクセスするためのメソッドが含まれています。このインタフェースには、WebCenter SitesのXMLページ内で使用するためのリスト・オブジェクトを作成および登録しようとする際にサード・パーティが実装する必要があるメソッドも含まれています。
4つ目のpageディレクティブは、Utilitiesインタフェースをインポートします。このインタフェースは、日付の書式設定、ファイルの読み書き、電子メールの送信など、いくつかの一般的なタスクのためのシンプルなインタフェースを提供します。
5つ目のpageディレクティブは、エラー・コードが含まれたftErrorsクラスをインポートします。
6つ目のpageディレクティブは、WebCenter Sitesで使用されるエラー・メッセージが含まれたftMessageクラスをインポートします。
JSPエレメント用の標準ディレクティブにpageディレクティブを追加するには、OpenMarket/Xcelerate/AssetType/Template/ModelJsp.xmlファイルを変更して保存します。
JSPでは、開発者が使用できる暗黙オブジェクトがいくつか用意されています。ただし、WebCenter Sitesのコンテキスト内では、WebCenter Sitesのオブジェクトを扱うことが多いため、JSPの暗黙オブジェクトを使用するかわりにWebCenter SitesのJSPタグとJavaメソッドを使用して、これらのWebCenter Sitesのオブジェクトにアクセスする必要があります。
次の表では、JSPの暗黙オブジェクトおよびこれらのオブジェクトの主要なメソッドと、これらの代替として使用する必要があるWebCenter Sitesのタグやメソッドの対応関係を示しています。
表4-2 JSPの暗黙オブジェクトのマッピング
| オブジェクト | メソッド | WebCenter Sitesのタグやメソッド |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Oracle WebCenter Sitesでは、標準のJSP構文が使用されます。タグをネストする際は(JSPタグのパラメータの値としてJSP式を使用する場合など)、次の例のように必ず一重引用符で式を囲んでください。
name='<%=ics.GetVar("myVariable")%>'
標準のJSPでは、開発者はいくつかの種類のアクションを使用できます。次の表では、WebCenter Sitesのタグに置き換える必要のあるアクションと、通常どおり使用できるアクションを示しています。
表4-3 JSPのアクションとWebCenter Sitesのタグの比較
| アクション | WebCenter Sites |
|---|---|
|
|
|
|
|
これは、カスタムJava Beanに使用します。WebCenter Sitesのプロパティのいずれかの値を探す場合は、 |
|
|
|
|
|
これは、カスタムJavaBean内のプロパティを設定する場合に使用します。WebCenter Sitesのプロパティを設定するには、WebCenter Sitesのプロパティ・エディタを使用します。 |
|
|
これは、カスタムJava Beanに使用します。 |
標準のJSPでは、通常はJSP宣言内で変数を宣言します。WebCenter Sitesでは、ics:setvarタグを使用して、WebCenter Sitesのコンテキスト内で使用できる変数を宣言します。
WebCenter Sitesの変数の詳細は、第4.6項「変数」を参照してください。
スクリプトレットと式は、通常のJSP用法とまったく同じように使用できます。
ただし、WebCenter SitesのJSPタグのパラメータの値として式を使用する場合は、第4.3.3項「構文」で説明しているように、必ず引用符を正しくネストしてください。
Oracle WebCenter Sitesのコンテキスト内でJSPをコーディングする場合は、次の表で概略を説明しているように、ディレクティブの使用についていくつかの注意点があります。
表4-4 JSPのディレクティブとWebCenter Sitesのタグの比較
| ディレクティブ | WebCenter Sites |
|---|---|
|
|
|
|
|
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用してエレメントやテンプレートを作成した場合は、そのエレメントまたはテンプレートに標準のpageディレクティブが自動的に追加されます。 標準のディレクティブに加えて、作成するWebCenter Sitesのエレメントやテンプレートごとに、 ページのコンテンツ・タイプをtext/htmlに設定して、文字セットをUTF-8に設定するには、
|
|
|
WebCenter Sitesでは、作成されるテンプレートとエレメントに使用頻度の高いtaglibディレクティブが自動的に追加されます。 WebCenter Sitesの別のtaglibディレクティブをエレメントやテンプレート・アセットに、必要に応じて追加できます。この表の後に、WebCenter Sitesのタグ・ライブラリを一覧表示しています。 |
WebCenter Sitesでは、WebCenter SitesのAPIの機能に対応する一連のJSPタグ・ライブラリが用意されています。
次の表に、WebCenter Sitesのタグ・ライブラリを一覧表示して、これらの機能を説明します。この表は、ご使用のJSPにどのタグ・ライブラリをインポートするかを決定する際のリファレンスとして使用してください。
表4-5 ベーシック・アセットとフレックス・アセット両方のタグ・ライブラリ
| タグ・ライブラリ | 説明 |
|---|---|
|
|
アクセス制御リストを作成および操作するためのタグ。 |
|
|
年、月、日のフィールドと時間、分、午前/午後のオプション・フィールドで構成される日付を、1970年1月1日0:00 GMTから経過したミリ秒数を表すエポック形式の倍長整数に変換するタグ。dateタグは、倍長整数から日付への変換も行います。 |
|
|
ディレクトリ・サービスのタグ。 |
|
|
FTCSコンテキストを作成するタグ。これらのタグは、作成したテンプレートまたはエレメントごとに使用され、それらのタグで囲まれたコードがWebCenter Sitesで制御されることを示します。 |
|
|
WebCenter Sitesの中核機能へのアクセスを可能にするタグ。これらの機能としては、CatalogManagerとTreeManagerのコマンドや、if/then文のような基本的なコーディング構文などが挙げられます。 |
|
|
Webモード用のタグ。 |
|
|
テキスト文字列をローカライズするためのタグ。 |
|
|
WebCenter Sitesに現在ログインしているユーザーの名前にアクセスして、ディレクトリ・サービス内のユーザー名を操作するタグ。 |
|
|
WebCenter Sitesのオブジェクトを操作するためのタグ。 |
|
|
WebCenter Sitesのプロパティ・ファイルから値を取得するためのタグ。 |
|
|
ベーシック・アセットをレンダリングするタグ。 |
|
|
これらのタグの多くには、同等の機能を持つRENDER版( |
|
|
WebCenter SitesのSOAPタグ。 |
|
|
エレメントのパフォーマンスを特定するためのタイミングを取得および設定するタグ。 |
|
|
ユーザーをWebCenter Sitesにログインさせたり、WebCenter Sitesからログアウトさせたりするためのタグ。 |
|
|
特定タイプのパブリックWebサイトをWebCenter Sitesのページの一部として使用することを可能にするWebサービスのタグ。 |
表4-7 フレックス・アセット用のタグ・ライブラリ
| タグ・ライブラリ | 説明 |
|---|---|
|
|
フレックス・アセットを使用してアセットセットを作成するためのタグ。 |
|
|
フレックス・アセットの属性であるBLOBを取得および操作するためのタグ。 |
|
|
基本的な計算関数とブール関数を提供するタグ。 |
|
|
ショッピング・カート・オブジェクト内のアイテムを追加、削除およびその他の形で操作することを可能にするタグ。 |
|
|
登録済購入者のショッピング・カート・オブジェクトを保管、取得、削除および一覧表示することを可能にするタグ。 |
|
|
訪問者コンテキスト内のオブジェクトにアクセスするタグ。 |
|
|
浮動小数点値と通貨文字列を変換して、通貨文字列の書式設定と端数処理を実行するタグ。 |
|
|
浮動小数点値を様々なロケールの小数オブジェクトとして書式設定するタグ。 |
|
|
IListをハッシュ表としてキャストして、キーに基づいてこのハッシュ表内を検索することを可能にするタグ。 |
|
|
WebCenter Sitesの結果セット・リストを作成するタグ。これらの結果セット・リストは、エレメント全体にわたって他のタグの引数として使用されます。 |
|
|
ロケール・オブジェクトを生成するタグ。このロケール・オブジェクトは、システム内の様々な他のタグの目的のロケールを記述するために使用されます。 |
|
|
各種のタグ(入力リスト内のすべての列の名前を返すタグなど)。 |
|
|
フレックス・アセットのグループ(アセットセット)を制約するための検索状態を作成するタグ。 |
|
|
指定されたセッションに対して格納されたオブジェクトをすべてフラッシュするタグ。 |
|
|
文字列操作を実行するタグ。 |
|
|
テキストを書式設定するタグ。 |
|
|
WebCenter Sitesや他のデータベースから、Webサイト訪問者に関する情報を記録および取得することを可能にする訪問者データ管理タグ。 |
テンプレート開発に使用されるWebCenter Sitesのタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
この項では、WebCenter SitesのXMLの基本事項について説明します。WebCenter SitesのXMLは、標準のXML構文を使用し、futuretense_cs.dtdによって定義されます。WebCenter SitesのJSPタグと同様に、WebCenter SitesのXMLタグは、WebCenter Sitesのサーブレットとオブジェクトへのアクセスを可能にします。
次の各項では、WebCenter SitesのXMLを使用してコーディングする際の注意事項を説明しています。
WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用してテンプレートやエレメントを作成した場合は、WebCenter Sitesによってそのエレメントに次の標準先頭部が自動的に追加されます。
<?xml version="1.0" ?> <!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd"> <ftcs version="1.2"> </ftcs>
他のツールを使用してエレメントやテンプレートを作成する場合は、それらにこのコードをまるごとコピーする必要があります。
次の各項では、この標準先頭部について説明しています。
WebCenter SitesのいずれのXMLテンプレートやXMLエレメントでも、先頭行では次のようにXMLバージョンを設定する必要があります。
<?xml version="1.0"?>
エレメントが実行されるためには、そのエレメントの先頭行は<?xml version="1.0"?>である必要があり、このテキストの前に空白があってはいけません。さらに、この行の末尾に強制改行を入力して、この行を独立した行にする必要もあります。
このテンプレートまたはエレメントのエンコーディングを設定する必要がある場合は、次のようにして設定できます。
<?xml version="1.0" encoding="utf-8"?>
WebCenter SitesのXMLは、futuretense_cs.dtdファイルによって定義されます。XMLバージョン行の直後に次の行を入力することで、コーディング対象のWebCenter Sitesのエレメントまたはテンプレートのそれぞれにこのファイルをインポートする必要があります。
<!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd">
<や>などの記号はXMLの予約文字であるため、このような記号をコンテンツに入力しないでください。たとえば、次のコードでは、テキスト内で小なり記号(<)が使用されているため、XMLパーサーが混乱します。
<P>4 < 7</P>
予約文字のかわりに文字エンティティを使用する必要があります。文字エンティティは&#で始まり、セミコロンで終わります。&#とセミコロンの間には、目的の文字の10進Latin-1 (ASCIIのスーパーセット)値を指定します。たとえば、<記号の10進Latin-1値は60であるため、XMLでの前述の行の正しいコーディング法は次のとおりです。
<P>4 < 7</P>
これらの文字エンティティのリストについては、第4.8項「特殊文字の値」を参照してください。
WebCenter Sitesのタグを処理するXMLパーサーは、それらのタグが構文的に正しいことを確認します。これにより、タグ付け構文エラーに関する見つけにくい問題を発見することが簡単になります。タグ名のスペルミスはエラーとして報告されません。その理由は、XMLパーサーが、すべてのタグ名がDTD内に存在することを要求しないからです。
WebCenter Sitesシステムに対してページが要求され、XML構文エラーが検知されると、元にストリームされる結果には、問題の所在を突き止めるために役立つ有用な情報が格納されます。これらの結果には、全般的なエラー説明が記載されて、その後にエラーの行と列の位置が示されます。たとえば、次のエラーでは無効なパラメータ名が報告されています。
Illegal attribute name NAM Illegal attribute name NAM Location: null(6,11) Context:
次のエラーでは、間違ったタグ・ネストが報告されています。
Close tag IF does not match start tag THEN Close tag IF does not match start tag THEN Location: null(13,3) Context:
XMLパーサーは、ランタイム・エラーも検知します。これらのエラーでは、XMLタグは構文的に正しいですが、処理時に構造のエラーが検知されます。たとえば、次のエラーではARGUMENTの無効な使用が報告されています。
Failed to run template:c:\FutureTense\elements\dan.xml Runtime error Argument invalid [Argument 5] Containing tag: FTCS
WebCenter Sitesでは、WebCenter Sitesとその製品ファミリの様々な機能へのアクセスを可能にする一連の広範なJSPタグとXMLタグが用意されています。これらのタグを、HTML、Java、JavaScript、および独自に作成するカスタム・タグと組み合せて使用して、Webサイトをコーディングします。
この項では、テンプレート・アセットとエレメントで使用される可能性が高いタグについて、概要を示します。WebCenter Sitesのすべてのタグの詳細は、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
ここで説明するタグは、次のように用途別に分けています。
ここでは、WebCenter Sitesのコンテキストを作成するタグを説明しています(このコンテキスト内でコーディングします)。これらのタグは、記述するすべてのテンプレートやエレメントで使用します。
| FTCS (XML) | ftcs1_0:ftcs (JSP) |
|---|---|
|
|
|
FTCSタグは、WebCenter Sitesのコンテキストを作成します。開始FTCSタグはコード内の最初のタグである必要があり、終了FTCSタグはコード内の最後のタグである必要があります。WebCenter Sitesでは、開始と終了のFTCSタグの外側に配置されたコンテンツは認識されません。したがって、これらのタグの外側のコンテンツはキャッシュされず、これらのタグは正しく機能しません。
次のタグは、WebCenter Sites内の変数を処理します。
| CSVAR (XML) | ics:getvar (JSP) |
|---|---|
|
|
|
CSVARは、変数、セッション変数、ビルトインまたはカウンタの値を表示します。
| SETVAR (XML) | ics:setvar (JSP) |
|---|---|
|
|
|
SETVARは、通常のWebCenter Sites変数の値を設定します。この変数の値は、REMOVEVARを使用して明示的に削除されないかぎり、ページ評価の最中は存続します。
| SETSSVAR (XML) | ics:setvar (JSP) |
|---|---|
|
|
|
SETSSVARは、セッション変数を設定します。
| REPLACEALL (XML) | ics:resolvevariables (JSP) |
|---|---|
|
|
|
REPLACEALLとics:resolvevariablesは、複数のWebCenter Sites変数を解決します。つまり、WebCenter Sitesの変数をHTMLタグで使用する場合は、これらのタグを使用してそれらの変数を解決します。
WebCenter Sitesの変数の詳細は、第4.6項「変数」を参照してください。
次のタグを使用して、エレメントまたはテンプレートをコールします。
|
注意: 次で使用されているCACHECONTROLは非推奨になりました。 |
| RENDER.SATELLITEPAGE (XML) | render:satellitepage (JSP) |
|---|---|
|
|
|
RENDER.SATELLITEPAGEは、WebCenter Sitesのページレットを要求して、そのページレットをWebCenter SitesとSatellite Serverの両方でキャッシュします(そのページレットがまだキャッシュ内に存在しない場合)。ページやページレットを個別にキャッシュすることなくコールするには、RENDER.CALLELEMENTタグを使用します。RENDER.SATELLITEPAGEタグはスタックされたスコープを持つため、そのページで使用できる変数は、明示的に渡した変数のみです。
| RENDER.CALLELEMENT (XML) | render:callelement (JSP) |
|---|---|
|
|
|
RENDER.CALLELEMENTタグとRENDER.SATELLITEPAGEタグは、どちらのタグも他のWebCenter Sitesコードをコールするという点で似ていますが、前者はエレメント内のコードをコールし、後者はページ内のコードをコールします。ただし、RENDER.CALLELEMENTによってコールされたコードは、個別のページやページレットとしてSatellite Server上でキャッシュされません。
RENDER.CALLELEMENTを使用して、WebCenter Sitesのコンテンツ・アプリケーション用に記述したエレメントのコンテンツを処理します。この場合、そのエレメントのスコープがスタックされることが求められます。このエレメントはElementCatalog内に存在している必要があります。
| RENDER.GETPAGEURL (XML) | render:getpageurl (JSP) |
|---|---|
|
|
|
このタグは、アセットのURLを作成して、そのアセットに渡された引数をURLエンコードされた文字列に変換して、その文字列をOUTSTRパラメータで指定された変数として返します。rendermodeがexportに設定されている場合は、このタグは、静的HTMLファイルのファイル名を作成します(ただし、動的URLを求めると指定した場合は除きます)。rendermodeがliveに設定されている場合は、このタグは動的URLを作成します。
| RENDER.SATELLITEBLOB (XML) | render:satelliteblob (JSP) |
|---|---|
|
|
|
このタグは、BLOBであるアセットのBlobServerのURLが含まれたHTMLタグを作成します。たとえば、Burlington Financialのサンプル・サイトのイメージ・ファイル・アセットは、WebCenter Sitesデータベースに格納されたBLOBであるため、これらのアセットはBlobServerサーブレットで処理する必要があります。このタグは、指定されたBLOBを検索して書式設定する方法をブラウザに指示するHTMLタグを作成します。
次のタグを使用すると、現在のテンプレートやエレメントの出力をキャッシュするかどうかを制御できます。
| ics.disablecache (XML) | ics:disablecache (JSP) |
|---|---|
|
|
|
ics.disablecacheは、エラー状態の有無をチェックするif/then文と組み合せて使用します。エラーが存在する場合は、結果としてレンダリングされるページはキャッシュされません。ics.disablecacheタグの詳細とコード・サンプルについては、第28.8.2項「間違ったページのキャッシングの防止」を参照してください。
次のタグは、WebCenter Sites内のCookieを設定します。
| satellite.cookie (XML) | satellite:cookie (JSP) |
|---|---|
|
|
|
satellite.cookieは、ユーザーのブラウザ上のCookieを設定します。このタグは、XMLまたはJSPでCookieを設定するための唯一の手段です。
次のタグを使用すると、基本的なプログラミング構文を使用できます。
| IF/THEN/ELSE (XML) | ics:if/ics:then/ics:else (JSP) |
|---|---|
|
|
|
IF、THEN、ELSEでは、条件を設定します。通常は、これらのタグを使用して変数の値を設定します。
| LOOP (XML) | ics:listloop (JSP) |
|---|---|
|
|
|
LOOPとics:listloopは、リスト内のアイテムを反復処理します。すでに述べたように、これらのタグ内に過大な量のコードが含まれている場合は、テンプレートのパフォーマンスが低下します。反復する必要のない文は、できるかぎりLOOPタグの外側に配置してください。
構成上と承認上の依存関係の詳細は、第28.1項「依存性について」を参照してください。
| RENDER.LOGDEP (XML) | render:logdep (JSP) |
|---|---|
|
|
|
テンプレートで、アセットをロードすることなくそのアセットのデータを取得するタグ(ASSET.CHILDRENなど)が使用される場合は、RENDER.LOGDEPタグを使用します。
| RENDER.UNKNOWNDEPS (XML) | render.unknowndeps (JSP) |
|---|---|
|
|
|
ページに問合せが含まれているか、そのページの依存アセットに対する他のなんらかの不確定の接続が含まれている場合は、RENDER.UNKNOWNDEPSタグを使用します。このタグは、依存関係を特定できないという理由で、パブリッシュごとにそのページまたはページレットを再生成させます。このため、このタグはできるだけ使用しないでください。
| RENDER.FILTER (XML) | render:filter (JSP) |
|---|---|
|
|
|
RENDER.FILTERタグを使用して、未承認アセットの有無を確認して、未承認アセットがエクスポートされるページに含まれることを防止します。このタグは、それぞれのアセットIDをApprovedAssetsデータベース表のassetid列と照合することで、単一のアセットまたはアセットのリストをフィルタリングします。エクスポート・レンダリング時は、このタグは、承認ステータスに基づいてパブリッシュ可能な対象をフィルタリングします。ライブ・レンダリング時は、RENDER.FILTERは何の処理も実行しません。このタグは、テンプレート内のアセットのリストに対するデータベース問合せがある場合は常に使用してください。
| ASSET.LOAD (XML) | asset:load (JSP) |
|---|---|
|
|
|
このタグは、データベースに対して特定のアセットについて問い合せてから、そのアセットのデータをメモリー内にオブジェクトとしてロードします。このオブジェクトは、当該セッションがフラッシュされるかそのオブジェクトに割り当てられた名前が上書きされるまで、エレメントで使用可能になります。
ロードされたアセットに割り当てるオブジェクト名のスコープは、グローバルです。エレメントによってオブジェクトが誤って上書きされることを防止するために、必ず一意のオブジェクト名を使用してください。便利なネーミング規則は、エレメント名をアセット名に含めることです。この規則に従って一意のアセット・オブジェクト名を作成する例については、第29.1項「例1: ベーシック・モジュラ・デザイン」を参照してください。
ASSET.LOADは、このタグを使用するテンプレートやエレメントとこのタグによって取得されるアセット・データとの間の依存関係を自動的にログに記録します。
| ASSET.SCATTER (XML) | asset:scatter (JSP) |
|---|---|
|
|
|
このタグは、ASSET.LOADタグを使用してすでに取得(ロード)されているアセット・オブジェクトのすべてのフィールドから値を取得して、これらの値をWebCenter Sitesの変数に変換します。たとえば、オンライン記事のヘッドライン、署名行、本文などを表示するには、このタグを使用して、1回のコールでこれらの値をすべて取得できます。
| ASSET.GET (XML) | asset:get (JSP) |
|---|---|
|
|
|
このタグは、ASSET.LOADタグを使用してすでに取得(ロード)されているアセット・オブジェクトの1つの指定フィールドから値を取得して、その値をWebCenter Sitesの変数に変換します。たとえば、記事のリンクで使用するためにその記事のヘッドラインのみが必要な場合は、このタグを使用してその値だけを取得できます。
| ASSET.CHILDREN (XML) | asset:children (JSP) |
|---|---|
|
|
|
このタグは、AssetRelationTree表に問い合せて、指定されたアセットの子アセットのリストを作成します。このタグを使用して、コレクション内のアセットを取得したり、記事アセットに関連付けられたイメージ・アセットを取得したりします。
RENDER.LOGDEPタグをASSET.CHILDRENと組み合せて使用して、このタグが含まれたエレメントやテンプレートと、ASSET.CHILDRENによって取得されるコンテンツとの間の依存関係をログに記録します。
ASSET.LOADとASSET.CHILDRENはデータベース問合せであり、データベースに対する問合せは時間がかかるため、これらのタグは必要な場合にのみ使用してください。たとえば、ASSET.LOADタグとその後続のASSET.CHILDRENタグの間にエラー・チェック・コードを挿入することもできます。後者のタグは、アセットがASSET.LOADによって返されたかどうかを判定します。アセットが存在しない場合は、ASSET.CHILDRENタグを呼び出す理由はありません。
ASSET.SCATTERコールは、単一のASSET.GETコールよりもはるかに長い時間がかかります。
アセットセット・タグでは、データベースから取得する1つ以上のフレックス・アセットのセットを指定します。
アセットセットから取得できる情報は次のとおりです。
アセットセット内の各フレックス・アセットの1つの属性の値
アセットセット内の各フレックス・アセットの複数の属性の値
アセットセット内のフレックス・アセットのリスト
アセットセット内のフレックス・アセットの数
アセットセット内のすべてのフレックス・アセットの1つの属性の一意の属性値のリスト
アセットセット内のすべてのフレックス・アセットの属性の一意の属性値の数
次の表では、使用頻度の高いアセットセット・タグを説明しています。
| ASSETSET.SETASSET (XML) | assetset:setasset (JSP) |
|---|---|
|
|
|
ASSETSET.SETASSETは、指定された単一のアセットからアセット・セットを作成して、このタグが含まれたテンプレートやエレメントとこのタグによって取得されるコンテンツとの間の構成上の依存関係を定義します。
| ASSETSET.SETSEARCHEDASSETS (XML) | assetset:setsearchedassets (JSP) |
|---|---|
|
|
|
ASSETSET.SETSEARCHEDASSETSは、指定された検索条件によって絞り込まれた特定タイプのすべてのアセットを表すアセットセット・オブジェクトを作成します(この検索条件は、constraintパラメータで指定される検索状態オブジェクトによって表されます)。
このタグは、このタグが含まれたテンプレートやエレメントとアセットセット内の各アセットとの間の構成上の依存関係も規定します。
| ASSETSET.GETMULTIPLEVALUES (XML) | assetset:getmultiplevalues (JSP) |
|---|---|
|
|
|
ASSETSET.GETMULTIPLEVALUESは、複数の属性(および場合によっては複数のアセット)の属性値を複数の指定リスト内に分散します。
ASSETSET.GETMULTIPLEVALUESを使用することが推奨されるのは、固定形式のアセット表を表示しようとしている場合や、単一アセットの多くの属性を取得しようとしている場合です(製品詳細ページなどのために)。
ASSETSET.GETMULTIPLEVALUESの制限事項は次のとおりです。
非外部属性のみを分散できます。
テキスト・タイプの属性は分散できません。
| ASSETSET.GETATTRIBUTEVALUES (XML) | assetset:getattributevalues (JSP) |
|---|---|
|
|
|
ASSETSET.GETATTRIBUTEVALUESは、アセットセットによって表されるアセットの指定された属性の値のリストを取得します。
| ASSETSET.GETASSETLIST (XML) | assetset:getassetlist (JSP) |
|---|---|
|
|
|
ASSETSET.GETASSETLISTは、オプションのソート条件に基づいて、順序付けられたアセット・リストを取得します。得られるリストはassetidとassettypeという2つの列からなり、これらの列は指定された条件に基づいてソートされます。
検索状態タグは、assetsetタグを使用して取得されたアセットをフィルタリングする条件を構成します。
検索状態を構築するには、検索状態によって記述されるフレックス・アセットのリストに対して、制約を追加して絞り込むか、または制約を削除して広げます。
次の表では、使用頻度の高いsearchstateタグを説明しています。
| SEARCHSTATE.CREATE (XML) | searchstate:create (JSP) |
|---|---|
|
|
|
SEARCHSTATE.CREATEは、空の検索状態オブジェクトを作成します。このタグを使用して検索状態の構築を開始する必要があります。
| SEARCHSTATE.ADDSTANDARDCONSTRAINT (XML) | searchstate:addstandardconstraint (JSP) |
|---|---|
|
|
|
SEARCHSTATE.ADDSTANDARDCONSTRAINTは、属性の名前と値の制約を新規または既存の検索状態オブジェクトに追加します。
listパラメータで指定する値のリストによって、属性を制約できます。
| SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINT (XML) | searchstate:addsimplestandardconstraint (JSP) |
|---|---|
|
|
|
SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINTは、属性の名前と単一値の制約を既存の検索状態に追加します。
このタグは、SEARCHSTATE.ADDSTANDARDCONSTRAINTの簡易版です。NAMEで指定されたオブジェクトは、新しい制約を反映して更新されます。当該属性名がすでに検索状態内にある場合は、新しい制約によって古い制約が置換されます。
| SEARCHSTATE.ADDRANGECONSTRAINT (XML) | searchstate:addrangeconstraint (JSP) |
|---|---|
|
|
|
SEARCHSTATE.ADDRANGECONSTRAINTは、特定の属性名の範囲制約を追加します。
| SEARCHSTATE.ADDRICHTEXTCONSTRAINT (XML) | searchstate:addrichtextconstraint (JSP) |
|---|---|
|
|
|
SEARCHSTATE.ADDRICHTEXTCONSTRAINTは、属性名とリッチテキスト表現を検索状態内のリッチテキスト制約のリストに追加します。
| SEARCHSTATE.TOSTRING (XML) | searchstate:tostring (JSP) |
|---|---|
|
|
|
SEARCHSTATE.TOSTRINGは、検索状態オブジェクトをそのオブジェクトの文字列表現に変換します。この文字列表現は、セッション変数に保存したりURLに組み込んだりといった様々な用途に適しています。
| SEARCHSTATE.FROMSTRING (XML) | searchstate:fromstring (JSP) |
|---|---|
|
|
|
SEARCHSTATE.FROMSTRINGを使用すると、検索状態オブジェクトを、その文字列表現から初期化できます。このタグを使用する前に、SEARCHSTATE.CREATEタグを使用して空の検索状態を作成する必要があります。
WebCenter Sitesでサポートされている変数の種類は次のとおりです。
通常変数: この変数は、明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。通常変数にはグローバル・スコープが設定されています。
セッション変数: この変数は、現在のセッションが継続している間は存続します。
WebCenter Sitesでは、予約された名前を持ついくつかの標準変数が用意されています。これらの変数の値を取得することはできますが、これらの変数の名前を他の独自に作成した変数の名前として使用することはできません。
この項で説明するトピックは次のとおりです。
次の表では、WebCenter Sitesの標準的な変数を説明しています。特に明記しないかぎり、これらは通常変数です。
表4-8 予約変数
| 変数 | 定義 |
|---|---|
|
|
|
|
|
呼び出されたWebCenter Sitesページの名前。 |
|
|
CatalogManagerのコールで使用される変数。 |
|
|
現行セッションに現在ログインしているユーザーの名前が格納されたセッション変数。 |
|
|
現行セッションに現在ログインしているユーザーのパスワードが格納されたセッション変数。 |
|
|
WebCenter Sitesにログインさせるユーザーのユーザー名に設定できる変数。これは、URLを介してWebCenter Sitesに送信できます。 |
|
|
WebCenter Sitesにログインさせるユーザーのパスワードに設定できる変数。これは、URLを介してWebCenter Sitesに送信できます。 |
|
|
現在のユーザーが属しているACLが格納されたセッション変数。 |
|
|
WebCenter Sitesのタグによって報告されるエラー番号。 |
|
|
|
|
|
|
|
|
|
|
|
Satellite Serverとの通信をサポートするためにWebCenter Sitesによって自動的に設定される内部変数。 |
|
|
テンプレートによって書式設定されるアセット・タイプ。WebCenter Sitesは、テンプレート・アセットが保存されるときにデフォルトでこの変数を設定します。 |
|
|
テンプレートによってレンダリングまたは書式設定されるアセットのID。 |
|
|
子テンプレートの値(子テンプレートが存在する場合)。子テンプレートの詳細は、第29.3項「例3: ct変数の使用」を参照してください。 |
|
|
アセットの親ページのID(親ページが存在する場合)。 |
|
|
ページ・エントリがライブ、エクスポート済、プレビュー済のいずれの状態で提供されるのかを指定します。デフォルトでは、 |
|
|
SiteEntryアセットのID。 |
|
|
テンプレート・アセットのID。 |
|
|
CSElementアセットのID。 |
WebCenter Sitesのテンプレートやエレメントをコーディングする際に使用する変数のほとんどは、通常変数です。通常変数は、WebCenter Sitesのタグを使用して明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。
WebCenter Sitesのエレメント内では、SETVARというXMLタグやJSPタグをコールして、変数を作成してその初期値を設定できます。たとえば、次のSETVAR XMLタグは、dogという名前の変数を作成して、その値をfidoに設定します。
<SETVAR NAME="dog" VALUE="fido"/>
この変数がすでに存在している場合は、SETVARはその値を新しい値に再設定します。たとえば、次のコマンドは、dogの値をmochaに再設定します。
<SETVAR NAME="dog" VALUE="mocha"/>
WebCenter Sitesアプリケーションによって管理されているURLにブラウザがアクセスすると、WebCenter Sitesはページを作成します。各ページは特定のURLに関連付けられています。たとえば、次の形式のURLに関連付けられたページがあるとします。
http://host:port/servlet/ContentServer?pagename=Experiment/Hello
すべてのURLの末尾に、1つ以上の変数を設定できます。たとえば、次のURLは、Helloページ内に3つの変数を作成します。
http://host:port/servlet/ContentServer?pagename=Experiment/Hello&dog=fido&cat=fifi
このURLは、Helloで使用できる次の変数を作成します。
Experiment/Helloという値が設定されたpagenameという名前の変数
fidoという初期値が設定されたdogという名前の変数
fifiという初期値が設定されたcatという名前の変数
Oracle WebCenter Sites Explorerを使用してページ内のデフォルト変数を作成するには、それらの変数を次のフィールドのいずれかに入力します。
SiteCatalogデータベース表のresargs1フィールドまたはresargs2フィールド
ElementCatalogデータベース表のresdetails1フィールドまたはresdetails2フィールド
たとえば、Oracle WebCenter Sites Explorerを使用してSiteCatalog表にアクセスして、次のようにresargs1フィールドとresargs2フィールドに名前と値のペアを入力することで、dogとcatという変数を作成できます。

この例では、一方の名前と値のペアをresargs1に入力して、もう一方の名前と値のペアをresargs2に入力していることに注意してください。別の方法として、次の図のように両方の名前と値のペアをresargs1に入力することもできます。

次のようにresdetails1フィールドとresdetails2フィールドに名前と値のペアを入力することで、ElementCatalog表でdogとcatの値を設定することもできます。

URLを通じて設定された変数や、POST操作やGET操作を通じて設定された変数は、SiteCatalog表やElementCatalog表を使用して設定された変数よりも優先されます。たとえば、URLを通じて変数dogがrexに設定されている一方で、SiteCatalogでdogがfidoに設定されている場合は、結果として得られるdogの値はrexになります。
CGIプログラミングでは、購入者はフォームに入力します。次に、ブラウザはその購入者の入力内容を名前と値のペアとしてエンコードして、これらの名前と値のペアはCGIスクリプトに渡されます。
WebCenter Sitesでは従来のCGIプログラミングは使用されませんが、WebCenter Sitesのエレメントは従来どおりフォームを表示できます。従来のプログラミングの場合と同様に、ブラウザは購入者の入力内容を名前と値のペアとしてエンコードします。ただし、これらの名前と値のペアはCGIプログラムに渡されるかわりに、別のWebCenter Sitesページに渡されます。受取り側のWebCenter Sitesページは、WebCenter Sitesの任意の変数にアクセスするのと同じように、これらの名前と値のペアにアクセスできます。
Cookieの名前と値も変数としてインスタンス化されます。Cookieの詳細は、第9章「セッションおよびCookie」を参照してください。
HTTPはステートレスなプロトコルです。この制約に対処するために、WebCenter Sitesは複数の要求にまたがって状態を維持でき、そうすることでセッションを追跡管理できます。
ブラウザをWebCenter Sitesシステムに接続すると、セッションが確立されます。その後は、そのセッションがシステム側で一意に識別されます。WebCenter Sitesは、この一意の識別情報に基づいたコンテンツと動作を備えたページを提供できます。
クライアントが最初にサイトにアクセスすると、一意のセッションが確立されます。WebCenter Sitesは、デフォルトのユーザーIDを新しいセッションに関連付けて、その情報をセッション変数内に保持します。セッション変数に格納された値は、そのセッションが継続する間は使用できます。セッション変数は、ユーザーのセッションの一部として保存されて、変数の値を複数のページ要求にまたがって保持するために使用されます。
クラスタ化された構成では、セッションの状態はすべてのクラスタ・メンバーにまたがって維持されます。セッション変数は慎重に使用してください。使用されるセッション変数の数とサイズに比例して、リソース負荷が増大するからです。
セッションの状態は、次の状況が発生すると失われます。
クライアントが終了しました。
セッションがタイムアウトしました。WebCenter Sitesは、一定期間にわたって要求が発行されない場合は任意でセッションを終了させることができます。
アプリケーション・サーバーが再起動されました。
セッションに関連付けられたサーバー・リソースは、次の状況が発生すると割当て解除されます。
WebCenter Sitesのタグを通じて、クライアントによってセッションが明示的に終了されました。
セッションがタイムアウトしました。
アプリケーション・サーバーが再起動されました。
セッション変数を作成するには、SETSSVARというXMLタグおよびJSPタグを使用します。そのセッション変数がすでに存在している場合は、SETSSVARはその変数の値を再設定します。たとえば、次のSETSSVAR XMLタグは、セッション変数profileの値を10154に設定します。
<SETSSVAR NAME="profile" VALUE="10154"/>
次の各項では、WebCenter Sitesの変数を操作する方法を説明しています。
変数の値を読み取るために使用する構文は、次のように変数のタイプに応じて異なります。
表4-9 変数および構文
| 変数のタイプ | 構文 | 例 |
|---|---|---|
|
文字列変数 |
|
|
|
カウンタ変数 |
|
|
|
セッション変数 |
|
|
|
プロパティ |
|
|
WebCenter SitesのXMLでは、リスト変数にアクセスするための多くのメソッドが用意されています。
CSVAR XMLタグを使用すると、プロパティやセッション変数を含む任意のタイプの変数の値を表示できます。WebCenter Sitesの通常変数の値を表示する際に使用するJSPタグはics:getvarで、セッション変数の値を表示する際に使用するJSPタグはics:getssvarです。たとえば、次のコードがXMLエレメントに含まれているとします。
<SETVAR NAME="mood" VALUE="happy"/> <p>My dog is <CSVAR NAME="Variables.mood"/>.</p>
この場合は、得られるページでは次のテキストが表示されます。
My dog is happy.
CSVAR XMLタグのNAME引数の一部としてリテラル値を含めることもできます。たとえば、次のコードによっても「My dog is happy.」というテキストが生成されますが、前述のコードよりも評価に時間がかかります。
<SETVAR NAME="mood" VALUE="happy"/> <p><CSVAR NAME="My dog is Variables.mood"/>.</p>
1つの変数の値を別の変数に割り当てることができます。そのための方法は、XMLでコーディングする場合とJSPでコーディングする場合とで異なります。
JSP
JSPでコーディングする場合は、JSPタグを別のJSPタグ内にネストできないため、ics:getvarタグを使用して変数の値を評価することはできません。この制限を回避するには、次のサンプル・コードで示すように、ics.GetVarというJavaメソッドを使用して変数の値を置換します。
<ics:setvar name="myVar" value="Fred"/>
<ics:setvar name="yourVar" value='<%=ics.GetVar("myVar")%>'/>
<ics:getvar name="yourVar"/>
|
注意: 変数の値を評価する式は、一重引用符で囲む必要があります(この例では |
XML
次のXMLコードは、carambolaという値をyour_favoriteという変数に割り当てます。
<SETVAR NAME="my_favorite" VALUE="carambola"/> <SETVAR NAME="your_favorite" VALUE="Variables.my_favorite"/>
これをさらに一歩進めて、2つの変数値を連結して、その連結結果を3つ目の変数に割り当てることができます。たとえば、次のコードは、carという変数をred rabbitという値に設定します。
<SETVAR NAME="color" VALUE="red"/> <SETVAR NAME="model" VALUE="rabbit"/> <SETVAR NAME="car" VALUE="Variables.color Variables.model"/>
XML変数やJSP変数を従来のHTMLタグ内で使用できますが、そのためのコーディング方法はXMLの場合とJSPの場合とで異なります。
JSP
JSPでコーディングする場合は、ics:getvarタグまたはics.GetVar Javaメソッドを使用して変数の値を評価します。
ics.resolvevariablesタグを使用して、文字列に含まれた変数を解決することもできます。たとえば、次のコードは、「The date is」というフレーズとCS.Date変数の値を組み合せて表示します。
<ics.resolvevariables name="The date is $(CS.Date)." delimited="true"/>
delimitedパラメータは、デリミタ$(および)を使用して、解決対象の変数を明示的にマークしていることを示します。たとえば、変数を使用してリスト名とそのリスト内の列を指定するには、次の構文を使用します。
<ics.resolvevariables name="$(Variables.listname).$(Variables.columnname)" delimited="true"/>
delimitedパラメータがfalseに設定されている場合は、変数を区切るためにデリミタが使用されていません。
XML
適切な属性を使用している場合は、HTMLタグ内でXML変数を使用できます。たとえば、次のコードには適切な属性が含まれていないため、背景色が赤に設定されません。
<SETVAR NAME="color" VALUE="red"/> <TABLE bgcolor="Variables.color"> ...
HTMLタグ内でXML変数の値を使用するには、そのHTMLタグ内でREPLACEALL属性を使用する必要があります。REPLACEALL属性は、このHTMLタグ内のこのXML変数の現行値を置換するようにシステムに指示します。したがって、前述の行の正しいコーディング方法は次のとおりです。
<SETVAR NAME="color" VALUE="red"/> <TABLE bgcolor="Variables.color" REPLACEALL="Variables.color"> ...
1つのREPLACEALL属性内で複数の変数値を組み合せることができます。たとえば、次のHTMLタグTABLEでは、2つのXML変数が使用されています。
<SETVAR NAME="color" VALUE="red"/>
<SETVAR NAME="myborder" VALUE="3"/>
<TABLE bgcolor="Variables.color" border="Variables.myborder"
REPLACEALL="Variables.color,Variables.myborder">
...
<REPLACEALL>タグは、REPLACEALL属性の代替手段です。<REPLACEALL>タグは、そのドメイン内で置換を実行します。次に例を示します。
<SETVAR NAME="highlight" VALUE="red"/> <SETVAR NAME="diminish" VALUE="gray"/> <REPLACEALL LIST="Variables.highlight,Variables.diminish"> <TABLE> <TR BGCOLOR="Variables.highlight"><TD>Diamonds</TD></TR> <TR BGCOLOR="Variables.highlight"><TD>Pearls</TD></TR> <TR><TD>Malachite</TD></TR> <TR BGCOLOR="Variables.diminish"><TD>Coal</TD></TR> </TABLE> </REPLACEALL>
このセクションの出力は次のとおりです。

REPLACEALLタグは文字列の検索と置換を実行するため、その処理には長い時間がかかる可能性があります。可能な場合は、REPLACEALL属性を使用してください。REPLACEALLタグを使用する必要がある場合は、このタグで囲むコードの量をできるだけ少なくしてください。
WebCenter SitesのXMLとJSPでは、ほとんどのコンピュータ言語で使用可能なIF/THEN/ELSE構文が用意されています。ただし、変数を対象にした唯一の条件付き演算は、2つの値を比較して一致または不一致を判定することのみです。たとえば、2つの値を比較して、一方が他方より大きいかどうかを判定できません。(ただし、この処理を実行するJavaコードは記述できます。)
たとえば、次のコードは、greetingという変数の値に応じて分岐します。
<IF COND="Variables.greeting=Hello">
<THEN>
<p>Welcome.</p>
</THEN>
<ELSE>
<p>So long.</p>
</ELSE>
</IF>
greetingがHelloに設定されている場合は、WebCenter Sitesは次のHTMLを生成します。
<p>Welcome.</p>
greetingがHello以外の値に設定されている場合は、WebCenter Sitesは次のHTMLを生成します。
<p>So long.</p>
URLを通じて設定された変数や、HTTPのGET操作やPOST操作を通じて設定された変数は、SiteCatalog表やElementCatalog表のresargs列やresdetails列を使用して設定された変数よりも優先されます。
すべての変数はグローバルであり、リスト内のアイテムから変数にアクセスするための構文と他のソースから変数にアクセスするための構文は同じであるため、適切なコーディング手法はエラーを回避するのに役立ちます。例:
エレメント内でベース名を再利用することは簡単なため、変数の前に接頭辞を付けてそれらの変数を一意に定義してください。推奨される構文は、Variables.assettype:fieldnameです。
たとえば、Variables.Article:descriptionのようにします。
ASSET.SCATTERタグでは、そのPREFIX属性を通じてこの構文を簡単に使用できます。このタグの詳細は、第28章「テンプレートおよびCSElementのエレメントのコーディング」を参照してください。
RESOLVEVARIABLESタグを使用して変数を解決しようとしている場合は、DELIMITEDパラメータをtrueに設定して、デリミタ$(および)を使用して解決対象の変数を明示的に示してください。
デバッグを通じてネーミングの競合を検出してください。プロパティ・エディタを使用してcom.fatwire.logging.csプロパティを設定してください(このプロパティは、commons-logging.propertiesファイルまたはlog4j.propertiesファイル内にありますが、どちらのファイルにあるかは、使用しているロギング・フレームワークによって決まります)。このプロパティを有効にすると、WebCenter Sitesは、作成されたすべての変数のレコードをWebCenter Sitesのログ・ファイルに書き込みます。
WebCenter Sitesのタグによってerrno変数に書き込むことができるエラー値のリストについては、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
通常変数とセッション変数に加えて、WebCenter Sitesはいくつかの記憶域構成体をサポートしています。次の各項では、これらの構成体とこれらの使用法を説明します。
WebCenter Sitesでは、現在日付などの値を返すいくつかのビルトインが用意されています。
ビルトインの一般的な構文は次のとおりです。
CS.builtin
たとえば、UniqueIDは一意のIDを生成するビルトインです。次の構文は、このビルトイン変数を生成または参照します。
CS.UniqueID
WebCenter Sitesのビルトインのリストについては、Oracle Fusion Middleware WebCenter Sitesタグ・リファレンスを参照してください。
リストは、行と列で編成された値の表からなります。SETROWタグまたはGOTOROWタグを使用して、適切な行を識別します。
次のエンティティはリストを作成します。
SELECTTOタグ、EXECSQLタグ、CATALOGDEFタグ、STRINGLISTタグおよびCALLSQLタグ
CatalogManagerのコマンド
TreeManagerのコマンド
カスタム・タグ
現在の行の列値を参照するには、次の構文を使用します。
listname.colname
たとえば、carsという名前のリストにcolorという名前の列が存在する場合、現在の行の値を参照するには次のようにします。
cars.color
リストを反復処理するには、LOOPというXMLタグまたは ics:listloopというJSPタグを使用します。リスト内の各行について、WebCenter Sitesはこれらのループ・タグの内側に配置された命令を実行します。
たとえば、次の行が含まれたMyCarsという名前の表があるとします。
表4-10 行を含むサンプル表
| id | 車種 | 色 | 年式 |
|---|---|---|---|
|
224 |
Ford Focus |
青 |
2001 |
|
358 |
VW Rabbit |
赤 |
1998 |
|
359 |
Toyota Corolla |
黄 |
2000 |
|
372 |
Alpha Romeo Spider |
赤 |
1982 |
|
401 |
Porsche 911 |
赤 |
1984 |
|
423 |
Dodge Voyager |
茶 |
1991 |
次のXMLコードは、MyCars内で赤色の車を検索します。SELECTTOというXMLタグおよびJSPタグは、この情報をcarlistという名前のリスト変数に書き込みます。
<SETVAR NAME="color" VALUE="red"/>
<SELECTTO FROM="MyCars" WHERE="color" WHAT="*" LIST="carlist"/>
Red cars: <BR/>
<OL>
<LOOP LIST="carlist">
<LI><CSVAR NAME="carlist.model"/> </LI>
</LOOP>
</OL>
このXMLコードは、次のHTMLを生成します。
Red cars: <BR/> <OL> <LI> VW Rabbit </LI> <LI> Alpha Romeo Spider </LI> <LI> Porsche 911 </LI> </OL>
カウンタは、整数値が格納されるXML変数です。カウンタは次の3つのタグによって制御されます。
表4-11 カウンタ
| タグ | 主な機能 |
|---|---|
|
SETCOUNTER |
カウンタ変数を初期化します |
|
INCCOUNTER |
カウンタの値を、指定された量のみ変更します |
|
REMOVECOUNTER |
カウンタ変数を破棄します |
カウンタを作成するには、SETCOUNTERをコールします。カウンタの値を変更するには、INCCOUNTERをコールします。たとえば、次のコードについて見てみましょう。
<SETCOUNTER NAME="c" VALUE="10"/> <INCCOUNTER NAME="c" VALUE="3"/> <p>Current value is <CSVAR NAME="Counters.c"/></p>
このコードの出力は次のとおりです。
Current value is 13
この例からわかるように、カウンタ変数を参照するには次の構文を使用します。
Counters.name
XMLやJSPで(英数字以外の)特殊文字を使用する必要がある場合は、それらの16進文字表現を使用する必要があります。たとえば、次の行では変数値の一部として空白を指定しています。
<SETVAR NAME="foo" VALUE="foo%20bar"/>
次の表では、WebCenter Sitesでよく使用される特殊文字の16進値を示しています。