プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebCenter Sitesでの開発
12c (12.2.1.1)
E77292-01
目次へ移動
目次

前
次

16 タグ・テクノロジを使用したWebサイト開発

下位互換性のため、Oracle WebCenter Sitesでは、Webサイトの開発用に引き続きレガシー・タグ・テクノロジを提供しています。コーディングはWebCenter SitesタグおよびJavaメソッドで可能で、テンプレートにはXMLおよびJSPを使用できます。

レガシーWebCenter Sitesタグ・テクノロジの詳細は、次の項を参照してください。

注意:

新しいテクノロジの詳細は、「MVCフレークワークおよびAPIを使用したWebsサイト開発」を参照してください。

16.1 コーディング言語の選択について

WebCenter Sitesページは、様々なエレメント・アセットとテンプレート・アセットで構成されており、エレメント・アセットとは、WebCenter Sitesデータベースからページのコンテンツを取得したり、古くなったアイテムをデータベースから削除するなどのタスクを実行するコードのブロックで、テンプレート・アセットは一般に、Webページのコンテンツを書式設定するために使用されます。エレメントとテンプレートは、HTML、XML、JSP、CSS、JavaScriptなどの複数のスクリプト言語とマークアップ言語で記述できます。ただし、WebCenter Sitesが解釈できるのはXMLとJSPのみです。

作成するエレメントまたはテンプレートの役割に基づいて、コーディング言語やマークアップ言語を選択してください。たとえば、ページ・レイアウトにはHTMLとXMLを使用し、ロジックにはJSPとJavaを使用するのが一般的です。新聞記事などの動的なコンテンツを表示するエレメントは、通常はXMLまたはJSPで記述してください。その理由は、このようなエレメントはロジックを使用してコンテンツをWebCenter Sitesデータベースから取得するため、WebCenter SitesのXMLタグまたはJSPタグを使用して管理されるからです。

WebCenter SitesではJava APIも用意されており、コーディング言語としてJSPを選択した場合は、このAPIをWebCenter SitesのJSPタグと組み合せて使用します。

表16-1では、各言語の最適な使用ケースを示しています。

表16-1 コーディング言語の使用

コード 使用するケース

XML

エレメントの大部分がテキストで構成されており、ループや条件分岐がほとんど含まれていません。

JSP

  • エレメントで条件演算子が必要であるか、=や!=以外の関係演算子が必要です。

  • エレメントで多くのループが使用されています。ループのパフォーマンスは、XMLよりもJSPの方が優れています。

  • エレメントにJavaコードのコールが含まれています。

XMLまたはJSPで記述されたエレメントは任意のタイプのエレメントをコールできますが、XMLとJSPを同じエレメント内に混在させることはできません。たとえば、XMLまたはJSPで記述されたエレメントは、HTML、XMLまたはJSPで記述された別のエレメントをコールできます。ただし、HTMLで記述されたエレメントは、XMLまたはJSPで記述されたエレメントをコールすることはできません。

16.2 Oracle WebCenter Sitesのコンテキストについて

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ページを作成できます。

16.2.1 ICSオブジェクト

Oracle WebCenter Sitesのためにコーディングしている場合は、Interface to WebCenter Sites (ICS)オブジェクトのメソッドとタグに頻繁にアクセスします。ICSオブジェクトは、WebCenter Sitesの中核機能のいくつかをカプセル化して、WebCenter Sitesツリーを制御するサーブレット(TreeManagerサーブレット)と、データベースへのデータ入力を制御するサーブレット(CatalogManagerサーブレット)へのアクセスを可能にします。

ICSのメソッドとタグを使用して、変数を作成および表示したり、if/then文を使用して、指定された条件に基づいてタスクを実行することもできます。ICSオブジェクトのメソッドおよびタグの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

注意:

ICSオブジェクトに格納されるオブジェクトは、別のスレッドで行われた変更に対して脆弱になります。したがって、ICSオブジェクトがスレッド・セーフで使用されていることを確認する必要があります。

16.2.2 FTCSタグ

WebCenter Sitesのそれぞれのエレメントやテンプレートの先頭と末尾には、ftcsタグが配置されています。このタグは、WebCenter Sitesのコンテキストを作成し、開始と終了のftcsタグの内側に含まれているコードがWebCenter Sitesのタグを格納してICSメソッドにアクセスすることを、WebCenter Sitesに通知します。

WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成したエレメントとテンプレートには、開始と終了のftcsタグが標準ディレクティブの後ろに追加されます。コーディングは、開始と終了のftcsタグの内側で行う必要があり、これらのタグの外側にコードがあってもWebCenter Sitesでは認識されません。

他の方法を使用してエレメントとテンプレートのコードを作成する場合は、ディレクティブの後ろに開始ftcsタグを追加して、終了ftcsタグをコードの最終行として使用する必要があります。

16.3 WebCenter Sites JSPの理解

JSPプログラマは、ディレクティブ、アクション、JSPオブジェクトなどの一連の標準ツールを自由に使用できます。WebCenter Sites内でJSPを使用してプログラミングする場合は、これらの機能の多くにアクセスできます。ただし、場合によっては、JSPのディレクティブやアクションのかわりにWebCenter Sitesのタグを使用することや、JSPの暗黙オブジェクトのいずれかのかわりにWebCenter Sitesのオブジェクトにアクセスすることが必要になります。

次の各項では、標準のJSPとWebCenter SitesのJSPの違いを詳述しているとともに、標準のJSP機能とWebCenter Sitesのタグやメソッドとの対応関係を示しています。

16.3.1 WebCenter Sitesの標準先頭部について

WebCenter Sitesユーザー・インタフェースまたはExplorerを使用して作成したテンプレート・アセット、CSElementアセット非アセット・エレメントは、標準先頭部が自動的に追加されます。

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アセットとこれらのアセットによってレンダリングされるコンテンツの間の依存関係をログに記録するタグを組み込みます。

ExplorerやWebCenter Sitesユーザー・インタフェース以外のツールを使用してエレメントとテンプレートを作成する場合は、この標準先頭部をコード内にまるごとコピーする必要があります。

次の各項では、Explorerの標準先頭部について説明します。

16.3.1.1 taglibディレクティブ

次の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タグをインポートします。

これらのタグ・ライブラリの詳細は、「Oracle WebCenter Sitesのタグ・ライブラリについて」を参照してください。

これらのタグ・ライブラリに含まれている一般的なタグについては、「WebCenter Sitesのタグの理解」を参照してください。

これらのデフォルト内容にtaglibディレクティブを追加するには、OpenMarket/Xcelerate/AssetType/Template/ModelJsp.xmlファイルを変更して保存します。

16.3.1.2 pageディレクティブ

次の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ファイルを変更して保存します。

16.3.1.3 cs:ftcsタグ

WebCenter SitesのそれぞれのJSPテンプレートやJSPエレメントでは、最初と最後のタグとしてcs:ftcsタグが使用されている必要があります。このタグは、WebCenter Sitesのコンテキストを作成して、開始と終了のcs:ftcsタグの内側に含まれているコードにWebCenter Sitesのタグが格納されることを、WebCenter Sitesに通知します。

コーディングは、開始と終了のcs:ftcsタグの内側で行う必要があり、これらのタグの外側にコードがあってもWebCenter Sitesでは認識されません。

16.3.2 JSPの暗黙オブジェクトについて

JSPでは、開発者が使用できる暗黙オブジェクトがいくつか用意されています。ただし、WebCenter Sitesのコンテキスト内では、WebCenter Sitesのオブジェクトを扱うことが多いため、JSPの暗黙オブジェクトを使用するかわりにWebCenter SitesのJSPタグとJavaメソッドを使用して、これらのWebCenter Sitesのオブジェクトにアクセスする必要があります。

表16-2では、JSPの暗黙オブジェクトおよびこれらのオブジェクトの主要なメソッドと、これらの代替として使用する必要があるWebCenter Sitesのタグやメソッドの対応関係を示しています。

表16-2 JSPの暗黙オブジェクトのマッピング

オブジェクト メソッド WebCenter Sitesのタグやメソッド

request

getParameter

ics:getvarタグ

request

getParameterNames

ICS.GetVars()メソッド

request

getCookie

ics:getCookieタグ

response

addCookie

satellite:cookieタグ

session

getAttribute

ics:getssvarタグ

session

setAttribute

ics:setssvarタグ

out

println

ics:getvarタグまたはrender:streamタグ

16.3.3 JSP構文について

Oracle WebCenter Sitesでは、標準のJSP構文が使用されます。タグをネストする際は(JSPタグのパラメータの値としてJSP式を使用する場合など)、次の例のように必ず一重引用符で式を囲んでください。

name='<%=ics.GetVar("myVariable")%>'

16.3.4 JSPアクションについて

標準のJSPでは、開発者はいくつかの種類のアクションを使用できます。表16-3では、WebCenter Sitesのタグに置き換える必要のあるアクションと、通常どおり使用できるアクションを示しています。

表16-3 JSPのアクションとWebCenter Sitesのタグの比較

アクション WebCenter Sites

<jsp:forward>

render:satellitepageタグまたはrender:callelementタグをかわりに使用します。

<jsp:getproperty>

これは、カスタムJava Beanに使用し、WebCenter Sitesのプロパティのいずれかの値を探す場合は、<ics:getproperty>タグを使用します。

<jsp:include>

render:satellitepageタグまたはrender:callelementタグをかわりに使用します。

<jsp:setProperty>

これは、カスタムJava Beans内のプロパティを設定する場合に使用します。WebCenter Sitesのプロパティを設定するには、WebCenter Sitesのプロパティ管理ツールを使用します。

<jsp:useBean>

これは、カスタムJava Beanに使用します。

16.3.5 JSP宣言について

標準のJSPでは、通常はJSP宣言内で変数を宣言します。WebCenter Sitesでは、ics:setvarタグを使用して、WebCenter Sitesのコンテキスト内で使用できる変数を宣言します。

WebCenter Sites変数の詳細は、「WebCenter Sitesでサポートされる変数について」を参照してください。

16.3.6 スクリプトレットと式について

スクリプトレットと式は、通常のJSP用法とまったく同じように使用できます。

ただし、WebCenter SitesのJSPタグのパラメータの値として式を使用する場合は、「JSP構文について」で説明しているように、必ず引用符を正しくネストしてください。

16.3.7 JSPディレクティブについて

WebCenter Sitesのコンテキスト内でJSPをコーディングする場合は、表16-4で概略を説明しているように、ディレクティブの使用についていくつかの注意点があります。

表16-4 JSPのディレクティブとWebCenter Sitesのタグの比較

ディレクティブ WebCenter Sites

IncludeDirective

render:satellitepageタグまたはrender:callelementタグを使用して、他のファイルをJSPページに組み込みます。

pageディレクティブ

WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成したエレメントまたはテンプレートには、標準のpageディレクティブが自動的に追加されます。

標準のディレクティブに加えて、作成するWebCenter Sitesのエレメントやテンプレートごとに、contentTypeを設定するためのもう1つのpageディレクティブを追加する必要があります。

ページのコンテンツ・タイプをtext/htmlに設定して、文字セットをUTF-8に設定するには、WebCenter SitesのすべてのJSPファイルの先頭行として次のpageディレクティブを入力します。

<%@ page contentType="text/html; charset=UTF-8" %>

taglibディレクティブ

WebCenter Sitesでは、作成されるテンプレートとエレメントに使用頻度の高いtaglibディレクティブが自動的に追加されます。

WebCenter Sitesの別のtaglibディレクティブをエレメントやテンプレート・アセットに、必要に応じて追加できます。詳細は、「Oracle WebCenter Sitesのタグ・ライブラリについて」を参照してください。

16.3.8 Oracle WebCenter Sitesのタグ・ライブラリについて

WebCenter Sitesでは、WebCenter SitesのAPIの機能に対応する一連のJSPタグ・ライブラリが用意されています。

表16-5に、WebCenter Sitesのタグ・ライブラリを一覧表示して、これらの機能を説明します。表16-5は、ご使用のJSPにどのタグ・ライブラリをインポートするかを決定する際のリファレンスとして使用してください。

16.3.8.1 ベーシック・アセットとフレックス・アセット両方のタグ・ライブラリ

表16-5 ベーシック・アセットとフレックス・アセット両方のタグ・ライブラリ

タグ・ライブラリ 説明

acl.tld

アクセス制御リストを作成および操作するためのタグ。

date.tld

年、月、日のフィールドと時間、分、午前/午後のオプション・フィールドで構成される日付を、1970年1月1日0:00 GMTから経過したミリ秒数を表すエポック形式の倍長整数に変換するタグ。dateタグは、倍長整数から日付への変換も行います。

dir.tld

ディレクトリ・サービスのタグ。

ftcs1_0.tld

FTCSコンテキストを作成するタグ。これらのタグは、作成したテンプレートまたはエレメントごとに使用され、それらのタグで囲まれたコードがWebCenter Sitesで制御されることを示します。

ics.tld

WebCenter Sitesの中核機能へのアクセスを可能にするタグで、CatalogManagerとTreeManagerのコマンドや、if/then文のような基本的なコーディング構文などがあげられます。

insite.tld

Webモード用のタグ。

localestring.tld

テキスト文字列をローカライズするためのタグ。

name.tld

WebCenter Sitesに現在ログインしているユーザーの名前にアクセスして、ディレクトリ・サービス内のユーザー名を操作するタグ。

object.tld

WebCenter Sitesのオブジェクトを操作するためのタグ。

property.tld

WebCenter Sitesのプロパティ・ファイルから値を取得するためのタグ。

render.tld

ベーシック・アセットをレンダリングするタグ。

Satellite Serverを操作するためのタグ

これらのタグの多くには、同等の機能を持つRENDER版(render.tldで定義)が存在しており、WebCenter Sitesを使用したサイト構築用としては後者が推奨されます。

soap.tld

WebCenter SitesのSOAPタグ。

time.tld

エレメントのパフォーマンスを特定するためのタイミングを取得および設定するタグ。

user.tld

ユーザーをWebCenter Sitesにログインさせたり、WebCenter Sitesからログアウトさせたりするためのタグ。

webservices.tld

特定タイプのパブリックWebサイトをWebCenter Sitesのページの一部として使用することを可能にするWebサービスのタグ。

16.3.8.2 ベーシック・アセット用のタグ・ライブラリ

表16-6 ベーシック・アセット用のタグ・ライブラリ

タグ・ライブラリ 説明

asset.tld

ベーシック・アセットを取得および操作するタグ。

siteplan.tld

サイト・ナビゲーション・ツリーへのアクセスを可能にするタグ。これらのタグは、ベーシック・アセットが使用されるサイトへのナビゲーションを作成するために使用します。

16.3.8.3 フレックス・アセット用のタグ・ライブラリ

表16-7 フレックス・アセット用のタグ・ライブラリ

タグ・ライブラリ 説明

assetset.tld

フレックス・アセットを使用してアセットセットを作成するためのタグ。

blobservice.tld

フレックス・アセットの属性であるBLOBを取得および操作するためのタグ。

calculator.tld

基本的な計算関数とブール関数を提供するタグ。

cart.tld

ショッピング・カート・オブジェクト内のアイテムを追加、削除およびその他の形で操作することを可能にするタグ。

cartset.tld

登録済購入者のショッピング・カート・オブジェクトを保管、取得、削除および一覧表示することを可能にするタグ。

commercecontext.tld

訪問者コンテキスト内のオブジェクトにアクセスするタグ。

currency.tld

浮動小数点値と通貨文字列を変換して、通貨文字列の書式設定と端数処理を実行するタグ。

decimal.tld

浮動小数点値を様々なロケールの小数オブジェクトとして書式設定するタグ。

hash.tld

IListをハッシュ表としてキャストして、キーに基づいてこのハッシュ表内を検索することを可能にするタグ。

listobject.tld

WebCenter Sitesの結果セット・リストを作成するタグで、エレメント全体にわたって他のタグの引数として使用されます。

locale1.tld

ロケール・オブジェクトを生成するタグで、システム内の様々な他のタグのロケールを記述するために使用されます。

misc.tld

各種のタグ(入力リスト内のすべての列の名前を返すタグなど)。

searchstate.tld

フレックス・アセットのグループ(アセットセット)を制約するための検索状態を作成するタグ。

session.tld

指定されたセッションに対して格納されたオブジェクトをすべてフラッシュするタグ。

string.tld

文字列操作を実行するタグ。

textformat.tld

テキストを書式設定するタグ。

vdm.tld

WebCenter Sitesや他のデータベースから、Webサイト訪問者に関する情報を記録および取得することを可能にする訪問者データ管理タグ。

テンプレート開発に使用されるWebCenter Sitesのタグの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

16.4 WebCenter Sites XMLの理解

この項では、WebCenter SitesのXMLの基本事項について説明します。WebCenter SitesのXMLは、標準のXML構文を使用し、futuretense_cs.dtdによって定義されます。WebCenter SitesのJSPタグと同様に、WebCenter SitesのXMLタグは、WebCenter Sitesのサーブレットとオブジェクトへのアクセスを可能にします。

次の各項では、WebCenter SitesのXMLを使用してコーディングする際の注意事項を説明しています。

16.4.1 WebCenter Sitesの標準先頭部

WebCenter Sitesユーザー・インタフェースまたはOracle WebCenter Sites Explorerツールを使用して作成したテンプレートまたはエレメントには、次の標準先頭部が追加されます。

<?xml version="1.0" ?>
<!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd">
<ftcs version="1.2">
</ftcs>

WebCenter Sitesユーザー・インタフェースまたはExplorer以外のツールを使用してエレメントとテンプレートを作成する場合は、これらをコード内にまるごとコピーする必要があります。

次の各項では、この標準先頭部について説明しています。

16.4.1.1 XMLのバージョンとエンコーディング

WebCenter SitesのいずれのXMLテンプレートやXMLエレメントでも、先頭行では次のようにXMLバージョンを設定する必要があります。

<?xml version="1.0"?>

エレメントが実行されるためには、そのエレメントの先頭行は<?xml version="1.0"?>である必要があり、このテキストの前に空白があってはいけません。さらに、この行の末尾に強制改行を入力して、この行を独立した行にする必要もあります。

このテンプレートまたはエレメントのエンコーディングは、次のようにして設定します。

<?xml version="1.0" encoding="utf-8"?>

16.4.1.2 DTDファイル

WebCenter SitesのXMLは、futuretense_cs.dtdファイルによって定義されます。XMLバージョン文の直後に次の行を入力することで、コーディング対象のWebCenter Sitesのエレメントまたはテンプレートのそれぞれにこのファイルをインポートする必要があります。

<!DOCTYPE ftcs SYSTEM "futuretense_cs.dtd">

16.4.1.3 FTCSタグ

WebCenter SitesのそれぞれのXMLテンプレートやXMLエレメントでは、最初と最後のタグとしてftcsタグが使用されている必要があります。このタグは、WebCenter Sitesのコンテキストを作成して、開始と終了のftcsタグの内側に含まれているコードにWebCenter Sitesのタグが格納されることを、WebCenter Sitesに通知します。

コーディングは、開始と終了のftcsタグの内側で行う必要があり、これらのタグの外側にコードがあってもWebCenter Sitesでは認識されません。

16.4.2 XMLのエンティティと予約文字

<や>などの記号はXMLの予約文字であるため、このような記号をコンテンツに入力しないでください。たとえば、次のコードでは、テキスト内で小なり演算子(<)が使用されているため、XMLパーサーが混乱します。

<P>4 < 7</P>

予約文字のかわりに文字エンティティを使用する必要があります。文字エンティティは&#で始まり、セミコロンで終わります。&#とセミコロンの間には、目的の文字の10進Latin-1 (ASCIIのスーパーセット)値を指定します。たとえば、<記号の10進Latin-1値は60であるため、XMLでの前述の行の正しいコーディング法は次のとおりです。

<P>4 &#60; 7</P>

これらの文字エンティティのリストについては、「特殊文字の値について」を参照してください。

注意:

空白を使用すると、JSPを使用してXMLレスポンスを生成する場合に問題が発生することがあります。レスポンスが機能するには、XMLをcontent typeとしてサーバーに追加すればよいという単純なものではありません。空白がXMLファイルの先頭に挿入されないようにJSPを構成する必要があります。

16.4.3 XML解析エラー

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

16.5 WebCenter Sitesタグの理解

WebCenter Sitesでは、WebCenter Sitesとその製品ファミリの様々な機能へのアクセスを可能にする一連の広範なJSPタグとXMLタグが用意されています。これらのタグを、HTML、Java、JavaScript、および独自に作成するカスタム・タグと組み合せて使用して、Webサイトをコーディングします。

この項では、テンプレート・アセットとエレメントで使用される可能性が高いタグについて、概要を示します。WebCenter Sitesタグの詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

ここで説明するタグは、次のように用途別に分けています。

16.5.1 WebCenter Sitesのコンテキストを作成するタグ

次のタグは、WebCenter Sitesのコンテキストを作成します(このコンテキスト内でコーディングします)。これらのタグは、記述するすべてのテンプレートやエレメントで使用します。

FTCS (XML) ftcs1_0:ftcs (JSP)

<FTCS>

</FTCS>

<ftcs1_0:ftcs>

</ftcs1_0:ftcs>

ftcsタグは、WebCenter Sitesのコンテキストを作成します。開始ftcsタグはコード内の最初のタグである必要があり、終了ftcsタグはコード内の最後のタグである必要があります。WebCenter Sitesでは、開始と終了のftcsタグの外側に配置されたコンテンツは認識されません。したがって、これらのタグの外側のコンテンツはキャッシュされず、これらのタグは正しく機能しません。

16.5.2 変数を処理するタグ

次のタグは、WebCenter Sites内の変数を処理します。

CSVAR (XML) ics:getvar (JSP)

<CSVAR NAME="variableName"/>

<ics:getvar

name="variableName"/>

CSVARは、変数、セッション変数、ビルトインまたはカウンタの値を表示します。

SETVAR (XML) ics:setvar (JSP)

<SETVAR

NAME="variableName"

VALUE="variableValue"/>

<ics:setvar

name="variableName"

value="variableValue"/>

SETVARは、通常のWebCenter Sites変数の値を設定します。この変数の値は、REMOVEVARを使用して明示的に削除されないかぎり、ページ評価の最中は存続します。

SETSSVAR (XML) ics:setvar (JSP)

<SETSSVAR

NAME="variableName"

VALUE="variableValue"/>

<ics:setssvar

name="variableName"

value="variableValue"/>

SETSSVARは、セッション変数を設定します。

REPLACEALL (XML) ics:resolvevariables (JSP)

<REPLACEALL

NAME="variableName"

VALUE="variableValue"/>

<ics:resolvevariables

name="variableName"

[output="variable name"]

[delimited="true|false"]/>

REPLACEALLics:resolvevariablesは、複数のWebCenter Sites変数を解決します。つまり、WebCenter Sitesの変数をHTMLタグで使用する場合は、これらのタグを使用してそれらの変数を解決します。

WebCenter Sitesの変数の詳細は、「WebCenter Sitesでサポートされる変数について」を参照してください。

16.5.3 ページとエレメントをコールするタグ

次のタグを使用して、エレメントまたはテンプレートをコールします。

注意:

次で使用されているCACHECONTROLは非推奨になりました。

RENDER.SATELLITEPAGE (XML) render:satellitepage (JSP)

<RENDER.SATELLITEPAGE

PAGENAME="nameOfPageEntry"

[CACHECONTROL="expiration_date_and_time"]

[ARGS_var1="value1"]/>

<render:satellitepage

pagename="nameOfPageEntry"

[cachecontrol="expiration_date_and_time"]>

<[render:argument name="variable1" value="value1"]/>

</render:satellitepage>

RENDER.SATELLITEPAGEは、WebCenter Sitesのページレットを要求して、そのページレットをWebCenter SitesとSatellite Serverの両方でキャッシュします(そのページレットがまだキャッシュ内に存在しない場合)。ページやページレットを個別にキャッシュすることなくコールするには、RENDER.CALLELEMENTタグを使用します。RENDER.SATELLITEPAGEタグはスタックされたスコープを持つため、そのページで使用できる変数は、明示的に渡した変数のみです。

RENDER.CALLELEMENT (XML) render:callelement (JSP)

<RENDER.CALLELEMENT

ELEMENTNAME="nameOfElement"

[ARGS_var1="value"]/>

<ics:callelement element="element name">

<ics:argument name="argument name" value="arg value"/>

</ics:callelement>

RENDER.CALLELEMENTタグとRENDER.SATELLITEPAGEタグは、どちらのタグも他のWebCenter Sitesコードをコールするという点で似ていますが、前者はエレメント内のコードをコールし、後者はページ内のコードをコールします。ただし、RENDER.CALLELEMENTによってコールされたコードは、個別のページやページレットとしてSatellite Server上でキャッシュされません。

RENDER.CALLELEMENTを使用して、WebCenter Sitesのコンテンツ・アプリケーション用に記述したエレメントのコンテンツを処理します(この場合、そのエレメントのスコープがスタックされることが求められます)。このエレメントはElementCatalog内に存在している必要があります。

16.5.4 URLを作成するタグ

RENDER.GETPAGEURL (XML) render:getpageurl (JSP)

<RENDER.GETPAGEURL

OUTSTR="myURL"

PAGENAME="SiteCatalogPageEntry"

cid="IDofAsset"

[p="IDofParentPage"]

[c="AssetType"]

[ADDSESSION="true"]

[DYNAMIC="true"]

[PACKEDARGS="stringFromPACKARGStag"]

[ARGS_xxx="y"]/>

<render:getpageurl

outstr="myURL"

pagename="SiteCatalogPageEntry"

cid="IDofAsset"

[p="IDofParentPage"]

[c="AssetType"]

[addsession="true"]

[dynamic="true"]

[packedargs="stringFromPACKARGStag"]>

<[render:argument name="xxx" value="yyy"]/>

</render:getpageurl>

このタグは、アセットのURLを作成して、そのアセットに渡された引数をURLエンコードされた文字列に変換して、その文字列をOUTSTRパラメータで指定された変数として返します。rendermodeexportに設定されている場合は、このタグは、静的HTMLファイルのファイル名を作成します(ただし、動的URLを求めると指定した場合は除きます)。rendermodeliveに設定されている場合は、このタグは動的URLを作成します。

RENDER.SATELLITEBLOB (XML) render:satelliteblob (JSP)

<RENDER.SATELLITEBLOB

SERVICE="HTMLtagName"

BLOBTABLE="blobTable"

BLOBKEY="primaryKeyName"

BLOBWHERE="primaryKeyValue"

BLOBCOL="columnName"

BLOBHEADERNAMEN="headername"

BLOBHEADERVALUEN="mimetype"

[ARGS_format1="5"]

[CACHECONTROL="expirationDateAndTime"]/>

<render:satelliteblob

service="HTMLtagName"

blobtable="blobTable"

blobkey="primaryKeyName"

blobwhere="primaryKeyValue"

blobcol="columnName"

blobheadernameN="headername"

blobheadervalueN="mimetype"

[cachecontrol="expirationDateAndTime"]>

<[render:argument name="format1" value="5"]/>

</render:satelliteblob>

このタグは、BLOBであるアセットのBlobServerのURLが含まれたHTMLタグを作成します。たとえば、イメージ・ファイル・アセットは、WebCenter Sitesデータベースに格納されたBLOBであるため、これらのアセットはBlobServerサーブレットで処理する必要があります。このタグは、指定されたBLOBを検索して書式設定する方法をブラウザに指示するHTMLタグを作成します。

16.5.5 キャッシングを制御するタグ

次のタグを使用すると、現在のテンプレートやエレメントの出力をキャッシュするかどうかを制御できます。

ics.disablecache (XML) ics:disablecache (JSP)

<ics.disablecache/>

<ics:disablecache/>

ics.disablecacheは、エラー状態の有無をチェックするif/then文と組み合せて使用し、エラーが存在する場合は、結果としてレンダリングされるページはキャッシュされません。ics.disablecacheタグの詳細とコード・サンプルの詳細は、「間違ったページのキャッシングの防止」を参照してください。

16.5.6 Cookieを設定するタグ

次のタグは、WebCenter Sites内のCookieを設定します。

satellite.cookie (XML) satellite:cookie (JSP)

<satellite.cookie

name="cookie_name"

value="cookie_value"

timeout="timeout"

secure="true|false"

url="URL"

[domain="domain"]/>

<satellite:cookie>

<satellite:parameter name='name' value='cookie_name'/>

<satellite:parameter name='value' value='cookie_value'/>

<satellite:parameter name='timeout' value='cookie_timeout'/>

<satellite:parameter name='secure' value='true|false'/>

<satellite:parameter name='url' value='url'>

</satellite:cookie>

satellite.cookieは、ユーザーのブラウザ上のCookieを設定します。このタグは、XMLまたはJSPでCookieを設定するための唯一の手段です。

16.5.7 プログラミング構文のタグ

次のタグを使用すると、基本的なプログラミング構文を使用できます。

IF/THEN/ELSE (XML) ics:if/ics:then/ics:else (JSP)

<IF COND="LOGICAL_EXPRESSION">

<THEN>

tags and/or text

</THEN>

<ELSE>

tags and/or text

</ELSE>

</IF>

<ics:if condition="logical expression">

<ics:then>

tags and/or text

</ics:then>

<ics:else>

tags and/or text

</ics:else>

</ics:if>

IFTHENELSEでは、条件を設定します。通常は、これらのタグを使用して変数の値を設定します。

LOOP (XML) ics:listloop (JSP)

<LOOP [FROM="START"]

[COUNT="LOOP_TIMES"]

[LIST="LIST_NAME"]

[UNTIL="END"]>

...

</LOOP>

<ics:listloop

listname="some list"

[maxrows="number of loops"]

[startrow="start row"]

[endrow="end row"]/>

LOOPics:listloopは、リスト内のアイテムを反復処理します。すでに述べたように、これらのタグ内に過大な量のコードが含まれている場合は、テンプレートのパフォーマンスが低下します。反復する必要のない文は、できるかぎりLOOPタグの外側に配置してください。

16.5.8 構成上と承認上の依存関係を管理するタグ

構成上と承認上の依存関係の詳細は、「依存性について」を参照してください。

RENDER.LOGDEP (XML) render:logdep (JSP)

<RENDER.LOGDEP ASSET="asset name"

CID="asset id"

C="asset type"/>

<render:logdep asset="asset name"

cid="asset id"

c="asset type"/>

テンプレートで、アセットをロードすることなくそのアセットのデータを取得するタグ(ASSET.CHILDRENなど)が使用される場合は、RENDER.LOGDEPタグを使用します。

RENDER.UNKNOWNDEPS (XML) render.unknowndeps (JSP)

<RENDER.UNKNOWNDEPS/>

<render:unknowndeps/>

ページに問合せが含まれているか、そのページの依存アセットに対する他のなんらかの不確定の接続が含まれている場合は、RENDER.UNKNOWNDEPSタグを使用します。このタグは、依存関係を特定できないという理由で、パブリッシュごとにそのページまたはページレットを再生成させます。このため、このタグはできるだけ使用しないでください。

RENDER.FILTER (XML) render:filter (JSP)

<RENDER.FILTER LIST="list name"

LISTVARNAME="output list name"

LISTDICOL="assetID column"

[LISTTYPECOL="assettype column"]

[TYPE="asset type"]

[ID="asset id"]

[VARNAME="output variable"/>

<render:filter list="list name"

listvarname="output list name"

listidcol="assetID column"

[listtypecol="assettype column"]

[type="asset type"]

[id="asset id"]

[varname="output variable"/>

RENDER.FILTERタグを使用して、未承認アセットの有無を確認して、未承認アセットがエクスポートされるページに含まれることを防止します。このタグは、それぞれのアセットIDをApprovedAssetsデータベース表のassetid列と照合することで、単一のアセットまたはアセットのリストをフィルタリングします。エクスポート・レンダリング時は、このタグは、承認ステータスに基づいてパブリッシュ可能な対象をフィルタリングします。ライブ・レンダリング時は、RENDER.FILTERは何の処理も実行しません。このタグは、テンプレート内のアセットのリストに対するデータベース問合せがある場合は常に使用してください。

16.5.9 ベーシック・アセットに関する情報を取得するタグ

ASSET.LOAD (XML) asset:load (JSP)

<ASSET.LOAD

NAME="assetName"

TYPE="assetType"

OBJECTID="object.id"

[FIELD="fieldName"]

[VALUE="fieldValue"]

[DEPTYPE="EXACT, EXISTS,

or GREATER"]/>

<asset:load

name="assetName"

type="assetType"

objectid="object.id"

[field="fieldName"]

[value="fieldValue"]

[deptype="exact,exists,or greater"]/>

このタグは、データベースに対して特定のアセットについて問い合せてから、そのアセットのデータをメモリー内にオブジェクトとしてロードします。このオブジェクトは、当該セッションがフラッシュされるかそのオブジェクトに割り当てられた名前が上書きされるまで、エレメントで使用可能になります。

ロードされたアセットに割り当てるオブジェクト名のスコープは、グローバル です。エレメントによってオブジェクトが誤って上書きされることを防止するために、必ず一意のオブジェクト名を使用してください。便利なネーミング規則は、エレメント名をアセット名に含めることです。この規則に従って一意のアセット・オブジェクト名を作成する例については、「ベーシック・モジュラ・デザインの作成」を参照してください。

ASSET.LOADは、このタグを使用するテンプレートやエレメントとこのタグによって取得されるアセット・データとの間の依存関係を自動的にログに記録します。


ASSET.SCATTER (XML) asset:scatter (JSP)

<ASSET.SCATTER

NAME="assetName"

PREFIX="variablePrefix"/>

<asset:scatter

name="assetName"

prefix="variablePrefix"/>


このタグは、ASSET.LOADタグを使用して取得(ロード)されているアセット・オブジェクトのすべてのフィールドから値を取得して、これらの値をWebCenter Sitesの変数に変換します。たとえば、オンライン記事のヘッドライン、署名行、本文などを表示するには、このタグを使用して、1回のコールでこれらの値をすべて取得できます。

ASSET.GET (XML) asset:get (JSP)

<ASSET.GET

NAME="assetName"

FIELD="fieldName"

[OUTPUT="outputVariable"]/>

<asset:get

name="assetName"

field="fieldName"

[output="outputVariable"]/>

このタグは、ASSET.LOADタグを使用して取得(ロード)されているアセット・オブジェクトの1つの指定フィールドから値を取得して、その値をWebCenter Sitesの変数に変換します。たとえば、記事のリンクで使用するためにその記事のヘッドラインを使用するには、このタグを使用してその値だけを取得します。

ASSET.CHILDREN (XML) asset:children (JSP)

<ASSET.CHILDREN

NAME="assetName"

LIST= "listName"

[CODE= "NameOfAssociation"]

[OBJECTTYPE= "typeOfObject"]

[OBJECTID="objectID"]

[ORDER="nrank"]/>

<asset:children

name="assetName"

list="listName"

[code="NameOfAssociation"]

[objectype="typeOfObject"]

[objectid="objectID"]

[order="nrank"]/>

このタグは、AssetRelationTree表に問い合せて、指定されたアセットの子アセットのリストを作成します。このタグを使用して、コレクション内のアセットを取得したり、記事アセットに関連付けられたイメージ・アセットを取得したりします。

RENDER.LOGDEPタグをASSET.CHILDRENと組み合せて使用して、このタグが含まれたエレメントやテンプレートと、ASSET.CHILDRENによって取得されるコンテンツとの間の依存関係をログに記録します。

16.5.9.1 アセット・タグに関するパフォーマンス上の注意事項

  • ASSET.LOADASSET.CHILDRENはデータベース問合せであり、データベースに対する問合せは時間がかかるため、これらのタグは必要な場合にのみ使用してください。たとえば、ASSET.LOADタグとその後続のASSET.CHILDRENタグの間にエラー・チェック・コードを挿入することも可能で、後者のタグは、アセットがASSET.LOADによって返されたかどうかを判定します。アセットが存在しない場合は、ASSET.CHILDRENタグを呼び出さないでください。

  • ASSET.SCATTERコールは、単一のASSET.GETコールよりもはるかに長い時間がかかります。

16.5.10 アセットセットを作成するタグ(フレックス・アセット)

アセットセット・タグでは、データベースから取得する1つ以上のフレックス・アセットのセットを指定します。

アセットセットから取得できる情報は次のとおりです。

  • アセットセット内の各フレックス・アセットの1つの属性の値

  • アセットセット内の各フレックス・アセットの複数の属性の値

  • アセットセット内のフレックス・アセットのリスト

  • アセットセット内のフレックス・アセットの数

  • アセットセット内のすべてのフレックス・アセットの1つの属性の一意の属性値のリスト

  • アセットセット内のすべてのフレックス・アセットの属性の一意の属性値の数

使用頻度の高いアセットセット・タグは次のとおりです。

ASSETSET.SETASSET (XML) assetset:setasset (JSP)

<ASSETSET.SETASSET

NAME="assetsetname"

TYPE="assettype"

ID="assetid"

[LOCALE="localeobject"]

[DEPTYPE="exact|exists|none"]

/>

<assetset:setasset name="assetsetname" type="assettype" id="assetid" [locale="localeobject"] [deptype="exact|exists|none"]/>

ASSETSET.SETASSETは、指定された単一のアセットからアセット・セットを作成して、このタグが含まれたテンプレートやエレメントと、このタグによって取得されるコンテンツとの間の構成上の依存関係を定義します。

ASSETSET.SETSEARCHEDASSETS (XML) assetset:setsearchedassets (JSP)

<ASSETSET.SETSEARCHEDASSETS

NAME="assetsetname"

[ASSETTYPES="assettype"] [CONSTRAINT="searchstateobject"] [LOCALE="localeobject"] [SITE="siteidentifier"] [DEPTYPE="exact|exists|none"]/>

<assetset:setsearchedassets

name="assetsetname"

[assettypes="assettype"]

[constraint="searchstateobject"]

[locale="localeobject"]

[site="siteidentifier"]

[deptype="exact|exists|none"]/>

ASSETSET.SETSEARCHEDASSETSは、指定された検索条件によって絞り込まれた特定タイプのすべてのアセットを表すアセットセット・オブジェクトを作成します(この検索条件は、constraintパラメータで指定される検索状態オブジェクトによって表されます)。

このタグは、このタグが含まれたテンプレートやエレメントと、アセットセット内の各アセットとの間の構成上の依存関係も規定します。

ASSETSET.GETMULTIPLEVALUES (XML) assetset:getmultiplevalues (JSP)

<ASSETSET.GETMULTIPLEVALUES

NAME="assetsetname"

LIST="listname"

[BYASSET="true|false"]

PREFIX="prefix"/>

<assetset:getmultiplevalues

name="assetsetname"

list="listname"

[byasset="true|false"]

prefix="prefix"/>

ASSETSET.GETMULTIPLEVALUESは、複数の属性(および場合によっては複数のアセット)の属性値を複数の指定リスト内に分散します。

ASSETSET.GETMULTIPLEVALUESを使用することが推奨されるのは、固定形式のアセット表を表示しようとしている場合や、単一アセットの多くの属性を取得しようとしている場合です(製品詳細ページなどのために)。

ASSETSET.GETMULTIPLEVALUESの制限事項は次のとおりです。

  • 非外部属性のみを分散できます。

  • テキスト・タイプの属性は分散できません。

ASSETSET.GETATTRIBUTEVALUES (XML) assetset:getattributevalues (JSP)

<ASSETSET.GETATTRIBUTEVALUES

NAME="assetsetname"

ATTRIBUTE="attribname"

[TYPENAME="assettypename"]

LISTVARNAME="varname"

[ORDERING="ascending|descending"]/>

<assetset:getattributevalues

name="assetsetname"

attribute="attribname"

[typename="assettypename"]

listvarname="varname"

[ordering="ascending|descending"]/>

ASSETSET.GETATTRIBUTEVALUESは、アセットセットによって表されるアセットの指定された属性の値のリストを取得します。

ASSETSET.GETASSETLIST (XML) assetset:getassetlist (JSP)

<ASSETSET.GETASSETLIST

NAME="assetsetname"

[LIST="attriblist"]

[MAXCOUNT="rowcount"]

[METHOD="random|highest"]

LISTVARNAME="varname/>

<assetset:getassetlist

name="assetsetname"

[list="attriblist"]

[maxcount="rowcount"]

[method="random|highest"]

listvarname="varname"/>

ASSETSET.GETASSETLISTは、オプションのソート条件に基づいて、順序付けられたアセット・リストを取得します。得られるリストはassetidとassettypeという2つの列からなり、これらの列は指定された条件に基づいてソートされます。

16.5.11 検索状態を作成するタグ(フレックス・アセット)

検索状態タグは、assetsetタグを使用して取得されたアセットをフィルタリングする条件を構成します。

検索状態を構築するには、検索状態によって記述されるフレックス・アセットのリストに対して、制約を追加して絞り込むか、または制約を削除して広げます。

使用頻度の高いsearchstateタグは次のとおりです。

SEARCHSTATE.CREATE (XML) searchstate:create (JSP)

<SEARCHSTATE.CREATE

NAME="ssname"

[OP="and|or"]/>

<searchstate:create

name="ssname"

[op="and|or"]/>

SEARCHSTATE.CREATEは、空の検索状態オブジェクトを作成します。このタグを使用して検索状態の構築を開始する必要があります。

SEARCHSTATE.ADDSTANDARDCONSTRAINT (XML) searchstate:addstandardconstraint (JSP)

<SEARCHSTATE.ADDSTANDARDCONSTRAINT

NAME="ssname"

[BUCKET="bucketname"]

[TYPENAME="assettype"]

ATTRIBUTE="attribname"

[LIST="listname"]

[IMMEDIATEONLY="true|false"]

[CASEINSENSITIVE="true|false"]/>

<searchstate:addstandardconstraint

name="ssname"

[bucket="bucketname"]

[typename="assettype"]

attribute="attribname"

[list="listname"]

[immediateonly="true|false"]

[caseinsensitive="true|false"]/>

SEARCHSTATE.ADDSTANDARDCONSTRAINTは、属性の名前と値の制約を新規または既存の検索状態オブジェクトに追加します。

listパラメータで指定する値のリストによって、属性を制約できます。

SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINT (XML) searchstate:addsimplestandardconstraint (JSP)

<SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINT

NAME="ssname"

[BUCKET="bucketname"]

[TYPENAME="assettype"]

ATTRIBUTE="attribname"

VALUE="value"

[IMMEDIATEONLY="true|false"]/>

<searchstate:addsimplestandardconstraint

name="ssname"

[bucket="bucketname"]

[typename="assettype"]

attribute="attribname"

value="value"

[immediateonly="value"]/>

SEARCHSTATE.ADDSIMPLESTANDARDCONSTRAINTは、属性の名前と単一値の制約を既存の検索状態に追加します。

このタグは、SEARCHSTATE.ADDSTANDARDCONSTRAINTの簡易版です。NAMEで指定されたオブジェクトは、新しい制約を反映して更新されます。属性名が検索状態内にある場合は、新しい制約によって古い制約が置換されます。

SEARCHSTATE.ADDRANGECONSTRAINT (XML) searchstate:addrangeconstraint (JSP)

<SEARCHSTATE.ADDRANGECONSTRAINT

NAME="ssname"

[BUCKET="bucketname"]

[TYPENAME="assettype"]

ATTRIBUTE="attribname"

LOWER="lowrange"

UPPER="uprange"

[CASEINSENSITIVE="true|false"]/>

<searchstate:addrangeconstraint

name="ssname"

[bucket="bucketname"]

[typename="assettype"]

attribute="attribname"

lower="lowrange"

upper="uprange"

[caseinsensitive="true|false"]

/>

SEARCHSTATE.ADDRANGECONSTRAINTは、特定の属性名の範囲制約を追加します。

SEARCHSTATE.ADDRICHTEXTCONSTRAINT (XML) searchstate:addrichtextconstraint (JSP)

<SEARCHSTATE.ADDRICHTEXTCONSTRAINT

NAME="ssname"

[BUCKET="bucketname"]

[TYPENAME="assettype"]

ATTRIBUTE="attribname"

VALUE="criteria"

[PARSER="parsername"]

CONFIDENCE="minlevel"

[MAXCOUNT="number"] />

<searchstate:addrangeconstraint

name="ssname"

[bucket="bucketname"]

[typename="assettype"]

attribute="attribname"

lower="lowrange"

upper="uprange"

[caseinsensitive="true|false"]

/>

SEARCHSTATE.ADDRICHTEXTCONSTRAINTは、属性名とリッチテキスト表現を検索状態内のリッチテキスト制約のリストに追加します。

SEARCHSTATE.TOSTRING (XML) searchstate:tostring (JSP)

<SEARCHSTATE.TOSTRING

NAME="objname"

VARNAME="varname"/>

<searchstate:tostring

name="objname"

varname="varname"/>

SEARCHSTATE.TOSTRINGは、検索状態オブジェクトをそのオブジェクトの文字列表現に変換し、この文字列表現は、セッション変数に保存したりURLに組み込んだりといった様々な用途に適しています。

SEARCHSTATE.FROMSTRING (XML) searchstate:fromstring (JSP)

<SEARCHSTATE.FROMSTRING

NAME="objname"

VALUE="stringval"/>

<searchstate:fromstring

name="objname"

value="stringval"/>

SEARCHSTATE.FROMSTRINGを使用すると、検索状態オブジェクトを、その文字列表現から初期化できます。このタグを使用する前に、SEARCHSTATE.CREATEタグを使用して空の検索状態を作成する必要があります。

16.6 WebCenter Sitesでサポートされる変数について

WebCenter Sitesでサポートされている変数の種類は次のとおりです。

  • 通常変数: この変数は、明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。通常変数にはグローバル・スコープが設定されています。

  • セッション変数: この変数は、現在のセッションが継続している間は存続します。

WebCenter Sitesでは、予約された名前を持ついくつかの標準変数が用意されています。これらの変数の値を取得することはできますが、これらの変数の名前を他の独自に作成した変数の名前として使用することはできません。

この項には次のトピックが含まれます:

16.6.1 予約変数

表16-8では、WebCenter Sitesの標準的な変数を説明しています。

注意:

予約変数の変更は許可されていません。

表16-8 予約変数

変数 定義

tablename

execsqlタグが実行可能になる前に、表名に設定される変数。

pagename

呼び出されたWebCenter Sitesページの名前。

ftcmd

CatalogManagerのコールで使用される変数。

username

現行セッションに現在ログインしているユーザーの名前が格納されたセッション変数。

password

現行セッションに現在ログインしているユーザーのパスワードが格納されたセッション変数。

authusername

WebCenter Sitesにログインさせるユーザーのユーザー名に設定できる変数。これは、URLを使用してWebCenter Sitesに送信できます。

authpassword

WebCenter Sitesにログインさせるユーザーのパスワードに設定できる変数。これは、URLを使用してWebCenter Sitesに送信できます。

currentACL

現在のユーザーが属しているACLが格納されたセッション変数。

errno

WebCenter Sitesのタグによって報告されるエラー番号。

context

render:calltemplateタグで将来に使用されるために予約されています。詳細は、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

site

Publication表のname列に格納されている、サイトのフルネーム。

site変数は、すべてのテンプレート・アセットとSiteEntryアセット内のresargとして設定されます。このサイトは、このサイト内で作成されたテンプレート・アセットとSiteEntryアセットを所有しています。

sitepfx

Publication表のcs_prefix列に格納されている、サイトの接頭辞(およびサイトの短縮名)。

ft_ss

Satellite Serverとの通信をサポートするためにWebCenter Sitesによって自動的に設定される内部変数。ft_sstrueに設定されている場合は、WebCenter Sitesは、要求元がSatellite Serverであると推定します。

c

テンプレートによって書式設定されるアセット・タイプ。WebCenter Sitesは、テンプレート・アセットが保存されるときにデフォルトでこの変数を設定します。

cid

テンプレートによってレンダリングまたは書式設定されるアセットのID。

ct

子テンプレートの値(子テンプレートが存在する場合)。子テンプレートの詳細は、「ct変数の使用」を参照してください。

p

アセットの親ページのID(親ページが存在する場合)。

rendermode

ページ・エントリがライブ、エクスポート済、プレビュー済のいずれの状態で提供されるのかを指定します。デフォルトでは、rendermodeliveです。ディスクへのエクスポートまたはプレビュー機能を使用する場合は、WebCenter Sitesは自動的にこの変数の値をexportまたはpreviewにオーバーライドします。この値は内部で使用されるため、変更しないでください。

seid

SiteEntryアセットのID。

tid

テンプレート・アセットのID。

eid

CSElementアセットのID。eidは、CSElementのルート・エレメントで使用できます。

16.6.2 標準変数

WebCenter Sitesのテンプレートやエレメントをコーディングする際に使用する変数のほとんどは、通常変数です。通常変数は、WebCenter Sitesのタグを使用して明示的に削除されないかぎり、現在のテンプレートやエレメントが存続している間は存続します。

16.6.2.1 SETVARを使用した変数

WebCenter Sitesのエレメント内では、SETVARというXMLタグやJSPタグをコールし、変数を作成してその初期値を設定できます。たとえば、次のSETVAR XMLタグは、dogという名前の変数を作成して、その値をfidoに設定します。

<SETVAR NAME="dog" VALUE="fido"/>

この変数が存在している場合は、SETVARはその値を新しい値に再設定します。たとえば、次のコマンドは、dogの値をmochaに再設定します。

<SETVAR NAME="dog" VALUE="mocha"/>

16.6.2.2 URLを使用した変数

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という名前の変数

16.6.2.3 Explorerを使用したエレメントとテンプレートのデフォルト変数

Explorerを使用してページ内のデフォルト変数を作成するには、それらの変数を次のフィールドのいずれかに入力します。

  • SiteCatalogデータベース表のresargs1フィールドまたはresargs2フィールド。

  • ElementCatalogデータベース表のresdetails1フィールドまたはresdetails2フィールド。

たとえば、Explorerを使用してSiteCatalog表にアクセスして、図16-1に示すように、resargs1フィールドとresargs2フィールドに名前と値のペアを入力することで、dogcatという変数を作成できます。

図16-1 SiteCatalogフィールド

図16-1の説明が続きます
「図16-1 SiteCatalogフィールド」の説明

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

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

図16-3 ElementCatalogフィールド

図16-3の説明が続きます
「図16-3 ElementCatalogフィールド」の説明

URLを通じて設定された変数や、POST操作やGET操作を通じて設定された変数は、SiteCatalog表やElementCatalog 表を使用して設定された変数よりも優先されます。たとえば、URLを通じて変数dogrexに設定されている一方で、SiteCatalogdogfidoに設定されている場合は、結果として得られるdogの値はrexになります。

16.6.2.4 HTMLフォームを使用した変数

CGIプログラミングでは、購入者はフォームに入力します。次に、ブラウザはその購入者の入力内容を名前と値のペアとしてエンコードして、これらの名前と値のペアはCGIスクリプトに渡されます。

WebCenter Sitesでは従来のCGIプログラミングは使用されませんが、WebCenter Sitesのエレメントは従来どおりフォームを表示できます。従来のプログラミングの場合と同様に、ブラウザは購入者の入力内容を名前と値のペアとしてエンコードします。ただし、これらの名前と値のペアはCGIプログラムに渡されるかわりに、別のWebCenter Sitesページに渡されます。受取り側のWebCenter Sitesページは、WebCenter Sitesの任意の変数にアクセスするのと同じように、これらの名前と値のペアにアクセスできます。

Cookieの名前と値も変数としてインスタンス化されます。Cookieの詳細は、「セッションおよびCookieについて」を参照してください。

16.6.3 セッション変数

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"/>

16.6.4 変数の操作

次の各項では、WebCenter Sitesの変数を操作する方法を説明しています。

16.6.4.1 変数の値を読み取るための構文

変数の値を読み取るために使用する構文は、次のように変数のタイプに応じて異なります。

表16-9 変数および構文

変数のタイプ 構文

文字列変数

Variables.variable_name

Variables.dog

カウンタ変数

Counters.variable_name

Counters.position

セッション変数

SessionVariables.variable_name

SessionVariables.username

プロパティ

CS.Property.property_name

cs.use.short.jsp.names

WebCenter SitesのXMLでは、リスト変数にアクセスするための多くのメソッドが用意されています。

16.6.4.2 変数の値を表示するためのタグ

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>

16.6.4.3 別の変数への単一変数値の割当て

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"/>

注意:

変数の値を評価する式は、一重引用符で囲む必要があります(この例では'<%=icsGetVar("myVar")%>')。そうしないと、JSPエレメントによって例外がスローされます。

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"/>

16.6.4.4 HTMLタグの変数

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>

図16-4に、このセクションの出力を示します。

REPLACEALLタグは文字列の検索と置換を実行するため、その処理には長い時間がかかる可能性があります。可能な場合は、REPLACEALL属性を使用してください。REPLACEALLタグを使用する必要がある場合は、このタグで囲むコードの量をできるだけ少なくしてください。

16.6.4.5 IF/THEN/ELSEを使用した変数の評価

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は次のように生成します。

<p>So long.</p>

16.6.5 変数と優先順位

URLを通じて設定された変数や、HTTPのGET操作やPOST操作を通じて設定された変数は、SiteCatalog表やElementCatalog表のresargs列やresdetails列を使用して設定された変数よりも優先されます。

16.6.6 変数に関するベスト・プラクティス

すべての変数はグローバルであり、リスト内のアイテムから変数にアクセスするための構文と他のソースから変数にアクセスするための構文は同じであるため、適切なコーディング手法はエラーを回避するのに役立ちます。例:

  • エレメント内でベース名を再利用することは簡単なため、変数の前に接頭辞を付けてそれらの変数を一意に定義してください。推奨される構文は、Variables.assettype:fieldnameです。

    たとえば、Variables.Article:descriptionのようにします。

    ASSET.SCATTERタグでは、そのPREFIX属性を通じてこの構文を簡単に使用できます。このタグの詳細は、「テンプレートおよびCSElementのエレメントのコーディング」を参照してください。

  • RESOLVEVARIABLESタグを使用して変数を解決しようとしている場合は、DELIMITEDパラメータをtrueに設定して、デリミタ$(および)を使用して解決対象の変数を明示的に示してください。

  • デバッグを通じてネーミングの競合を検出してください。loggingconfig.xmlcom.fatwire.logging.csプロパティを設定します。このプロパティを有効にすると、WebCenter Sitesは、作成されたすべての変数のレコードをWebCenter Sitesのログ・ファイルに書き込みます。

WebCenter Sitesのタグによってerrno変数に書き込むことができるエラー値のリストについては、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

16.7 WebCenter Sitesの他の記憶域構成体

通常変数とセッション変数に加えて、WebCenter Sitesはいくつかの記憶域構成体をサポートしています。次の各項では、これらの構成体とこれらの使用法を説明します。

16.7.1 ビルトイン

WebCenter Sitesでは、現在日付などの値を返すいくつかのビルトインが用意されています。

ビルトインの一般的な構文は次のとおりです。

CS.builtin

たとえば、UniqueIDは一意のIDを生成するビルトインです。次の構文は、このビルトイン変数を生成または参照します。

CS.UniqueID

WebCenter Sitesのビルトインのリストについては、Oracle WebCenter Sitesタグ・リファレンスを参照してください。

16.7.2 リスト

リストは、行と列で編成された値の表からなります。SETROWタグまたはGOTOROWタグを使用して、適切な行を識別します。

次のエンティティはリストを作成します。

  • SELECTTOタグ、EXECSQLタグ、CATALOGDEFタグ、STRINGLISTタグおよびCALLSQLタグ

  • CatalogManagerのコマンド。

  • TreeManagerのコマンド。

  • Customタグ。

現在の行の列値を参照するには、次の構文を使用します。

listname.colname

たとえば、carsという名前のリストにcolorという名前の列が存在する場合、現在の行の値を参照するには次のようにします。

cars.color

16.7.2.1 リストのループ処理

リストを反復処理するには、LOOPというXMLタグまたはics:listloopというJSPタグを使用します。リスト内の各行について、WebCenter Sitesはこれらのループ・タグの内側に配置された命令を実行します。

たとえば、次の行が含まれたMyCarsという名前の表があるとします。

表16-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>

16.7.3 カウンタ

カウンタは、整数値が格納されるXML変数です。カウンタは次の3つのタグによって制御されます。

表16-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

16.8 特殊文字の値について

XMLやJSPで(英数字以外の)特殊文字を使用するには、それらの16進文字表現を使用します。たとえば、次の行では変数値の一部として空白を指定しています。

    <SETVAR NAME="foo" VALUE="foo%20bar"/>

表16-12では、WebCenter Sitesでよく使用される特殊文字の16進値を示しています。

表16-12 特殊文字の値

16進値 文字

%22

二重引用符(")

%20

単一の空白

%3c

小なり記号(<)

%3e

大なり記号(>)

%26

アンパサンド(&)

%09

タブ(\t)

%0a

改行(\n)

%0d

改行(\r)

%25

パーセント(%)