ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Contentでの開発
11gリリース1(11.1.1)
B72427-01
  ドキュメント・ライブラリへ移動
ライブラリ
目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 動的サーバー・ページの作成

この章では、動的サーバー・ページを作成してWebページの外観およびナビゲーションを変更するために必要なビルディング・ブロックの使用方法について説明します。

この章では、次の項目について説明します。

6.1 動的サーバー・ページについて

動的サーバー・ページとは、コンテンツ・サーバーにチェックインされ、Webページを動的に生成するために使用されるファイルのことです。動的サーバー・ページは通常、Webページのルック・アンド・フィールおよびナビゲーションを変更するために使用されます。たとえば、動的サーバー・ページは、次のタスクを実行するために使用できます。

動的サーバー・ページには、次のようなファイル・フォーマットがあります。

動的サーバー・ページを使用すると、コンテンツ・サーバーでは、コンテンツ・サーバーにチェックインしたカスタム・テンプレート(HCST、HCSP、HCSFいずれかのファイル)を使用して、Webページが動的にアセンブルされます。このテンプレートでは、同じくコンテンツ・サーバーにチェックインしたテキスト・ファイル(IDOCファイル)からHTMLインクルードが呼び出されます。

Webページのルック・アンド・フィールおよびナビゲーションを変更するには、HCS*テンプレート・ページまたはIDOCファイル、あるいはその両方を変更して、改定後のファイルを新たなリビジョンとしてチェックインします。変更内容がすぐにわかります。

コンテンツ・サーバーとともに動的サーバー・ページを使用すると、次のメリットが得られます。

動的サーバー・ページを使用するかどうかを判断する際には、次の制約事項を頭に入れてください。

図6-1は、動的サーバー・ページの生成および使用プロセスを示しています。

図6-1 動的サーバー・ページのプロセス

図6-1の説明が続きます
「図6-1 動的サーバー・ページのプロセス」の説明

6.1.1 ページ・タイプ

動的サーバー・ページには次の4つのタイプがあり、ファイル名の4文字の拡張子によってコンテンツ・サーバーで識別されます。

  • IDOC

  • HCST

  • HCSP

  • HCSF

6.1.1.1 IDOCファイル

IDOCファイルは、HCST、HCSP、HCSFの各ページによって呼び出されるHTMLインクルードを含むテキスト・ファイルです。

詳細は、第11章「コンテンツ・サーバーのコンポーネントの開始」を参照してください。

6.1.1.2 HCSTファイル

Hypertext Content Server Template(HCST)ファイルは、コンテンツ・サーバーの標準的なテンプレート・ページに似たテンプレート・ページであり、Webページをアセンブルする際にフレームワークとして使用されます。

  • HCSTページが使用される代表的なケースは、ページのコンテンツ自体が動的な場合、または、検索ページ、検索結果ページ、カスタム・チェックイン・ページなどでコンテンツ・サーバー機能が必要とされる場合です。

  • このタイプのページは、動的にアセンブルされたコードでほとんどが構成されているため、HCSTファイルはコンテンツ・サーバー内で索引が付けられません。

6.1.1.3 HCSPファイル

Hypertext Content Server Page(HCSP)ファイルはパブリッシュ済のWebページであり、実際のWebサイトのコンテンツを表示します。

  • HCSPファイルの代表的な作成方法としては、テンプレートとしてHCSTページを使用し、Content PublisherによってWebページを生成すること、または、HCSFページによってコンテンツ・サーバーでフォームを送信することがあります。

  • このタイプのページは、Web表示可能なコンテンツが含まれているため、HCSPファイルはコンテンツ・サーバー内で索引が付けられます。

6.1.1.4 HCSFファイル

Hypertext Content Server Form(HCSF)ファイルは、HCSPファイルに似ていますが、Webブラウザから記入して送信することのできるHTMLフォーム・フィールドが含まれている点が違います。

  • ユーザーがHCSFページからフォームを記入して送信すると、HCSFページのXML要素によってメタデータが定義された別のコンテンツ・アイテムとして、HCSPファイルがチェックインされます。

  • このタイプのページは、Web表示可能なコンテンツが含まれているため、HCSFファイルはコンテンツ・サーバー内で索引が付けられます。

    HCSFページの詳細は、第6.1.1.4項「HCSFファイル」を参照してください。

6.2 Webページの外観およびナビゲーションの変更

動的サーバー・ページは、カスタム・コンポーネントとは異なる形でコンテンツ・サーバーに実装されていますが、WebCenter Contentコンポーネントのアーキテクチャ概念、特にコンテンツ・サーバーのテンプレートおよびHTMLインクルードに精通している必要があります。詳細は、第11章「コンテンツ・サーバーのコンポーネントの開始」を参照してください。

動的サーバー・ページとともにコンテンツ・サーバーのインスタンスをカスタマイズするには、次の基本手順を実行します。

  1. カスタム・インクルードを含むIDOCファイルを作成します。

  2. IDOCファイルをコンテンツ・サーバーにチェックインします。

  3. IDOCファイルを参照するHCSTファイル、HCSPファイルまたはHCSFファイルを作成します。

  4. HCS*ファイルをコンテンツ・サーバーにチェックインします。

  5. コンテンツ・サーバーで検索するか、またはパブリッシュされたWebページからリンクすることによって、WebブラウザでHCS*ファイルを表示します。


    ヒント:

    Content Publisherとともに動的サーバー・ページを使用することは、Web公開の強力なツールになる可能性があります。詳細は、Content Publisherのドキュメントを参照してください。


6.2.1 構文

異なるタイプの動的サーバー・ページは、解釈も表示も異なっているため、ファイル内のIdocスクリプトは、異なるコーディングを行う必要があります。次の表は、それらの違いをまとめたものです。

ファイル・タイプ .idoc .hcst .hcsp .hcsf

全文索引作成

いいえ

いいえ

はい

はい

Idoc Scriptの式

<$ … $>

<$ … $>

<!--$ … -->

[!--$ … --]

<!--$ … -->

[!--$ … --]

比較演算子

記号(==)

記号(==)

特殊演算子(eq)

特殊演算子(eq)

特殊文字

記号(&)

記号(&)

エスケープ・シーケンス(&amp;)

エスケープ・シーケンス(&amp;)

メタデータの参照

必須

必須

必須

必須



注意:

Idocスクリプトでは、標準的なHTMLインクルードのコーディングを使用します。詳細は、第17.2.1項「HTMLインクルード」を参照してください。

HCSTでは、コンテンツ・サーバーの標準的なテンプレートのコーディングを使用します。詳細は、第17.2.8.1項「テンプレート・ページとレポート・ページ」を参照してください。

HCSPとHCSFでは特殊なコーディングが使用され、ページを静的にも動的にもレンダリングでき、全文索引を作成できます。


6.2.1.1 Idoc Scriptの式

HCSPページとHCSFページでは、Idocスクリプトの式は一般的に、HTMLコメント・タグ間に配置されます。ページが静的に表示されるときには、このように配置することによって、Webブラウザでページ・コンテンツを表示でき、コンテンツの書式設定に使用されている動的コードがあっても無視されます。またこれによって、全文索引作成エンジンが、これらのページのコンテンツの索引を正常に作成できます。

次に、いくつかの例を示します。

  • IDOCファイルまたはHCSTファイル: <$include MyIdocExpression$>

  • HCSPファイルまたはHCSFファイル: <!--$include MyIdocExpression-->

状況によっては、HTMLコメントの開始と終了を制御することもできます。HCSPファイルとHCSFファイルでは、この操作を行うには、例6-1に示すように、Idoc Scriptの式の後にある終了タグで、ダッシュ(-)を他の文字に置換します。

例6-1 HCSPファイルまたはHCSFファイルでのHTMLコメントのシャープ記号によるデリミタ

<!--$a="ab"##> HTML comment remains open
<a href="<!--$myUrlAsVariable##>">MyUrl</a> Static view does not see this
<!--$dummy=""--> <!—Ended the comment area-->.

例6-1では、ダッシュ(-)がシャープ記号(#)に置換されています。

HCSPファイルとHCSFファイルでの別のオプションとしては、例6-2に示すように、標準的なHTMLコメントの開始タグおよび終了タグ(< >)を大カッコ([])に置換します。このように置換すると、XHTMLパーサーでは、静的に表示されたときにすべてのスクリプトを適切に識別できます。

例6-2 HCSPファイルまたはHCSFファイルでのHTMLコメントの大カッコによるデリミタ

<!--$a="ab"--] HTML comment remains open
<a href="[!--$myUrlAsVariable--]">MyUrl</a> Static view does not see this
[!--$dummy=""--> <!—Ended the comment area-->.

6.2.1.2 比較演算子

HCSPページとHCSFページでは、(==などの)標準的な比較演算子は、HTMLパーサーにとっては特殊な意味があるため使用できません。動的サーバー・ページでは、次の比較演算子を使用します。

IDOCファイルまたはHCSTファイル HCSPファイルまたはHCSFファイル 説明

==


eq

等価かどうかをテストします。

!=

ne

非等価かどうかをテストします。

<


lt

より小さいかどうかをテストします。

>

gt

より大きいかどうかをテストします。

<=


le

以下かどうかをテストします。

>=

ge

以上かどうかをテストします。


たとえば、次のコードは、変数countの値が10より大きいかどうかを評価します。

IDOCファイルまたはHCSTファイル HCSPファイルまたはHCSFファイル
<$if count > 10$>
    <$"Count is greater than"$>
<$endif$>
<!--$if count gt 10-->
    <!--$"Count is greater than"-->
<!--$endif-->

6.2.1.3 特殊文字

HCSPページとHCSFページでは、アンパサンド(&)などの特殊文字は、HTMLパーサーにとっては特殊な意味があるため使用できません。HTMLまたはXMLの標準的なエスケープ・フォーマット(&amp;&#038;など)を使用する必要があります。


注意:

HCSPページまたはHCSFページからdocLoadResourceIncludes関数をコールするときには、エスケープ文字&amp;を使用することが特に重要です。詳細は、第6.2.2.1項「docLoadResourceIncludes関数」を参照してください。


次の例に示すように、Idocスクリプトでは、先頭にバックスラッシュ文字を置くことによって、文字列に引用符を含めることができますが、HCSPページまたはHCSFページでは、引用符はHTMLのエスケープ文字で表す必要があります。

  • IDOCファイルまたはHCSTファイル: "Enter \"None\" in this field."

  • HCSPファイルまたはHCSFファイル: "Enter &quot;None&quot; in this field."

HCSTページでは、\nを使用して行送りが挿入されます。HCSPページでは、行送りをファイルに直接挿入するか、または行送りの数値ASCII番号を使用してXML内にエンコードします。


注意:

&文字列の結合演算子をjoinという単語に置換できるようになりました。たとえば、[!--$a join b--]と記述できます。それまでは、[!--$a & b--]と記述していました。要素の属性内のXMLパーサーでは、最初のものは受け入れられますが、2番目のものは受け入れられません。


6.2.1.4 メタデータの参照

動的サーバー・ページでは、いくつかのメタデータ値が、ref:という接頭辞付きで格納されており、その値はページで利用できますが、ResultSetの値を置換するものではありません。(このため、動的サーバー・ページによるResultSetの汚染が防止されます。)

動的サーバー・ページで次のメタデータ値のいずれかを参照する場合は、ref:接頭辞を含める必要があります。

  • hasDocInfo

  • dDocName

  • dExtension

  • dSecurityGroup

  • isLatestRevision

  • dDocType

たとえば、次の文では、ドキュメント・タイプがPageであるかどうかを判別します。

<$if strEquals(ref:dDocType,"Page"))$>

6.2.2 Idoc Scriptの関数

動的サーバー・ページでは、Idocスクリプトの次の2つの特殊関数が必要です。

  • docLoadResourceIncludes

  • executeService

6.2.2.1 docLoadResourceIncludes関数

IDOCファイルでHTMLインクルードを使用できるようにするには、次の例に示すように、HCS*ファイルでdocLoadResourceIncludes関数をコールする必要があります。この関数では、現在のページのアセンブルに使用できるように、指定されたIDOCファイルからすべてのインクルードがロードされます。例6-3に、HCSTファイルからこの関数をコールする形式を示します。

例6-3 HCSTファイルでのdocLoadResourceIncludes関数コール

<$docLoadResourceIncludes("dDocName=system_std_page&RevisionSelectionMethod=Latest")$>

例6-4に、HCSPファイルまたはHCSFファイルからこの関数をコールするフォーマットを示します。

例6-4 HCSPファイルまたはHCSFファイルでのdocLoadResourceIncludes関数コール

<!--$docLoadResourceIncludes("dDocName=system_std_page&amp;RevisionSelectionMethod=Latest")-->
6.2.2.1.1 docLoadResourceIncludes関数をコールするための要件
  • 指定されたコンテンツ・アイテムのネイティブ・ファイルでは、拡張子が.idocになっている必要があります。

  • docLoadResourceIncludesコールは、HCS*ファイル内で最初のインクルードの前に配置する必要があります。この関数は、ページのHEADセクション内に配置することをお薦めします。

  • HCS*ページからdocLoadResourceIncludes関数をコールするときには、正しいアンパサンド文字を使用する必要があります。詳細は、第6.2.1.3項「特殊文字」を参照してください。

6.2.2.1.2 パラメータ

どのIDOCファイルを呼び出すかを指定するには、docLoadResourceIncludes関数で次のパラメータを使用します。

  • dDocNamedIDのいずれかを定義する必要があります。両方のパラメータをいっしょに使用することはやめてください。

  • dDocNameを定義する場合は、RevisionSelectionMethodLatestまたはLatestReleasedに定義する必要があります。

  • dIDを定義する場合は、RevisionSelectionMethodを定義しないでください。あるいは、RevisionSelectionMethodSpecificに定義します。

    パラメータ 説明

    dDocName

    IDOCファイルの「コンテンツID」の値を指定します。

    このパラメータは、「コンテンツID」の値がわかっているときには常に存在している必要があります。エラー・メッセージは、フォームなど、他の機能と同様に、これが存在しているという想定に基づいています。

    dID

    IDOCファイルの特定のリビジョンの一意のID番号を指定します。

    RevisionSelectionMethod

    このIDOCファイルのいずれのリビジョンを使用するかを指定します。

    • Latest: 最後にチェックインされたリビジョンのドキュメントが使用されます(ワークフロー内のリビジョンを含みます)。

    • LatestReleased: 最後にリリースされたリビジョンのドキュメントが使用されます。

    • Specific: dIDを使用した場合にのみ使用します。

    Rendition

    このIDOCファイルのいずれのレンディションを使用するかを指定します。

    • Primary: プライマリ(ネイティブ)ファイル。これは、Renditionの値が指定されていない場合に有効となるデフォルト値です。

    • Web: Web表示可能ファイル。

    • Alternate: 代替ファイル。


6.2.2.2 executeService関数

executeService関数は、動的サーバー・ページ内からコンテンツ・サーバーのサービスを実行します。次に例を示します。

HCSTファイル: <$executeService("GET_SEARCH_RESULTS")$>

HCSPファイルまたはHCSFファイル: <!--$executeService("GET_SEARCH_RESULTS")-->

  • executeService関数でコールできるサービスは、パラメータ入力が必要でないという意味で、「スクリプト可能」である必要があります。

  • スクリプト可能なサービスのアクセス・レベルは32以上です。詳細は、第24章「環境へのWebCenter Contentの統合の開始」を参照してください。

  • コンテンツ・サーバーの標準的なサービスについては、IdcHomeDir/resources/core/tables/std_services.htmファイルを参照してください。

  • executeService関数の詳細は、『Oracle Fusion Middleware Oracle WebCenter Content構成リファレンス』を参照してください。

  • サービスの詳細は、第24章「環境へのWebCenter Contentの統合の開始」を参照してください。


    パフォーマンスに関するヒント:

    サービスの使用は控えめにしてください。ページ上でサービス・コールが多すぎると、パフォーマンスが影響を受けたり、スケーラビリティが制限される場合があります。


6.2.3 開発に関する推奨事項

動的サーバー・ページの開発を支援するための次の推奨事項には、一般的なガイドラインとHCSFのガイドラインが含まれています。

6.2.3.1 一般的なガイドライン

次の推奨事項は、すべてのタイプの動的サーバー・ページの開発に当てはまります。

  • テンプレートは、できるだけ簡略でコードのないものにします。テンプレートはHTMLインクルードのみにして、コードと条件はすべてIDOCファイルに入れるようにします。これが特に役立つのはHCSFページで、そこでは、送信されたフォームも、IDOCファイルに対する変更に反映されます。

  • Oracle WebCenter Content Serverのインスタンスをカスタマイズする場合は常に、開発作業を本番システムから切り離してください。動的サーバー・ページを頻繁に改定すると、廃止されるコンテンツ・アイテムが大量に発生する場合があることを頭に入れてください。本番インスタンスにデプロイする前に、開発システムでできるだけ多くの作業を済ませてください。また、古くなったページを定期的に削除することをお薦めします。

  • 動的サーバー・ページを使用してWebサイトを開発するときには、開発プロセスとコントリビューション・プロセスを、所有の観点で考えます。

    • 構造(サイトの設計とナビゲーションを含む)は、Webマスターが所有しています。動的サーバー・ページを使用するときには、構造は、IDOCファイルに定義されているインクルードに含まれており、そのインクルードとともに制御されます。

    • コンテンツ、すなわちWebページの実際のテキストは、コントリビュータが所有しています。動的サーバー・ページを使用するときには、コンテンツは主として、IDOCファイル内のインクルードを利用するHCSPファイルに含まれています。

  • Content Publisherとともに動的サーバー・ページを使用することは、Web公開の強力なツールになる可能性があります。Word文書またはHCSFページを使用してコンテンツを作成し、Content Publisherを使用して、そのドキュメントを、パブリッシュされたHCSPファイルに変換することができます。SCPテンプレートで前にインクルードと後ろにインクルードのオプションを使用して、追加のIdocスクリプト・インクルードを挿入できます。

  • Content Publisherで動的サーバー・ページをパブリッシュする場合は、ドキュメントを簡単に識別できるように接頭辞オプションを使用します。

  • 一貫性のあるネーミング規則を使用します。たとえば、「システム」レベルのインクルードの場合は、IDOCファイルにsystem_std_pageという名前を付け、そのファイル内の各インクルードに、system_を接頭辞とする名前を付けることができます。こうすると、インクルードを見つけやすくなります。

  • 動的サーバー・ページのタイプごとにコンテンツ・タイプを作成することをお薦めします(HCSF_templatessubmitted_formsなど)。

  • 優れたコーディング手法に従って、動的サーバー・ページに常にコメントを入れて、カスタマイズの記録を残してください。

6.2.3.2 HCSFガイドライン

次の推奨事項は、HCSFページの開発にのみ当てはまります。

  • フォームを設計する際には、テンプレートがどのように使用されるかを検討してください。

    • このテンプレートは、フォームを送信するユーザーのロールに応じて変わるか

    • 送信されたコンテンツは、重要なワークフローに入るか

    • どのようなデフォルトのメタデータ値を設定するか

    • 複数のライン入力に対するResultSetがフォームに含まれるか

  • フォームのパラメータがWebブラウザからWebサーバーに渡され、Oracle WebCenter Content Serverを通じてフィルタリングされてWebブラウザに戻されるときに、そのパラメータが表示されるようにするには、次のようにして、インクルード・コードのmethod属性をPOSTからGETに変更します。

    <form name="<$formName$>" method="GET" action="<$HttpCgiPath$>">
    
  • DataScriptというフォーム・フィールドを、送信されているフォームに追加した場合、その値に対するIdocスクリプトがあれば、Oracle WebCenter Content Serverがフォームを処理するときにそのスクリプトを評価します。

6.2.4 HCSFページ

Oracle WebCenter Content ServerテンプレートおよびHTMLフォームに対する標準的な書式設定ルールを遵守することに加えて、HCSFページでは、Oracle WebCenter Content Serverによる処理を可能とする特殊なセクションとタグがいくつか必要です。これらの特殊セクションは、通常のHCSFファイルでは次の順序で表示されます。

  1. ロード・セクション

  2. データ・セクション

  3. フォーム・セクション

完全なHCSFページの例は、第6.1.1.4項「HCSFファイル」を参照してください。

6.2.4.1 ロード・セクション

HCSFページの先頭にあるロード・セクションでは、ファイルをHTMLファイルとして宣言し、IDOCファイルをロードして、ページに関する他の情報をロードします。例6-5は、一般的なロード・セクションを示しています。

例6-5 HCSFページのロード・セクション

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<!--$docLoadResourceIncludes("dDocName=my_idoc_page&amp;RevisionSelectionMethod=Latest")-->
<meta NAME="idctype" CONTENT="form; version=1.0">
<!--$defaultPageTitle="Department News Form"-->
<!--$include std_html_head_declarations-->
</head>

ロード・セクションには、次の3つのアイテムがあります。

  • HTML宣言

  • docLoadResourceIncludes関数

  • meta要素

  • 変数とインクルード

6.2.4.1.1 HTML宣言

HTML宣言では、次の構文でファイルをHTMLファイルとして指定しています。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
6.2.4.1.2 docLoadResourceIncludes関数

docLoadResourceIncludes関数では、現在のページのアセンブルに使用できるように、指定されたIDOCファイルからすべてのインクルードがロードされます。詳細は、第6.2.4.1.2項「docLoadResourceIncludes関数」を参照してください。

6.2.4.1.3 Meta要素

meta要素がContent Publisherによって使用され、これが特殊なタイプのページであることを示します。

  • この要素は、フォームがContent Publisherによってパブリッシュされていない場合は不要です。

  • meta要素は、HTMLファイルのHEADセクションの内側に配置する必要があります。

  • metaタグには次の構文を使用します。

    <meta NAME="idctype" CONTENT="form; version=1.0">
    
6.2.4.1.4 変数とインクルード

HCSFページのHEADセクションには、必要に応じて、変数定義とHTMLインクルードが含まれる場合があります。HEADセクションの中でデフォルトのページ・タイトルを定義し、std_html_head_declarationsコードをロードする行を、例6-6に示します。

例6-6 HCSFページのHEADセクションにおける変数定義とインクルード

!--$defaultPageTitle="Department News Form"-->
<!--$include std_html_head_declarations-->

6.2.4.2 データ・セクション

HCSFページのデータ・セクションには、フォームの処理に使用されるルールおよびメタデータ情報が含まれます。データ・セクション内の情報とページの表示との間には、次のように緊密な関係があります。

6.2.4.2.1 データ・セクションの構造

例6-7に示すように、データ・セクションは、Idoc Scriptのタグidcbegindataidcenddataの間に配置されたXML要素で構成されます。

例6-7 HCSFページのデータ・セクション

<!--$idcbegindata-->
<idcformrules isFormFinished="0"/>
<model_number content="html">AB-123</model_number>
<revision>12</revision>
…
<!--$idcenddata-->

データ・セクションには次のルールが適用されます。

  • データ・セクションは、HTMLファイルの、フォーム・セクションの先頭より前にある<BODY>セクションの内側に配置する必要があります。

  • Idocスクリプトの変数定義とインクルードは、データ・セクションの中ではなく、前後に配置します。

  • データ・セクションで使用されるXML要素のタイプは、次の2つです。

  • データ・セクションでは、次のタイプの書式設定を使用することもできます。

6.2.4.2.2 idcformrules要素

idcformrules要素では、データ・セクションにおけるコンテンツ・サーバーのルールを定義します。この要素では、isFormFinishedresultsetsのいずれか1つの属性が必要です。

  • IsFormFinished属性: isFormFinished属性は、フォームを再送信できるかどうかを示します。

    • フォームを再送信可能と指定する場合は、次の属性値を使用します。

      <idcformrules isFormFinished="0"/>
      
    • フォームを再送信不可能と指定する場合は、次の属性値を使用します。

      <idcformrules isFormFinished="1"/>
      

      このコードでは、読取り専用のフォームになります。

  • resultsets属性: resultsets属性は、データ・セクション内のいずれのXML要素がResultSetと解釈されるかを示します。

    • この属性では、1つ以上のXMLタグ名をカンマで区切って指定します。次に例を示します。

      <idcformrules resultsets="volume,chapter">
      
    • ユーザーへのHCSFページの配信中に、コアのコンテンツ・サーバーがresultsets属性を読み取り、必要に応じて、指定した名前を持つ空のResultSetをDataBinderオブジェクトに配置して、マージに利用できるようにします。

      データ・セクションにおけるResultSetの書式設定の詳細は、第6.2.4.2.7項「ResultSet」を参照してください。

6.2.4.2.3 メタデータ要素

メタデータ要素では、ブラウザにフォームを表示するときにフォーム・フィールドに表示されるメタデータ値を指定します。次に例を示します。

<model_number>AB-123</model_number>

各メタデータ要素には、その要素にどのタイプのコンテンツが含まれるかを示すcontent属性を割り当てることができます。次に例を示します。

<model_number content="html">AB-123</model_number>
  • content属性の値としては、htmltextのいずれかが可能です。textは、この要素のコンテンツを、厳密にテキストと解釈することを示します。htmlは、この要素のコンテンツをHTMLと解釈することを示します。

  • メタデータ要素にcontent属性が指定されていない場合は、デフォルトでhtmlが設定されます。

  • Content Publisherでは、content属性以外の属性はすべて無視されます。

6.2.4.2.4 ネストされた要素

HCSFページをContent Publisherによってパブリッシュしない場合は、データ・セクション内でネストされたXML要素(別名ノード)を使用できます。例6-8は、<chapter>要素内でネストされた<section>要素を示しています。

例6-8 データ・セクション内でネストされたXMLタグ

<chapter title="Chapter 1">
This is the beginning of the chapter.
<section title="First Section">
This is the first section of the chapter.
</section>
</chapter>

注意:

ネストされたXML要素は、Content Publisherでは許可されません。


6.2.4.2.5 XML要素の参照

ネストされたXML要素を参照するには、ルートレベルの要素から始め、要素レベルの間に感嘆符(!)を使用します。次に例を示します。

chapter!section

任意の要素の属性を参照するには、タグ名の後ろにコロン(:)を使用します。次に例を示します。

chapter!section:title
  • データ・セクション内の要素を参照する場合は、次の文のいずれかが真の場合にのみ、フォームの送信時に要素の値を元のデータ・セクションにマージできます。

    • root要素がすでに、データ領域で参照されています。

    • root要素が、ExtraRootNodesフォーム要素内で参照されています。

    • タグの接頭辞部分が、resultsetsフォーム要素内のResultSetとして参照されています。

  • デフォルト値は、タグ・パスに:default接尾辞を適用することによって指定できます。デフォルトの要素には、後で評価できるように、Idocスクリプトが含まれている場合もあります。例6-9に、dDocTitleのデフォルト値を指定するための書式を示します。

    例6-9 メタデータのデフォルト値の指定

    <input type=hidden name="dDocTitle:default" value="<$'MyTitle ' & dateCurrent()$>">0
    
6.2.4.2.6 フォーム要素
  • ExtraRootNodesフォーム要素を使用すると、フォームのデータ・セクション内のタグを指定するのではなく、Idocスクリプトの変数を作成してそれにタグ名を付加することによってタグを追加できます。フォームの最後で、ExtraRootNodesの値に文字列の値を代入して、元のデータ・セクションにマージできます。

  • resultsetsフォーム要素を使用すると、データ・セクション内のResultSetを指定するのではなく、ResultSetとしてタグを追加できます。

  • ExtraRootNodesフォーム要素とResultSetフォーム要素では、カンマで区切られたタグのリストを使用します。

idcformrules resultsets属性にmychapters!chapter要素がまだ定義されていない場合に、有効なResultSetとしてそれを追加するフォーム要素を、例6-10に示します。また、必要に応じて、ルート要素mychaptersも追加されます。

例6-10 ResultSetに要素を追加するフォーム要素

<input type=hidden name="resultsets" value="mychapters!chapter">
<input type=hidden name="ExtraRootNodes" value="mychapters">
6.2.4.2.7 ResultSet

次のように、HCSFページのデータ・セクション内のXML要素を使用して、ResultSetを定義できます。

  • idcformrules要素のresultsets属性を使用して、ResultSetを指定する必要があります。

  • 要素名は完全修飾されている必要があり、ルート・ノードからの参照のフルパスを使用する必要があります。

  • ResultSetの列は、要素コンテンツおよび要素属性です。

ResultSetでのXML要素の繰返しとネストに対する制限については、例6-13例6-15を参照してください。

例6-11は、volumechapterという2つのResultSetを定義するXML要素を示しています。

例6-11 HCSFページのデータ・セクションにおけるResultSetを定義するためのXML要素

<idcformrules resultsets="volume,chapter">
<volume title="First Volume">
    Volume content here
</volume>
<chapter title="First Chapter">
    Chapter content here
</chapter>

このコードでは、それぞれ2つの列を持つ2つのResultSetに評価されます。例6-12は、これらのResultSetを示しています。

例6-12 XML要素で定義されたResultSet

@ResultSet volume
2
volume
volume:title
Volume content here
First Volume
@end
@ResultSet chapter
2
chapter
chapter:title
Chapter content here
First Chapter
@end

HCSFページをContent Publisherによってパブリッシュしない場合は、データ・セクション内でResultSetに対して繰り返された要素を使用できます。繰り返された要素は通常、コードをループ処理してResultSetを作成する場合に役立ちます。

ResultSetのために繰り返された要素には次のルールが適用されます。

  • 繰り返された要素は、ResultSetの一部でないかぎり許可されません。

  • 繰り返されたXML要素は、Content Publisherでは許可されません。

例6-13は、chapter ResultSetのためにchapter要素がどのように繰り返されるかを示しています。

例6-13 ResultSetのために繰り返された要素

<idcformrules resultsets="chapter">
<chapter title="First Chapter">
    Some content here
</chapter>
<chapter title="Second Chapter">
    More content here
</chapter>

このコードでは、2つの列と2つの行を持つResultSetに評価されます。例6-14は、このResultSetを示しています。

例6-14 繰り返された要素で作成されたResultSet

@ResultSet chapter
2
chapter
chapter:title
Some content here
First Chapter
More content here
Second Chapter
@end

ResultSetにはネストされた要素があってかまいませんが、例6-15に示すように、ネストされた要素を親要素内で繰り返すことはできません。この例に示したコードでは、最初の<chapter>要素内で<section>要素を追加しようとしても許可されません。

例6-15 ResultSetのために繰り返されたネスト済要素

<idcformrules resultsets="chapter">
<chapter title="First Chapter">
    Some content here
    <section title="First Section of First Chapter">
    Section content
    </section>
</chapter>
<chapter title="Second Chapter">
    More content here
</chapter>

例6-16に示すように、このコードでは、4つの列と4つの行を持ち、最後の2つのセルが空白のResultSetに評価されます。

例6-16 繰り返されたネスト済要素で作成されたResultSet

@ResultSet chapter
4
chapter
chapter:title
chapter!section
chapter!section:title
Some content here
First Chapter
Section Content
First Section of First Chapter
More content here
Second Chapter


@end

ResultSetの編集には、次のガイドラインが適用されます。

  • ResultSet内の特定の行を更新するには、リクエスト・パラメータでResultSetの行番号を指定する必要があります。シャープ記号(#)がコンテンツ・サーバーによって使用され、特定の行を示します。#文字を使用して行を指定しない場合は、行が付加されます。まだ存在していない行番号を指定した場合は、十分な空の行が追加されて、編集対象となる行が提供されます。

    例6-17は、ResultSetの最初の行(行0)を更新する方法を示しています。

    例6-17 ResultSetでの行の要素

    <input type="text" name="comment#0"
        value="new comment">
    <input type="text" name="comment!title#0"
        value="new title"
    
  • 感嘆符(!)を使用して、ResultSetに新規の行を挿入します。

    たとえば、comment ResultSetに作成者とタイトルのフィールドを挿入するには、入力フィールドにcomment!authorcomment!titleという名前を付けることができます。これらのフィールドがResultSetにまだない場合は、フォームの送信時に追加されます。

  • ResultSetから行を削除するには、例6-18に示すように、すべてのフィールド値を空にして、空白となるようにします。

    例6-18 ResultSetからの最初の行の削除

    <input type="hidden" name="comment#0" value="">
    <input type="hidden" name="comment!title#0" value="">
    <input type="hidden" name="comment!date#0" value="">
    <input type="hidden" name="comment!author#0" value="">
    

    ResultSetから行を削除するための別の方法としては、DeleteRowsフォーム要素を、ResultSet名と行番号のカンマで区切られたペアのリストに設定します。たとえば、comment ResultSetから行2を削除し、book ResultSetから行5を削除するには、DeleteRowsフォーム要素を次のコンマで区切られたペアに設定します。

    comment:2,book:5
    

6.2.4.3 フォーム・セクション

フォーム・セクションには、HTMLフォーム要素の表示など、ページに必要な機能のためのコードが含まれます。アセンブルされたWebページのフォーマットを制御するために、HTML表内に、フォーム・プロパティ、フォーム・フィールドおよびフォーム・ボタンが配置されます。

コードの例は、第6.6.1項「フォームの共通コード」を参照してください。

6.2.4.3.1 フォームの先頭

例6-19に示すように、フォーム・セクションの先頭は、2行のIdocスクリプトです。

例6-19 フォーム・セクションを開始するためのIdocスクリプト

<!--$formName="HTMLForm"-->
<!--$include std_html_form_submit_start-->

the std_page.idocリソース・ファイルのstd_html_form_submit_startインクルードには、POSTメソッドを使用して標準的なHTMLフォームを作成し、IdcServiceSUBMIT_HTML_FORMに設定して、dID変数を現在のHCSFページの値に設定するためのコードが含まれます。例6-20は、このコードを示しています。

例6-20 HCSFページの標準的なHTMLフォーム

<form name="<$formName$>" method="POST"action="<$HttpCgiPath$>">7
<input type=hidden name="IdcService"value="SUBMIT_HTML_FORM">
<input type=hidden name="dID" value="<$SourceID$>">
6.2.4.3.2 フォーム・プロパティ

フォーム表は通常、プロパティの定義で始まります。この定義とは、フォーム・フィールドとしてフォームを作成し、そのフィールドを編集可能にして、フィールド・キャプション領域のサイズを設定するものです。例6-21は、これらのプロパティ定義を示しています。

例6-21 フォーム表のフィールド・プロパティ定義

<!--$isFormSubmit=1,isEditMode=1-->
<!--$captionFieldWidth=200, captionEntryWidth=80-->
6.2.4.3.3 フォーム・フィールド

例6-22に示すように、それぞれの入力フィールドを作成するには通常、数行のコードが使用されます。

例6-22 フォーム上に入力フィールドを作成するためのコード

<!--$eval("<$product_name:maxLength=250$>")-->
<!--$fieldName="model", fieldCaption="Model Number"-->
<!--$include std_display_field-->

注意:

表示が適切に行われるようにするために、追加のコードが必要となるフィールドもあります。たとえば、テキスト領域のサイズを増やすために、標準的なstd_memo_entryインクルードのオーバーライドが必要になる場合があります。そのためには、次のように、IDOCファイルにカスタム・インクルードを定義します。

<@dynamicalhtml std_memo_entry@>
<textarea name="<$fieldName$>" rows=15 cols=50 wrap=virtual><$fieldValue$></textarea>
<@end@>

  • DataScript: DataScriptというフォーム・フィールドを、送信されているフォームに追加した場合、その値に対するIdocスクリプトがあれば、コンテンツ・サーバーがフォームを処理するときにそのスクリプトを評価します。

    (HCSPフォーム内のデータ・アイランドから生成された)表が2つあり、1つの表の中にあるエントリがもう1つの表の中のエントリを参照しています。最初の表の行を更新するときに、2番目の表の特定の列および行の値を変更することが目標です。この値変更を行うために、例6-23に示すように、Idocスクリプトを使用し、JavaScriptを記述してDataScriptの値を設定できます。

    例6-23 表の行を更新するときの、別の表のフィールド値の変更

    modifyRowAndColumn(row, column, value) 
    { 
    document.myform.DataScript = "<$setValue('#local', 'table2!'"+ column + "#'"+ row + 
    "','" + value + "')$>"; 
    } 
    

    次に、更新フォームの送信中に、column = "myColumn"row="1"value = "Test"とした関数をコールすると、送信前のDataScript値は次のようになります。

    DataScript.value = <$setValue('#local', 'table2!myColumn#1', 'Test')$> 
    

    フォームが送信された後、表table2の行1の列table2!myColumnが更新されて、値Testが反映されます。

    DataScriptを使用すると、データ・アイランドにある他のエントリを、その名前を参照するHTMLフォーム・フィールドを実際に作成しなくても、自由に編集できると言うこともできます。

6.2.4.3.4 フォームのボタン

フォームの送信ボタンとリセット・ボタンを作成するには通常、2行のコードが使用されます。例6-24は、これらの行を示しています。

例6-24 フォームの送信ボタンとリセット・ボタンを作成するためのコード

<input type=submit name=Submit value=" Submit ">
<input type=reset name=Reset value="Reset">
6.2.4.3.5 フォームの末尾

フォーム要素とデフォルト値がすべて定義された後、</form>タグでフォームを終了する必要があります。

6.3 動的サーバー・ページ用のカスタム・インクルードを含むIDOCファイルの作成

動的サーバー・ページが相互に連携することによって、コンテンツ・サーバーの動作を変更することができます。動的サーバー・ページを作成できるようにするには、参照するページ用のカスタム・インクルードを含むIDOCファイルを作成しておく必要があります。

動的サーバー・ページ用のカスタム・インクルードを含むIDOCファイルを作成する手順は次のとおりです。

  1. 例6-25に示すフォーマットで、カスタム・インクルードを含むIDOCファイルを作成します。

    例6-25 カスタム・インクルード

    <@dynamichtml HelloWorld@>
    <H1>Hello World/<H1>
    <@end@>
    

    この例では、最初のインクルードはHelloWorldと名付けられ、2番目のインクルードでは、HTMLコードを1行定義しています。

  2. 拡張子を.idocとしてこのファイルを保存します(例、helloworld.idoc)。

  3. このIDOCファイルをコンテンツ・サーバーにチェックインします。このとき、helloworldのように、別のファイルから参照できるコンテンツIDを指定します。

このIDOCファイルは、参照元のいずれのHCS*ページでも利用可能です。

6.4 HCSTページの作成

HCSTファイルでIDOCファイルを参照することによって、HCST動的サーバー・ページを作成できます。

HCSTページを作成する手順は次のとおりです。

  1. 例6-26に示すHCSTファイルのような、IDOCファイル内のインクルードを参照するHCSTファイルを作成します。

    例6-26 カスタム・インクルードを参照するHCSTファイル

    <HTML>
    <HEAD>
    <$docLoadResourceIncludes("dDocName=helloworld&RevisionSelectionMethod=LatestReleased")$>
    </HEAD>
    <BODY>
    You should see it:
    <$include HelloWorld$>
    </BODY>
    </HTML>
    

    この例では、<HEAD>タグの後の行によってhelloworld.idocファイルがロードされ、IDOCファイル内のインクルードがこのHCSTページで利用可能となります。<BODY>タグの後の2番目の行によって、helloworld.idocファイルのHelloWorldインクルードのコードが表示されます。Idocスクリプトの標準的なタグ<$...$>が使用されていることに注意してください。

  2. 拡張子を.hcstとしてこのファイルを保存します(例: helloworld.hcst)。

  3. HCSTファイルをコンテンツ・サーバーにチェックインします。

6.5 HCSPページの作成

HCSPファイルでIDOCファイルを参照することによって、HCSP動的サーバー・ページを作成できます。

HCSPページを作成する手順は次のとおりです。

  1. 例6-27に示すHCSPファイルのような、IDOCファイル内のインクルードを参照するHCSPファイルを作成します。

    例6-27 カスタム・インクルードを参照するHCSPファイル

    <HTML>
    <HEAD>
    <!--$docLoadResourceIncludes("dDocName=helloworld&amp;RevisionSelectionMethod=LatestReleased")-->
    </HEAD>
    <BODY>
    You should see it:
    
    <!--$include HelloWorld-->
    </BODY>
    </HTML>
    

    この例では、<HEAD>タグの後の行によってhelloworld.idocファイルがロードされ、IDOCファイル内のインクルードがこのHCSPページで利用可能となります。<BODY>タグの後の2番目の行によって、helloworld.idocファイルのHelloWorldインクルードのコードが表示されます。HTMLコメント・タグ<!--...-->が使用されていることに注意してください。

  2. 拡張子を.hcspとしてこのファイルを保存します(例: helloworld.hcsp)。

  3. HCSPファイルをコンテンツ・サーバーにチェックインします。

6.6 HCSFページの作成

一般的なHCSFページとそれに関連付けられたIDOCファイルを例6-28に示します。この例では、ユーザーが記入して送信し、コンテンツ・アイテムとして製品の説明を入力できるフォームを作成します。

HCSFページを作成する手順は次のとおりです。

  1. 例6-28に示すように、form_std_pageというIDOCファイルを参照するHCSFファイルを作成します。

    例6-28 HCSFファイル内の製品の説明フォーム

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <html>
    <!--$docLoadResourceIncludes("dDocName=form_std_page&amp;
          RevisionSelectionMethod=Latest")-->
    
    <head>
    <meta NAME="idctype' CONTENT="form; version=1.0">
    
    <!--$include form_head_section-->
    
    </head>
    
    <!--$include form_pre_xml_section-->
    
    <!--$idcbegindata-->
          <idcformrules isFormFinished="0"/>
          <product_name content="html">
    
          </product_name?
          <model_number content="html">
                SC-
          </model_number>
          <summary_description>
                Enter a summary here.
          </summary_description>
          <full_description>
                 Enter a full description here.
          </full_description>
          <author>
          <division>
                Household Products
          </division>
          <revision>
    
          </revision>
    <!--$idcenddata-->
    
    <!--$include form_post_xml_section-->
    
    </body>
    </html>
    

    この例では、htmlタグの後の行によって、form_std_pageをコンテンツIDとするIDOCファイルがロードされ、IDOCファイル内のインクルードがこのHCSFページで利用可能となります。

    これがコンテンツ・サーバーのHTMLフォームであるとContent Publisherで認識されるようにするには、metaタグが必要です。

    form_std_page IDOCファイルに定義されている、metaタグの後の2つのインクルードによって、Webページの先頭にコードが生成されます。

    idcformrulesタグのisFormFinished属性によって、フォームが未完成であることがコンテンツ・サーバーに伝えられるため、フィールドを編集してフォームを送信できます。

    タグごとにcontentプロパティを設定する必要はなく、デフォルトでhtmlが設定されます。

    idcbegindataタグとidcenddataタグによってXMLタグ付き領域が定義され、それによって、フォームのルールおよび初期メタデータが指定されます。

    XMLタグの各セットのテキストが、フォーム上の対応するフィールドに入力されます。

    form_std_page IDOCファイルに定義されている、この例の最後のインクルードによって、Webページの末尾にコードが生成されます。

  2. product_form.hcsfとしてこのファイルを保存します。

  3. HCSFファイルをコンテンツ・サーバーにチェックインします。

  4. 例6-29に示すように、カスタム・インクルードを含むIDOCファイルを作成します。

    例6-29 カスタム・インクルードを含むIDOCファイル

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <html>
    <body>
    
    <@dynamichtml form_head_section@>
    <!--standard includes for a standard hcsp page-->
    <$defaultPageTitle="Product Description Form"$>
    $include std_html_head_declarations$>
    <@end@>
    
    <@dynamichtml form_pre_xml_section@>
    <!--This code is here for static viewing.-->
    <$if 0$>
          <body>
    <$endif$>
    
    <$include body_def$>
    <@end@>
    
    <@dynamichtml form_post_xml_section@>
    
    <$include std_page_begin$>
    <$include std_header$>
    
    <$formName="HTMLForm"$>
    <$include std_html_form_submit_start$>
    
    <table>
    
    <$if strEquals(ref:dExtension,"hcsf"))$>
          <$isHcsf=1$>
    <$else$>
          <$isHcsp=1$>
    <$endif$>
    
    <$if isHcsf$>
          <$isFormSubmit=1,isEditMode=1$>
    <$endif$>
    
    <$captionFieldWidth=150, captionEntryWidth=200$>
    
    <$eval("<$product_name:maxLength=250$>")$>
    <$fieldName="product_name", fieldCaption="Product Name"$>
    <$if isHcsp$><isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <$eval("<$model_number:maxLngth=250$>")$>
    <$fieldName="model_number", fieldCaption="Model Number"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <$fieldName="summary_description",
          fieldCaption="Summary Description",
          fieldType="Memo"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <fieldName="full_descripton",
          fieldCaption="Full Description",
          fieldType="Memo"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <$eval("<$author:maxLength=250$>")$>
    <$fieldName="author", fieldCaption="Author"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <$eval("<$division:maxLength=250$>")$>
    <$fieldName="division", fieldCaption="Division"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <$eval("<$revision:maxLength=250$>")$>
    <$fieldName="revision", fieldCaption="Revision"$>
    <$if isHcsp$><$isInfoOnly=1$><$endif$>
    <$include std_display_field$>
    
    <tr>
          <td colspand=2><hr></td>
    </tr>
    <tr>align=center>
          <td colspan=2>
          <$if isHcsf$>
                <input type=submit name=Submit value=" Submit ">
                <input type=reset name=Reset Value="Reset">
          <$endif$>
                <input type=hidden name="dDocTitle:default" 
                value="<$"Product Description  " & dateCurrent()$>">
          </td>
    </tr>
    </table>
    </form>
    <$include std_page_end$>
    
    <@end@>
    
    </body>
    </html>
    

    この例では、form_head_sectionインクルードによって、ページ・タイトルと、(std_page.htmリソース・ファイル内のstd_html_head_declarationsインクルードを参照する)HTMLの標準的なheadセクションのコードが定義されます。

    form_pre_xml_sectionインクルードによって、ページが静的に表示できるようになり、(std_page.htmリソース・ファイル内のbody_defインクルードを参照する)コンテンツ・サーバーの標準的なWebページのコードが定義されます。

    form_post_xml_sectionインクルードでは、フォーム・フィールドが定義されます。std_page.htmリソース・ファイルに定義されている、std_page_beginインクルードとstd_headerインクルードによって、コンテンツ・サーバーの標準的なWebページのコードが定義されます。これらのインクルードの後の2行によって、フォーム名と、(std_page.htmファイル内のstd_htm_form_submit_startインクルードを参照する)HTMLの標準的なフォームのコードが定義されます。

    tableタグの後の条件では、これが送信済の編集可能なフォームまたはページであるかが、ファイル名の拡張子に基づいて判別されます。これが編集可能なページ(isHcsf=1)の場合は、次の条件によって、フィールドをフォーム・フィールドとして作成して編集可能にする変数が設定されます。条件の後の行では、フィールド・キャプションの表セルの幅が150ピクセルに設定され、入力フィールドの表セルの幅が200ピクセルに設定されています。

    eval関数では、テキスト・フィールドの最大長が250文字に設定されています。

    fieldNameタグでは、フィールドの名前、キャプションおよびタイプが定義されます。fieldTypeが定義されていない場合は、デフォルトでTextが設定されます。

    これが送信済のフォーム(isHcsp=1)の場合は、if isHcsp条件によって、フォーム・フィールドを読取り専用にする変数に設定されます。

    std_page.htmリソース・ファイルに定義されているstd_display_fieldインクルードによって、フォーム・フィールドを作成するコードが定義されます。

    これが編集可能なフォーム(isHcsf=1)の場合は、if isHcsf条件によって、「送信」ボタンと「リセット」ボタンが作成されます。

    if isHcsf条件の後の行では、ドキュメント・タイトル(dDocTitle)が自動的に生成されます。

    std_page.htmリソース・ファイルに定義されているstd_page_endインクルードによって、Webページの末尾にコードが生成されます。

  5. form_std_page.idocとしてこのファイルを保存します。

  6. このIDOCファイルをコンテンツ・サーバーにチェックインします。このとき、コンテンツIDをform_std_pageに指定します。(これは、HCSFページによって参照される名前です。)

  7. コンテンツ・サーバーでHCSFコンテンツ・アイテムを検索します。

  8. フォームを表示するためのリンクをクリックして、WebブラウザにHCSFページを作成します。フォームは、図6-2のサンプルのようになります。

    図6-2 Webブラウザに表示するHCSFページを作成するためのフォーム

    図6-2については周囲のテキストで説明しています。
  9. サンプルの値をいくつか使用してフォームに記入し、「送信」をクリックします。

    HCSPページとしてコンテンツ・アイテムが作成されます。

  10. コンテンツ・サーバーでHCSPページを検索します。

  11. WebブラウザにHCSPページを表示するためのリンクをクリックします。図6-3は、ページがどのように表示されるかを示しています。

    図6-3 HCSPページ

    図6-3については周辺のテキストを参照

6.6.1 フォームの共通コード

HCSFページおよび関連付けられているIDOCファイルで広く使用されている機能は次のとおりです。

  • ファイル情報の取得

  • ファイル拡張子の参照

  • フォーム情報の定義

  • フォーム・フィールドの定義

  • 非表示フィールドの定義

  • フォームの送信

6.6.1.1 ファイル情報の取得

サービスDOC_INFO_SIMPLEを実行すると、特定のファイルのメタデータがページで利用可能になります。例6-30は、このサービスを実行するためのIdocスクリプトを示しています。

例6-30 メタデータを取得するためのIdocスクリプト

<$dID=SourceID$>
<$executeService("DOC_INFO_SIMPLE")$>

6.6.1.2 ファイル拡張子の参照

例6-31に示すように、フォームのif文でファイル拡張子を参照して、フォームが送信済(.hcspファイル)か未送信(.hcsfファイル)かを判別できます。

例6-31 ファイル拡張子を参照するための文

<$if (strEquals(ref:dExtension,"hcsf"))$>
    <$isHcsf=1$>
<$else$>
    <$isHcsp=1$>
<$endif$>

ref:接頭辞については、第6.2.1.4項「メタデータの参照」を参照してください。

6.6.1.3 フォーム情報の定義

例6-32に示すように、2行のコードによって、フォーム名と、HTMLフォームを開始するための標準的なインクルードが定義されます。

例6-32 HTMLフォームの名前と標準的なインクルード

<$formName="HTMLForm"$>
<$include std_html_form_submit_start$>

例6-33は、フォーム・プロパティを定義するための一般的なコードを示しています。

例6-33 フォーム・プロパティ

<table border=0 width=100%>
<$isEditMode=1,isFormSubmit=1$>
<$captionFieldWidth="25%", captionEntryWidth="75%"$>

6.6.1.4 フォーム・フィールドの定義

例6-34に示すように、フォーム・フィールドを表示するには、標準的なIdocスクリプト変数とstd_display_fieldインクルードを使用します。

例6-34 フォーム・フィールドを表示するための標準的なIdocスクリプト

<$fieldName="news_author",fieldDefault=dUser,fieldCaption="Author",isRequired=1,requiredMsg = "Please specify the author."$>
<$include std_display_field$>

フィールドが正しく表示されるようにするために、追加のコードが必要となるフィールドもあります。たとえば、メモの標準的なテキスト領域は縦が3行、横が40列ですが、テキスト領域のサイズを増やすために、標準的なインクルードを無効にすることが必要になる場合があります。例6-35は、標準的なstd_memo_entryインクルードを示しています。

例6-35 メモ・フィールドの標準的なインクルード

<@dynamichtml std_memo_entry@>
    <textarea name="<$fieldName$>" rows=3 cols=40 wrap=virtual> <$fieldValue$></textarea>
<@end@>

指定したサイズ(この場合は、縦が15行、横が50列)にテキスト領域を増やすために、カスタムstd_memo_entryインクルードを使用する方法を、例6-36に示します。

例6-36 メモ・フィールドのカスタム・インクルード

<@dynamichtml std_memo_entry@>
    <textarea name=<$fieldName$> rows=15 cols=50 wrap=virtual><$fieldValue$></textarea>
<@end@>

6.6.1.5 非表示フィールドの定義

コントリビュータが変更できない非表示フィールドを定義することによって、送信されたフォーム(HCSP)のメタデータを指定できます。たとえば、次のコードでは、送信された各フォームにドキュメント・タイプNews_Formsが割り当てられます。

<input type=hidden name="dDocType" value="News_Forms">

次のコードでは、送信されたフォームのセキュリティ・グループが指定されます。

<input type=hidden name="dSecurityGroup" value="Public">

6.6.1.6 フォームの送信

フォームの送信時に、Java関数をコールして追加の検証または処理を実行することもできます。次に例を示します。

<input type=button name=Submit value="Save" onClick="postCheckIn(this.form)">

6.7 HCST、HCSP、HCSFの各ページのWebブラウザでの表示の確認

HCST、HCSP、HCSFいずれかのファイルを保存した後で、例6-37に示すように、Webブラウザでのページ表示を確認できます。

例6-37 HCSTページとHCSPページの表示

  1. コンテンツ・サーバーでhelloworldコンテンツ・アイテムを検索します。

  2. WebブラウザにHCSTファイルとHCSPファイルを表示します。両方とも、図6-4例のようになります。

    図6-4 Webブラウザに表示されるHelloWorldコンテンツ・アイテム

    図6-4の説明が続きます
    「図6-4 Webブラウザに表示されるHelloWorldコンテンツ・アイテム」の説明