この章の内容は次のとおりです。
Idoc変数(構成変数または環境変数と呼ばれることもあります)は、Idocスクリプトおよび構成ファイルで使用できます。
一般に、変数が構成の一部である場合、変数は大文字で始まります。config.cfg
ファイルまたはintradoc.cfg
ファイルで指定した変数は通常、先頭が大文字になります。例については、『Oracle Fusion Middleware Oracle WebCenter Contentの構成リファレンス』のDefaultFilterInputFormatに関する項を参照してください。サービス・リクエスト内の多くのパラメータも大文字で始まります。
ページで定義され、std_page.htm
などのファイルで導出されて使用される変数は、小文字で始まります。例は、「Idoc Scriptの関数」の「executeService関数」を参照してください。変数は環境変数またはサービス変数から計算されて、プレゼンテーションに使用されます。
オブジェクトを定義するために変数を使用する場合、その変数は、定義しているオブジェクトのタイプを表す小文字で始まります。ワークフロー固有の変数の例については、「Idoc Scriptの関数と変数」の「wfSet()」を参照してください。また、すべての関数は小文字で始まり、多くは関数のタイプを表す接頭辞で始まります。たとえば、ほとんどの文字列操作関数はstr
で始まります。あるいは、ResultSet関数はrs
で始まります。
カスタム・メタデータ・フィールドではないデータベース列名はすべて、小文字のd
で始まります。コンテンツ・サーバー・システムにより作成されたカスタム・メタデータのデータベース列名はすべて、小文字のx
で始まります。
Idoc Scriptは、次の基本的な構文ルールに従います。
Idoc Scriptのコマンドは、デリミタ<$
で始まり、$>
で終わります。次に例を示します。
<$dDocTitle$> <$if UseGuiWinLook and isTrue(UseGuiWinLook)$>
HCSPページまたはHCSFページでIdoc Scriptを使用している場合は、Idoc Scriptのタグに構文<!--$script‐‐>
を使用する必要があります。
Idoc Scriptコードでは、標準のHTMLコメントまたはIdoc Scriptのコメントが使用できます。Idoc Scriptのコメントは、デリミタ[[%
で始まり、%]]
で終わります。次に例を示します。
<!-- HTML Comment --> [[%My Comment%]]
HTMLコメントは、Idoc Scriptエンジンのプレーン・テキストとして解析されます。このエンジンは、Idoc Scriptの構成のみを検索します。生成されたページにコメントを表示する場合は、HTML/XMLコメント構文を使用します。それ以外の場合は、Idoc Scriptのコメント構文をお薦めします。
他のIdoc Scriptを生成するIdoc Scriptを作成していて、ソース・ページを読取り可能にするには、構成dynamichtml
と、Idoc Scriptリソース・ファイルにある文字列リソースなどのその他のリソース指定子をコメント・アウトするコメント構文が使用できます。次に例を示します。
[[% Commenting out resource includes <@dynamichtml myinclude@> <@end@> End comment %]]
Idoc Scriptには、6つの基本的な使用があります。
インクルードは、コンテンツ・サーバーのWebページの作成に使用されるコードを定義します。インクルードは、リソース・ファイル内で一度定義されると、必要に応じて多数のテンプレート・ファイルによって参照されます。システムでは、インクルードを大いに活用しています。
インクルードを使用することによって、コンポーネント・アーキテクチャと動的サーバー・ページの使用によるインスタンスのカスタマイズが簡単になります。インクルードとカスタマイズの詳細は、「動的サーバー・ページのカスタム・インクルードを使用するIdocファイルの作成」を参照してください。
インクルードは、HTMリソース・ファイルに次のフォーマットを使用して定義されます。
<@dynamichtml name@>
code
<@end@>
インクルードは、次のIdoc Scriptフォーマットを使用してHTMテンプレート・ファイルからコールされます。
<$include name$>
インクルードには、Idocスクリプトおよび有効なHTMLコード(JavaScript、Javaアプレット、カスケード・スタイルシート、コメントなど)を含めることができます。
インクルードは、コール元と同じファイルで定義するか、別のファイルで定義することができます。
標準的なインクルードは、wcc_home_dir/shared/config/resources/std_page.htmファイル、IdcHomeDir
/resources/core/idoc/std_page.idoc
ファイルで定義されます。
HDAファイルとCFGファイルはスクリプト対応ではないため、これらのタイプのファイルにインクルード文を使用することはサポートされていません。
インクルード
はグローバルであり、システムのあらゆる部分で使用できます。HCSPファイルの動的スクリプト・ページでインクルード
が使用できます。.idoc
ファイルでは、グローバルではないローカライズされたインクルード
を実行できます。HCSPファイルは、適切な構文を使用して、グローバルなインクルード
またはローカライズされたインクルード
を両方ともコールできます。同じ名前が1つでも存在している場合、インクルード
は既存のインクルード
をオーバーライドできます。
詳細は、次の項を参照してください。
最も一般的なインクルードの1つは、ボディ定義要素<@dynamichtml body_def>
です。このインクルードは、ページの背景色、ハイパーリンクの色および背景イメージを設定します。次の例は、wcc_home_dir/shared/config/resources/std_page.htmIdcHomeDir
/resources/core/idoc/std_page.idoc
にあるコードを示しています。
<@dynamichtml body_def@> <!--Background image defined as part of body tag---> <body <$if background_image$> background="<$HttpImagesRoot$><$background_image$>" <$elseif colorBackground$> bgcolor="<$colorBackground$>" <$endif$> <$if xpedioLook$> link="#663399" vlink="#CC9900" <$else$> link="#000000" vlink="#CE9A63" alink="#9C3000" <$endif$> marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" > <@end@>
ほとんどの標準的なテンプレート・リソース・ファイル(IdcHomeDir
/resources/core/templates/pne_home_page.htm
など)には、ページの最上部近くに次のIdoc Scriptコードが含まれています。
(たとえば、wcc_home_dir/shared/config/templates/pne_home_page.htm)
<$include body_def$>
コンテンツ・サーバー・システムは、このコードが含まれているテンプレート・ページを解決するときに<@dynamichtml body_def@>
定義を検索し、プレースホルダ・コードを定義にあるコードに置換します。
super
タグは、既存インクルード
の例外の定義に使用します。super
タグは、既存のインクルード
で開始し、指定したコードを使用してそれに追加するか、または変更するようにインクルード
に指示します。
super
タグでは、次の構文を使用します。
<@dynamichtml my_resource@> <$include super.my_resource$> exception code <@end@>
super
タグを使用して、標準的なインクルード
またはカスタム・インクルード
を参照できます。super
タグは、最後にロードされたインクルード
を統合します。
super
の後に定義されたリソース名は、super
をインクルードしたインクルード
名と一致している必要があります。前出の構文例では、my_resource
はインクルード名であるため、一致するコールはsuper.my_resource
となります。
複数のsuper
タグを指定して、最後のバージョンよりも前にロードされたインクルードをコールすることができます。たとえば、標準のbody_def
インクルードの例外を2つの異なるコンポーネントに設定するには、最後にロードされたコンポーネントに次の構文が使用できます。
<$include super.super.body_def$>
注意:
1つのインクルードに複数のsuper
タグを使用する場合は、リソースのロード元とロード順序が判明していることを確認します。
super
タグが特に役立つのは、大規模なインクルードに小規模なカスタマイズを行う場合や、ソフトウェアが次のバージョンになったときに変わる可能性の高い標準コードをカスタマイズする場合です。新規バージョンのコンテンツ・サーバー・ソフトウェアにアップグレードする場合、super
タグによって、コンポーネントで最新バージョンのインクルードが使用され、インスタンスのカスタマイズに必要な特定のコードのみが確実に変更されます。
この例では、コンポーネントによって、my_resource
インクルードが次のように定義されます。
<@dynamichtml my_resource@> <$a = 1, b = 2$> <@end@>
後でロードされた別のコンポーネントでは、super
タグを使用して、my_resource
インクルードが拡張されます。次の拡張を行うと、a
には値1が割り当てられ、b
には値3が割り当てられます。
<@dynamichtml my_resource@> <$include super.my_resource$> <!--Change "b" but not "a" --> <$b = 3$> <@end@>
変数 では、変数の値を定義したり、置換したりすることができます。
以降の各項では、Idoc Scriptの変数の使用方法について説明します。
Idoc Script変数は、次のいずれかの方法で作成されます。
多くの変数は事前定義されています。
独自のカスタム変数を定義できます。
いくつかの変数値は、問合せとサービスを使用して生成する必要があります。一部の変数情報はデータベースから自動的に使用できないため、問合せとサービスを定義して依頼する必要があります。
Idoc Script変数のタイプの詳細は、「Oracle WebCenter ContentでのIdoc Scriptの変数と関数の使用」を参照してください。
テンプレートとその他のリソース・ファイルの変数を参照するには、次のIdoc Scriptタグを使用します。
<$variable_name$>
このような変数名を参照する場合、その変数が参照されたときに、生成されたページによってIdoc Scriptタグがその変数の値に置換されます。
この構造を使用して、変数に値を割り当てることができます。
<$variable=value$>
たとえば、<$i=0$>
は0の値を変数iに割り当てます。
変数の値は、次の名前/値のペアのフォーマットを使用して、環境リソース(CFG)ファイルにも定義できます。
variable=value
たとえば、標準的な構成変数はIntradocDir
/config/config.cfg
ファイルに定義されます。
注意:
デフォルトでは、コードにより設定されたすべての構成変数値がIntradocDir
/config/config.cfg
ファイルにリストされるとはかぎりません。
Idoc Scriptは、変数の参照内の1つのスクリプト・ブロックでカンマによって区切られる複数の句をサポートしています。
たとえば、2つのseparate文、<$a=1$>
および<$b=2$>
のかわりに、<$a=1,b=2$>
を使用できます。
次の構造を使用して、変数の存在を評価できます。
<$if variable_name$>
変数が定義されていて空でない場合、この条件はTRUE
として評価されます。変数が定義されていないか、空(null)文字列として定義されている場合、それはFALSE
として評価されます。
このタイプの参照の標準的な使用法の例は、「条件の例」を参照してください。
サービス・リクエストを遂行するために変数が参照される場合、次のデフォルトの順序によりデータ・バインダで最初に見つかる一致が代替値になります。
LocalData
Active ResultSets
Nonactive ResultSets
Environment
たとえば、変数が環境に存在していて、それがアクティブResultSetのフィールド名でもある場合は、アクティブResultSetの現在行の値が使用されます。
特別な評価ロジック(条件動的変数など)を持たない標準変数は、#active
キーワード接頭辞を使用することと同等です。
たとえば、タグ<$variable$>
は<$#active.variable$>
と同等です。ただし、#active
が明示的に表記されていなくて、変数が見つからない場合は、エラー・レポートがデバッグ出力に印刷されます。
#active
修飾子は、変数の参照の検索順序に説明するように、変数の参照によってDataBinderが検索されることを意味するのに対し、#env
では環境のみから選択でき、#local
は常にLocalData
を参照します。明示的に#active
を使用することと接頭辞を使用しないことの相違は、(1)修飾子を使用していなくて、(2) 変数の参照がDataBinderに見つからない場合のみエラーが報告されることです。
Idoc Scriptには、多数のビルトイン・グローバル関数があります。関数は、文字列の比較、操作ルーチン、日付フォーマット化、ResultSetの操作といったアクションを実行します。いくつかの関数は、計算または比較の結果などの結果も返します。
関数名の後に情報をカッコで閉じることによって、情報が関数に渡されます。関数に渡される情報のピースをパラメータといいます。関数には、パラメータをとらないもの、パラメータを1つとるもの、複数のパラメータをとるものがあります。関数のなかには、その使用方法によってパラメータ数が異なるものもあります。
Idoc Script関数のリストは、「グローバル関数」を参照してください。
パーソナライズ関数は、ユーザー・トピック・ファイルとも呼ばれるパーソナライズ・ファイルで定義されたユーザー・プロパティを参照します。各ユーザーの「ユーザー・プロファイル」の設定、左ナビゲーション・バーのパーソナル・リンクおよびキュー情報のワークフローはすべてユーザー・トピック・ファイルで定義されます。ユーザー・トピック・ファイルはHDAファイルであり、WC_CONTENT_ORACLE_HOME
/data/users/profiles/
us
/
username
/
ディレクトリに置かれています。
次のグローバル関数は、ユーザー・トピック・ファイルを参照します。
たとえば、ユーザーの左ナビゲーション・バーにある「ポータル・デザイン」リンクは、pne_nav_userprofile_links
インクルード(WC_CONTENT_ORACLE_HOME
/shared/config/resources/std_page.htm
リソース・ファイル内にあります)の次のコードから生成されます。WC_CONTENT_ORACLE_HOME
/data/users/profiles/
us
/
username
/pne_portal.hda
ファイルのportalDesignLink
プロパティがTRUE
である場合は、リンクが表示されます。
<$if utGetValue("pne_portal", "portalDesignLink") == 1$> <$hasUserProfileLinks=1$> <tr> <td colspan=2 nowrap align="left"> <a class=pneLink href="<$HttpCgiPath$>?IdcService=GET_PORTAL_PAGE&Action=GetTemplatePage&Page=PNE_PORTAL_DESIGN_PAGE"> <$lc("wwPortalDesign")$></a> <td> </tr> <$endif$>
条件では、if句と else句を評価して、アセンブルされたページにコードを含めたり、コードを除外することができます。
<$if condition$>
<$else$>
<$elseif condition$>
<$endif$>
<$if conditionA$> <!--Code if conditionA is true--> <$elseif conditionB$> <!--Code if conditionB is true--> <$else$> <!--Code if neither conditionA nor conditionB is true--> <$endif$>
条件
式には、任意のIdoc Scriptの関数または変数が使用できます。詳細は、「条件における変数の参照」を参照してください。
and
演算子を次のように使用できます。<$if UseBellevueLook and isTrue(UseBellevueLook)$>
最初の式では変数の有無と、変数が空でないかどうかをテストし、2番目の式では変数の値が1
に評価されるか、あるいは、t
またはy
(大/小文字を区別しません)で始まるかどうかをチェックします。2番目の句がない場合、変数が設定されていなかったり空の場合には、エラーが生成される可能性があります。等価表現は次のとおりです。
<$if isTrue(#active.UseBellevueLook)$>
条件
式がHTMLページにインクルード可能なResultSetの名前である場合、ResultSetに少なくとも1行がある場合に条件句はtrue
を返します。これにより、ResultSetに行がある場合のみ、テンプレート・ページにResultSetの情報が表示されます。#active
を使用して評価されます。値がnullでなく、空ではない文字列またはゼロ以外の整数である場合、結果はtrue
になります。この例では、表セル<td>
は変数xDepartment
の値に応じて定義されます。
<$if xDepartment$> <td><$xDepartment$></td> <$else$> <td>Department is not defined.</td> <$endif$> <$xDepartment=""$>
xDepartment
の値が定義された場合、xDepartment
の値が表セルに表示されます。xDepartment
の値が定義されていないか、空(null)文字列の場合、表セルの内容としてメッセージが書き込まれます。xDepartment
変数を空の文字列にリセットすることによってクリアします。ループ構造により、同じコードを何回でも実行することができます。ループ処理は、Idoc Scriptでは次の2通りの方法で実行できます。
ループ構造から出て終了する場合の情報は、「ループの終了」を参照してください。
ResultSetのループでは、問合せから返されるResultSetの行ごとに一連のコードが繰り返されます。ループされるResultSetの名前は、次の構文を使用して変数として指定されています。
<$loop ResultSet_name$>
code
<$endloop$>
<$loop$>
タグと<$endloop$>
タグ間のコードは、ResultSetの行ごとに1回繰り返されます。
ResultSetループの内側では、getValue()関数を使用してResultSetから値を取得できます。値の置換は、ループ内で現在アクセスしている行によって異なります。
ResultSetループの内側にいる場合は、そのResultSetがアクティブになり、変数および条件文を評価する際に他のResultSetよりも優先されます。
ResultSetループでは無限ループは使用できない(有限リスト)のに対し、while
ループでは無限ループを生じることができます。
<$loop$>
タグを使用して、ResultSetをポイントする変数を繰り返しループすることはできません。かわりに、関数rsFirst()およびrsNext()を使用して、ResultSetを手動でループする必要があります。
たとえば、次のコードを使用してResultSetを繰り返しループすることはできません。
<$name="SearchResults"$> <$loop name$> <!--output code--> <$endloop$>
かわりに、次のコードを使用する必要があります。
<$name="SearchResults"$> <$rsFirst(name)$> <$loopwhile getValue(name, "#isRowPresent")$> <!--output code--> <$rsNext(name)$> <$endloop$>
この例では、GET_SEARCH_RESULTS
サービスによって生成されたSearchResults
というResultSetをループすることによって、検索結果表が作成されます。
<$QueryText="dDocType <matches> 'ADACCT'"$> <$executeService("GET_SEARCH_RESULTS")$> <table> <tr> <td>Title</td><td>Author</td> </tr> <$loop SearchResults$> <tr> <td><a href="<$SearchResults.URL$>"><$SearchResults.dDocTitle$></a></td> <td><$SearchResults.dDocAuthor$></td> </tr> <$endloop$> </table>
Whileのループにより、条件ループを作成できます。whileループの構文は、次のとおりです。
<$loopwhile condition$>
code
<$endloop$>
condition
式の結果がtrue
の場合は、タグ<$loopwhile$>
および<$endloop$>
間のコードが実行されます。
ループ内のすべてのコードが実行された後で、制御がループの先頭に戻り、そこでcondition
式が再度評価されます。
結果がtrue
の場合は、コードが再度実行されます。
結果がfalse
の場合、ループは終了します。
この例では、ループを通過するたびに、abc
という変数が2ずつ増えていきます。6回目の通過で(この時、abc
は10になります)、条件式はtrueではなくなるため、ループが終了します。
<$abc=0$> <$loopwhile abc<10$> <$abc=(abc+2)$> <$endloop$>
Idoc Scriptは、次に示す管理インタフェースのいくつかの領域で使用できます。
「ワークフロー管理」ツールでは、Idoc Scriptを使用して次の項目の定義が行えます。
ステップ・イベント
ジャンプ・メッセージ
追加の終了条件
トークン
ジャンプのカスタム効果
たとえば、次のステップ入力スクリプトは、Secure
セキュリティ・グループ内のドキュメントをワークフローの次のステップに送信します。
<$if dSecurityGroup like "Secure"$> <$wfSet("wfJumpName", "New")$> <$wfSet("wfJumpTargetStep", wfCurrentStep(1))$> <$wfSet("wfJumpEntryNotifyOff", "0")$> <$endif$>
詳細は、「ワークフロー」を参照してください。
「Webレイアウト・エディタ」では、ページ・タイトル、ページ説明、URL説明、問合せ結果ページおよびコンテンツ問合せでIdoc Scriptが使用できます。次に例を示します。
問合せ結果ページの定義にIdoc Scriptタグを使用して、検索結果表の各行のコンテンツを指定できます。
検索結果で最大7日までのコンテンツ・アイテムをすべて返すように設定するには、検索問合せを次のように定義することもできます。
dInDate > '<$dateCurrent(-7)$>'
現在のユーザーに基づいて結果を返すレポートを定義するには、レポート問合せ式の一部をUser Name is <$UserName$>
と定義することもできます。
詳細は、『Oracle Fusion Middleware Oracle WebCenter Contentの管理』の管理インタフェースに関する項を参照してください。
「バッチ・ローダー」では、マッピング・ファイルにIdoc Scriptを使用して、ファイル・レコード用にメタデータを決定する方法をバッチ・ローダー・ユーティリティに指示することができます。
「アーカイバ」では、次の領域でIdoc Scriptが使用できます。
「リリース日」
の値として<$dateCurrent(-365)$>
を使用します。Output
値として<dateCurrent(7)$>
を使用することもできます。コンテンツ・サーバー・インスタンスの「一般構成」ページまたはOracle WebCenter Content: Inbound Refineryインスタンスの「ローカル構成」ページまたは「共有構成」ページで、システム・プロパティ・ユーティリティに値を設定する場合、実際には、Idoc Scriptの構成変数を設定することになります。詳細は、『Oracle Fusion Middleware Oracle WebCenter Contentの管理』を参照してください。
次のキーワードは、Idoc Scriptでは特殊な意味を持ちます。
キーワード | 例 | 説明 |
---|---|---|
#active |
<$#active.variable$> |
次のデフォルトの順序で検索して、指定された変数の値をDataBinderから取得します。
変数が見つからない場合、エラー・レポートをデバッグ出力に送信しません。 |
#local |
<$#local.variable$> |
指定した変数の値をローカル・データから取得します。変数が見つからない場合、エラー・レポートをデバッグ出力に送信しません。 |
#env |
<$#env.variable$> |
指定した変数の値を環境設定から取得します。変数が見つからない場合、エラー・レポートをデバッグ出力に送信しません。 |
exec |
<$exec expression$> |
式を実行して、出力を抑制します(式をページに表示しません)。 旧バージョンのIdoc Scriptでは、execキーワードは変数の値を出力ファイルに表示しないようにするために必須でした。現行バージョンでは、execキーワードは式を出力ファイルに表示しないようにする場合のみ必要です。 |
include |
<$include ResourceName$> |
指定したリソースからコードをインクルードします。詳細は、「インクルード」を参照してください。 |
super |
<$include super.<include>$> |
既存バージョンのインクルード・コードから開始します。詳細は、「Superタグ」を参照してください。 |
コンテンツ・サーバーのページでは、特殊なキーワードinclude
とexec
、および関数inc
とeval
が広範に使用されます。この項では、これらのコマンドの違いについて説明し、その使用例を示します。
キーワードinclude
とexec
は定義済パラメータで動作するスタンドアロン・コマンドですが、パラメータとして変数を取ることはできません。関数inc
とeval
も同様の目的で動作しますが、パラメータとして変数を取れるため、変数の値に応じてIdoc Scriptコードを動的に作成できます。
次の各項では、これらのキーワードと関数について詳しく説明します。
exec
キーワードは、Idoc Script式を実行し、出力を抑制します(式をページに表示しません)。これは主として、ページに何も書き込まずに変数を設定するために使用します。
旧バージョンのIdoc Scriptでは、exec
キーワードは変数の値を出力ファイルに表示しないようにするために必須でした。現行バージョンでは、exec
キーワードは式を出力ファイルに表示しないようにする場合のみ必要です。
たとえば、次の式を使用すると、出力値0
または1
が出力ファイルに表示されます。
<$rsFirst(name)$>
かわりに、式の前にexec
キーワードを使用すると、出力が抑制されます。
<$exec rsFirst(name)$>
また、次のようにexec
を使用して出力をrsNext
から抑制することもできます。
<$exec rsNext(name)$>
『Idoc Scriptの関数および変数』のexecに関する項を参照してください。
eval
関数は、実際のIdoc Scriptのように式を評価します。
次の例では、one
という変数が文字列Company Name
に割り当てられ、two
という変数が、変数one
が含まれている文字列に割り当てられています。
<$one="Company Name"$> <$two="Welcome to <$one$>"$> <$one$><br> <$two$><br> <$eval(two)$>
ページの出力では、変数one
は文字列Company Name
を表し、変数two
は文字列Welcome to <$one$>
を表し、関数eval(two)
は文字列Welcome to Company Name
を表します。
評価する文字列は、Idoc Scriptのデリミタ<$ $>
で囲む必要があります。そうしないと、Idoc Scriptとして評価されません。
また、この方法で動的に生成されたコンテンツが多すぎると、ページの表示が遅くなることもある点に留意してください。eval
関数をページに頻繁に使用する場合は、コードをインクルードに入れて、inc
関数をeval
関数とともに使用するほうが効率的な場合があります。
『Idoc Scriptの関数および変数』のeval()に関する項を参照してください。
include
キーワードは、コードのチャンクを現在のページに統合する標準的な手段です。include
はキーワードであるため、パラメータとして変数を取ることはできません。パラメータは既存のインクルードの名前である必要があります。
「Includes」、および『Idoc Scriptの関数および変数』のincludeに関する項を参照してください。
inc
関数は、パラメータとして変数を取れる点を除き、include
キーワードと同じ動作をします。この関数は、変数の現在の値に応じて使用するインクルードを動的に変更する際に、非常に役立ちます。
たとえば、カスタム・メタデータ・フィールドの全部ではなく、一部に対してIdoc Scriptを実行するとします。次のIdoc Scriptを実行することにより、フィールド名(specific_include_xComments
など)に基づいてインクルードを動的に作成することもできます。
<$loop DocMetaDefinition$> <$myInclude = "specific_include_" & dName$> <$exec inc(myInclude)$> <$endloop$>
inc関数によって指定されたインクルードの出力を抑制するexecキーワードの使用に留意してください。inc
関数の前にexec
を使用しない場合、指定されたインクルードの内側のHTMLはページに表示されます。
specific_include_xComments
が存在しない場合は、出力が表示されないため、このコードによってエラーがスローされることはありません。
『Idoc Scriptの関数および変数』のinc()に関する項を参照してください。
次の比較演算子を使用して、2つのオペランドの値を比較し、比較結果に基づいて値true
またはfalse
を返します。これらの演算子は、Idoc Scriptで整数およびブール値の比較に使用できます。
Idoc ScriptをHCSPページまたはHCSFページで使用している場合は、特殊な比較演算子を使用する必要があります。詳細は、「比較演算子」を参照してください。
演算子 | 説明 | 例 |
---|---|---|
== | 等価 | <$if 2 == 3$> はfalseに評価されます。 |
!= | 非等価 | <$if 2 != 3$> はtrueに評価されます。 |
< | より小さい | <$if 2 < 2$> はfalseに評価されます。 |
<= | より小さいか等しい | <$if 2 <= 2$> はtrueに評価されます。 |
> | より大きい | <$if 3 > 2$> はtrueに評価されます。 |
>= | より大きいか等しい | <$if 3 >= 2$> はtrueに評価されます。 |
これらは数値演算子であり、文字列データに日付などの有効な数値の意味がある特殊な場合のみ、文字列での使用に役立ちます(日付は、標準の比較演算子で使用された場合にミリ秒に換算されます)。
文字列の連結および比較には、次の特殊文字列演算子を使用します。
演算子 | 説明 | 例 |
---|---|---|
& |
文字列結合演算子は、文字列の連結を実行します。この演算子は、リソース・インクルード用にIdoc Scriptを生成するスクリプトの作成に使用します。 |
<$"<$include " & VariableInclude & "$>"$>
これは、次のように評価されます。 <$include VariableName$> |
like |
文字列比較演算子は、2つの文字列を比較します。
|
|
| |
文字列挿入演算子は、論理OR関数を実行して複数のオプションを区切ります。 |
<$if "car" like "car|truck|van"$> |
たとえば、変数a
に接頭辞car
があるかどうか、または部分文字列truck
が含まれているかどうかを判別するには、次の式が使用できます。
<$if a like "car*|*truck*"$>
注意:
高度な文字列演算を実行する場合は、strEquals()、strReplace()またはその他の文字列関連のグローバル関数を使用します。
like
演算子は、次のワイルドカード記号を認識します。
ワイルドカード | 説明 | 例 |
---|---|---|
* |
0文字以上の文字に一致します。 |
|
? |
1文字のみに一致します。 |
|
算術演算の実行には、次の数値演算子を使用します。これらの演算子は、整数に評価する整数、または浮動小数に評価する浮動小数に対して使用します。
演算子 | 説明 | 例 |
---|---|---|
+ |
加算演算子。 |
<$a=(b+2)$> |
- |
減算演算子。 |
<$a=(b-2)$> |
* |
乗算演算子。 |
<$a=(b*2)$> |
/ |
除算演算子 |
<$a=(b/2)$> |
% |
係数演算子。2つの値を分割した後の剰余を示します。 |
<$a=(b%2)$> |
論理評価の実行には、次のブール演算子を使用します。
演算子 | 説明 | 例 |
---|---|---|
and |
|
<$if 3>2 and 4>3$> これは、1に評価されます。 |
または |
|
<$if 3>2 or 3>4$> これは、1に評価されます。 |
not |
|
<$if not 3=4$> これは、1に評価されます。 |
ブール演算子は左から右へ評価します。第1オペランドの値のみで演算の結果を決定できる場合、第2オペランドは評価されません。
この項の内容は次のとおりです。
各メタデータ・フィールドには、コードで使用される内部フィールド名が割り当てられています。さらに、多くのフィールドにはWebページに表示される説明キャプションがあります。
ユーザーに対してメタデータを表示する場合は、フィールドのキャプションを使用します。
ファイルをバッチ・ロードしたり、動的サーバー・ページ(.hcst、hcsp、.hcsfの各ページ)をスクリプトする場合は、内部フィールド名を使用します。
すべての内部メタデータ・フィールド名は、d
またはx
で始まります。
事前定義済フィールド名またはコア・フィールド名はd
で始まります。たとえば、dDocAuthor
です。
カスタム・フィールド名またはアドオン・フィールド名はx
で始まります。たとえば、xDepartment
です。
注意:
Oracle提供のアドオン・コンポーネントと顧客が作成したカスタム・コンポーネントは、すべてxで始まります。
構成マネージャでカスタム・メタデータ・フィールドを作成すると、フィールド名の先頭にx
が自動的に追加されます。
注意:
内部メタデータ・フィールド名は常に大/小文字を区別します。
この項では、コンテンツ・サーバー・システムでコンテンツ・アイテム別に格納される標準メタデータ・フィールドについて説明します。フィールドは次のようにグループ化されます。
次のメタデータ・フィールドは、インタフェースのカスタマイズで最もよく使用されます。デフォルトでは、これらのフィールドはチェックイン・ページと検索ページに表示されます。
注意:
アドオン・コンポーネントの多くについてはリストに記載していません。たとえば、FrameworkFoldersコンポーネントはコンテンツ・サーバーの多くの構成で有効ですが、FrameworkFoldersフィールドはリストに記載されていません。
コンテンツID (dDocName
)をdID
と混同しないようにしてください。dID
は、コンテンツ・アイテムの特定のリビジョンを示す内部生成された整数です。
内部フィールド名 | 標準的なフィールド・キャプション | 説明 |
---|---|---|
dDocAccount |
アカウント | セキュリティ・アカウント。 |
dDocAuthor |
作成者 | リビジョンをチェックインしたユーザー。 |
xComments |
コメント | 説明的なコメント。 |
dDocName |
コンテンツID | 一意のコンテンツ・アイテム識別子 |
dOutDate |
有効期限 | リビジョンが検索または表示に使用できなくなる日付。 |
dInDate |
リリース日 | リビジョンが検索および表示に使用可能になると予定されている日付(dCreateDate およびdReleaseDate も参照のこと)。 |
dRevLabel |
リビジョン | リビジョンのラベル(dRevisionID も参照のこと)。 |
dSecurityGroup |
セキュリティ・グループ | セキュリティ・グループ。 |
dDocTitle |
タイトル | 説明的なタイトル。 |
dDocType |
タイプ | コンテンツ・タイプ。 |
共通メタデータ・フィールドの値の他にも、次のメタデータがコンテンツ・アイテム用に格納されます。
内部フィールド名 | 標準的なフィールド・キャプション | 説明 |
---|---|---|
|
チェックアウト者(コンテンツ情報ページ) |
リビジョンをチェックアウトしたユーザー。 |
|
なし |
リビジョンがチェックインされた日付。 |
|
フォーマット(コンテンツ情報ページ) |
プライマリ・ファイルと代替ファイルの形式。 |
|
なし |
一意のレンディション識別子。 |
|
なし |
プライマリ・ファイルのファイル拡張子。 |
|
なし |
プライマリ・ファイルのサイズ(バイト)。 |
|
なし |
使用されません。 |
|
フォーマット(チェックイン・ページ、Allow override format on checkinを有効化) |
プライマリ・ファイルの形式。 |
|
なし |
一意のリビジョン識別子。 |
|
なし |
インデクサ・サイクルのリビジョンの状態。使用される値は次のとおりです。
これらの値の特定の定義は、 |
|
なし |
リビジョンがチェックアウトされているかどうかを示します。
|
|
なし |
ファイルのタイプがプライマリか代替かを示します。
|
|
なし |
ファイルが
|
|
なし |
使用されません。 |
|
なし(コンテンツ情報ページ) |
索引付けまたは変換に関して成功または失敗の理由を示します。 |
|
ネイティブ・ファイルの取得(コンテンツ情報ページ) オリジナル・ファイル(リビジョン・チェックイン・ページ) |
ネイティブ・ファイルのオリジナル・ファイル名。 |
|
なし |
リビジョンの変換ステータス。使用される値は次のとおりです。
|
|
なし |
リビジョンがリリースされた日付。 |
|
なし |
リビジョンのリリース・ステータス。
|
|
なし |
ファイルがサムネイル・レンディションかどうかを示します。指定可能な値は次のとおりです。
|
|
なし |
使用されません。 |
|
なし |
コンテンツID ( |
|
なし |
|
|
ステータス(コンテンツ情報ページ) |
システムでのリビジョンの状態。指定可能な値は次のとおりです。
|
|
なし |
Web表示可能ファイルのファイル拡張子。 |
オプション・リストは、メタデータ・フィールドに選択可能な値のセットです。オプション・リストは(DBから動的に作成された)問合せから構成するか、ハードコード化してファイル・システムのコンテンツ・サーバー・ファイル(HDA)に格納できます。
次の各トピックで、オプション・リストの使用について説明します。
コンテンツ・サーバー・システムでは、デフォルトとして、次の内部オプション・リストを保持しています。
メタデータ・フィールド | オプション・リスト |
---|---|
作成者(dDocAuthor) |
docAuthors |
セキュリティ・グループ(dSecurityGroup) |
securityGroups |
タイプ(dDocType) |
docTypes |
アカウント(dDocAccount) |
docAccounts |
ロール(dRole) |
roles |
securityGroups
およびdocAccounts
の各オプション・リストは、現在のユーザーの権限に応じてフィルタ処理されます。
次のIdoc Scriptの変数および関数は、オプション・リストの生成と有効化に使用します。
変数または関数 | 説明 |
---|---|
メタデータ・フィールドのオプション・リストを生成します。 |
|
オプション・リストの名前を指定します。 |
|
メタデータ・フィールドにオプション・リストがあることを指定します。 |
|
オプション・リストのタイプ(厳密、コンボ、マルチまたはアクセス)を指定します。 |
|
fieldIsOptionList変数の値に設定します。この変数は条件文で使用されます。 |
|
標準的なオプション・リスト・フィールドを表示するIdoc Scriptを定義します。 |
|
オプション・リスト・フィールドの標準実装(defaultOptionListScript変数により定義)をオーバーライドします。 |
|
メタデータ・フィールドのオプション・リストに最後の値を事前設定できることを指定します。 |
|
オプション・リストの最初の値が空白であることを指定します。 |
|
オプション・リストの値が含まれているResultSetを指定します。 |
|
オプション・リストの値が含まれているResultSet列の名前を指定します。 |
|
オプション・リストの値を定義するインクルードを指定します。 |
オプション・リストの作成には、次のいずれかの方法が使用できます。
基本オプション・リストを生成するには、optList()関数を使用します。この関数は、loadMetaOptionsList
をコールするサービスとともに使用した場合のみ、出力を生成します。
たとえば、このコードは、HTMLオプション・リストとして使用可能な作成者のリストを表示します。
<select name="dDocAuthors"> <$optList docAuthors$> </select>
オプション・リストをResultSetに変換して、そのResultSetをループするには、rsMakeFromList()関数を使用します。
たとえば、このコードはdocAuthors
オプション・リストからAuthors
というResultSetを作成し、そのResultSetをループしてHTMLオプション・リストを作成します。(列名はrsMakeFromList
のパラメータとして指定されていないため、列名のデフォルトはrow
になります。)
<$rsMakeFromList("Authors","docAuthors")$> <select name="dDocAuthors"> <$loop Authors$> <option><$row$> <$endloop$> </select>
このコード・サンプルは、optList
関数を使用して生成されたサンプルと同じです。通常は、リストのオプションを解析または評価する際にrsMakeFromList
関数を使用します。
コードを作成することなくオプション・リストを作成するには、構成マネージャ・アプレットを使用します。
動的サーバー・ページでは、いくつかのメタデータ値が、ref:
という接頭辞付きで格納されており、その値はページで利用できますが、ResultSetの値を置換するものではありません。(このため、動的サーバー・ページによるResultSetの汚染が防止されます。)
動的サーバー・ページで次のメタデータ値のいずれかを参照する場合は、 ref:
接頭辞を含める必要があります。
hasDocInfo
dDocName
dExtension
dSecurityGroup
isLatestRevision
dDocType
dID
たとえば、次の文では、ドキュメント・タイプがPage
であるかどうかを判別します。
<$if strEquals(ref:dDocType,"Page"))$>
詳細は、「Webページの外観およびナビゲーションの変更」を参照してください。
MergeIncludeを使用すると、テンプレート・ページ全体ではなくIdoc Scriptのインクルードに基づいて、コンテンツ・サーバーのリクエスト結果をフォーマット化することができます。
MergeIncludeは、IdcCommandX ActiveX
モジュールによるASPページの統合によく使用される機能です。コンテンツ・サーバーのアーキテクチャは、Webインタフェースの最適化を図るために設計されていますが、基本的にモジュール式で、セキュアな、複数のインタフェースが組み込まれているサービス・ベースのアプリケーションです。GET_SEARCH_RESULTS
などのサービスは、渡されたQueryString
とユーザーのセキュリティ資格情報に基づいてレスポンス・データを生成します。このレスポンス・データは、HDAファイルの形式で内部表示されます。これが動作中であることを確認するには、単に検索を実行して、'IsJava=1'
または'IsSoap=1'
(XML形式のデータの場合)をURLに追加するだけです。これによって、レスポンスのデータが内部でどのように表示されるかを確認できます。
このHDA表示はWebベースのユーザーには特に便利ではないため、Idoc Scriptのインクルードとテンプレートを使用してレスポンスを読取り可能なHTMLページにフォーマット化しています。ユーザーは、テンプレートまたはいくつかのリソース・インクルードをコンポーネントとともに変更することにより、このHTMLの表示方法を変更できます。
ただし、検索結果のごく一部のみを取得したり(たとえば、コードの大半がIdoc ScriptではないASP、JSPまたはPHPの各ページに表示するため)、IFRAME要素またはDIV要素をポップアップさせて結果を表示したり、あるいは結果の表示方法を動的に変更したりするには、これらのパラメータをURLに追加するだけです。
MergeInclude=my_custom_include&IsJava=1
これにより、コンテンツ・サーバー・システムは、サービスで指定されたテンプレートに応じたレスポンスのフォーマット化をバイパスします。かわりに、レスポンスはmy_custom_include
のIdoc Scriptに基づいてフォーマット化されます。たとえば、検索を実行し、上記の行をURLに追加して、インクルードがコンポーネントに次のように表示されたとします。
<@dynamichtml my_custom_include@> <html> <table width=300> <tr> <td><b>Name</b></td> <td><b>Title (Author)</b></td> </tr> <$loop SearchResults$> <tr><td><a href="<$URL$>"><$dDocName$></a></td> <td><$dDocTitle$> (<$dDocAuthor$>)</td></tr> <$endloop$> </table> </html> <@end@>
これにより、必要のないイメージとフォーマットをすべて除いた検索結果ページが表示されます。その結果、必要なIdoc Scriptインクルードをすべて使用して、任意のコンテンツ・サーバー・レスポンスをフォーマット化することができます。理論上、Idoc Scriptインクルードには、必要なフォーマットを、種類を問わず(XML、WMLまたは単なるプレーン・テキスト)含めることができます。
たとえば、検索結果をExcelスプレッドシート形式で返す場合は、エントリのカンマ区切りリストを返すリソース・インクルードが作成できます。その後で、返されたファイルをハード・ドライブに保存し、Excelでファイルを開くことができます。もう1つの便利な方法として、IdcCommandXユーティリティまたはBatchLoaderでファイルとして読取り可能なレコード・セットにレスポンスをフォーマット化するリソース・インクルードを作成することもできます。このようなインクルードを検索結果とともに、またはWebレイアウト・エディタで作成されたアクティブ・レポートとともに使用して、データベースまたは検索索引に対する任意の問合せに固有のバッチ・ファイルを作成することもできます。
MergeInclude変数のキャッシュ方法は、通常のリソース・インクルードの場合と異なります。したがって、このリソース・インクルードを変更する場合は、コンテンツ・サーバー・インスタンスを再起動する必要があります。docLoadResourceInclude()
関数を実行してMergeIncludeの中から別のインクルードを動的にロードする場合は、この手順をバイパスしてもかまいません。
返されたデータのコンテンツ・タイプは'text/plain
'であり、MergeIncludeによって返されるデータの'text/html
'ではありません。いくつかのクライアント(Internet Explorerおよび、Netscapeの多数のバージョン)では、レスポンスに有効なHTMLがある場合にプレーン・テキストをhtml
として表示しますが、他のクライアントではこのように表示されない場合があります。問題が生じた場合は、リンクするときに手動でコンテンツ・タイプを設定する必要が生じることもあります。
有効範囲付きローカル変数は特殊なローカル変数であり、メタデータがページに作成される方法をオーバーライドする場合に使用します。これらの変数をコロンで区切ることによって、特定のメタデータ・フィールドに有効範囲が設定されます。
たとえば、タイトルとコメントのフィールドを非表示にするには、次のフラグを設定します。
dDocTitle:isHidden=1 xComments:isHidden=1
これらのフラグを設定するには、URLのページに早い段階で設定するか、インクルードstd_doc_page_definitions
をオーバーライドします。
次に示すフラグはすべて、xFieldName
:フィールドの表示に影響します。
xFieldName:groupHeader
: このフィールドがグループで最初のフィールドである場合、これはコンテンツ・プロファイルに設定されます。グループ・ヘッダーに使用するHTMLとIdoc Scriptが含まれています。
xFieldName:hasOptionList
: デフォルトのオプション・リストを使用するかわりに、カスタム・オプション・リストをフィールドに含めることができます。xFieldName:optionListName
変数またはxFieldName:optionListScript
変数とともに使用する必要があります。
xFieldName:include:
カスタム・リソース・インクルードの名前にfieldInclude
の値を設定するために使用します。このリソースは、JavaScriptおよびHTMLを含むページ全体で使用されます。このフラグは、めったに使用しません。必要な場合は、カスタム・インクルードの作成のガイドとして、std_namevalue_field
インクルード・ファイルを使用します。
xFieldName:isExcluded
: フィールドをページから完全に除外する場合、trueに設定します。これはフィールドとして、または非表示の入力フィールドとして表示されません。このフィールドは、ページに完全に存在しなくなります。
xFieldName:isHidden
: ページ上でフィールドを非表示にする場合、TRUE
に設定します。フォーム・ポストのあるページでは、このフィールドは表示されたままです。ただし、非表示の入力フィールドとして存在しているだけです。xFieldName
またはfieldValue
が定義されていないかぎり、このフィールドの値は空白になります。そのため、変更不可能なデフォルト値でページを作成することができます。
xFieldName:isInfoOnly
: フィールドの値のみを表示する場合、TRUE
に設定します。これをxFieldName:isHidden
のかわりに使用すると、送信中のデフォルト値がユーザーに表示されます。
xFieldName:isRelocated
: HTMLページでのフィールドの自動表示を停止する場合、TRUE
に設定します。デフォルトでは、ページのすべてのフィールドには特定の順序が設定されています。順序を変更するには、このフラグを設定して、フィールドを手動で表示する必要があります。
<!-- hide the comments field --> <$xComments:isRelocated = 1$> <$loop DocMetaDefinition$> <$strTrimWs(inc("std_meta_field_display"))$> <$endloop$> <!-- now turn off relocation, and display it --> <$xComments:isRelocated = ""$> <$fieldName="xComments", fieldCaption="Comments", fieldType="Memo"$> <$include std_display_field$>
xFieldName:isRequired
: このフィールドを必須フィールドにする場合、TRUE
に設定します。このフラグは、JavaScriptの検証コードがページに作成される前に、std_doc_page_definitions
に設定する必要があります。
xFieldName:maxLength
: fieldWidth
と類似していますが、これはテキスト入力フィールドの最大長を設定します。これは通常はfieldWidth
よりも大きくなります。ただし、データベースでのフィールド幅よりも小さい必要があります。
xFieldName:noSchema
: フィールドに対してスキーマ・オプション・リストを無効にする場合、TRUE
に設定します。カスタムの、動的な方法でオプション・リストを生成する場合は必須です。
xFieldName:optionListName
: このフラグは、フィールドがオプション・リストである場合のみ設定可能です。値の表示に使用するオプション・リストをオーバーライドできます。
<$xCountry:hasOptionList = 1$> <$xCountry:noSchema = 1$> <$xCountry:optionListName = "securityGroups"$> <$loop DocMetaDefinition$> <$strTrimWs(inc("std_meta_field_display"))$> <$endloop$>
xFieldName:optionListScript
: optionListName
と類似していますが、明示的に定義されたオプション・リストのかわりに、Idoc Scriptをレンダリングできる点が異なります。そのため、かわりにResultSetを使用してオプション・リストを作成できます。
<$xCountry:hasOptionList = 1$> <$xCountry:noSchema = 1$> <$xCountry:optionListScript = "<$rsMakeFromList('GROUPS', 'securityGroups')$>" & "<select>\n" & "<$loop GROUPS$>" & " <option><$row$>" & "<$endloop$>\n" & "</select>"$> <$loop DocMetaDefinition$> <$strTrimWs(inc("std_meta_field_display"))$> <$endloop$>
xFieldName:rowClass
: std_nameentry_row
で使用します。このフィールドが含まれている表の行に対して、Cascading Style Sheetクラスが設定されます。
<$xComments:rowClass="xuiPageTitleText"$> <$loop DocMetaDefinition$> <$strTrimWs(inc("std_meta_field_display"))$> <$endloop$>
xFieldName:rowStyle
: rowClass
と同じですが、これはインライン・スタイルの作成に使用できます。たとえば、「コメント」フィールドをDHTMLとともに非表示にするには、次のコードを使用します。
<$xComments:rowStyle="display:none"$> <$loop DocMetaDefinition$> <$strTrimWs(inc("std_meta_field_display"))$> <$endloop$>
これは、ページを再ロードせずにフィールドを動的に非表示または表示する場合に役立ちます。