テンプレートページ
4D の Webサーバーでは、タグを含む HTMLテンプレートページを使用することができます。 つまり、静的な HTMLコードと、4DTEXT、4DIF、4DINCLUDEなどの 変換タグ によって追加された 4D参照の組み合わせです。 これらのタグは通常、HTMLタイプのコメント (<!--#4DTagName TagValue-->
) として、HTMLソースコードに挿入されます。
これらのページが HTTPサーバーから送信される際、ページは解析され、含まれているタグが実行され、結果のデータに置き換えられます。 このように、ブラウザーが受け取るページは、静的な要素と 4D の処理による値が組み合わさったものです。
たとえば、HTMLページ内にて以下のように記述すると:
<P><!--#4DTEXT vtSiteName--> へようこそ! </P>
4D変数 vtSiteName の値が HTMLページに挿入されます。
テンプレート用タグ
以下の 4Dタグを使用することができます:
- 4DTEXT: 4D変数および式をテキストとして挿入します。
- 4DHTML: HTMLコードを挿入します。
- 4DEVAL: 4D式を評価します。
- 4DSCRIPT: 4Dメソッドを実行します。
- 4DINCLUDE: ページを他のページに含めます。
- 4DBASE: 4DINCLUDE タグが使用するデフォルトフォルダーを変更します。
- 4DCODE: 4Dコードを挿入します。
- 4DIF, 4DELSE, 4DELSEIF, 4DENDIF: HTMLコードに条件式を挿入します。
- 4DLOOP, 4DENDLOOP: HTMLコードにループを挿入します。
- 4DEACH, 4DENDEACH: コレクション内、エンティティセレクション内、またはオブジェクトのプロパティをループします。
これらのタグについては、変換タグ のページで説明しています。
タグは混在させることが可能です。 たとえば、次のような HTMLコードが認められています:
<HTML>
...
<BODY>
<!--#4DSCRIPT/PRE_PROCESS--> (メソッド呼び出し)
<!--#4DIF (myvar=1)--> (If 条件)
<!--#4DINCLUDE banner1.html--> (サブページ挿入)
<!--#4DENDIF--> (End if)
<!--#4DIF (myvar=2)-->
<!--#4DINCLUDE banner2.html-->
<!--#4DENDIF-->
<!--#4DLOOP [TABLE]--> (カレントセレクションでのループ)
<!--#4DIF ([TABLE]ValNum>10)--> (If [TABLE]ValNum>10)
<!--#4DINCLUDE subpage.html--> (サブページの挿入)
<!--#4DELSE--> (Else)
<B>Value: <!--#4DTEXT [TABLE]ValNum--></B><br/> (フィールド表示)
<!--#4DENDIF-->
<!--#4DENDLOOP--> (End for)
</BODY>
</HTML>
タグの解析
最適化のため、".HTML" または ".HTM" を末尾に持つ単純な URL で HTMLページを呼び出し た場合、4D Webサーバーは HTMLソースコードの解析をおこないません。
4D Web サーバーが送信するテンプレートページの解析は、WEB SEND FILE
(.htm, .html, .sthtm, .shtml)、WEB SEND BLOB
(text/html type BLOB)、または WEB SEND TEXT
コマンドが呼び出されたとき、および URL を使用して呼び出されたページを送信するときにおこなわれます。 URL で呼び出す場合、".htm" と ".html" で終わるページは最適化のため解析されません。 この場合に HTMLページの解析を強制するには、末尾を ".shtm" または ".shtml" とする必要があります (例: http://www.server.com/dir/page.shtm
)。 このタイプのページの使用例は、WEB GET STATISTICS
コマンドの説明に記載されています。 XMLページ (.xml、.xsl) もサポートされており、常に 4D によって解析されます。
PROCESS 4D TAGS
コマンドを使用すると、Webコンテキスト外でも解析をおこなうことができます。
内部的には、パーサーは UTF-16 文字列で動作しますが、解析するデータは異なる方法でエンコードされている場合があります。 タグにテキストが含まれている場合 (4DHTML
など)、提供されている情報 (charset) や出所に応じて、4D は必要に応じてデータを変換します。 以下に、HTMLページに含まれるタグを 4D が解析する場合と、おこなわれる変換を示します:
動作 / コマンド | 送信ページの解析 | $シンタックスのサポート(*) | タグ解析に使用される文字セット |
---|---|---|---|
URL で呼び出されたページ | ○、ただし拡張子が ".htm" または ".html" のページを除く | ○、ただし拡張子が ".htm" または ".html" のページを除く | ページの "Content-Type" ヘッダーのパラメーターに渡された文字セットに従います。 それが無い場合は、META-HTTP EQUIVタグを探します。 それも無ければ、HTTPサーバーのデフォルト文字セットを使用します。 |
WEB SEND FILE | ○ | - | ページの "Content-Type" ヘッダーのパラメーターに渡された文字セットに従います。 それが無い場合は、META-HTTP EQUIVタグを探します。 それも無ければ、HTTPサーバーのデフォルト文字セットを使用します。 |
WEB SEND TEXT | ○ | * | 変換は不要です。 |
WEB SEND BLOB | ○ (BLOBが "text/html" 型の場合) | - | レスポンスの "Content-Type" ヘッダーに指定された文字セットを使います。 それも無ければ、HTTPサーバーのデフォルト文字セットを使用します。 |
<!--4DINCLUDE --> タグによる挿入 | ○ | ○ | ページの "Content-Type" ヘッダーのパラメーターに渡された文字セットに従います。 それが無い場合は、META-HTTP EQUIVタグを探します。 それも無ければ、HTTPサーバーのデフォルト文字セットを使用します。 |
PROCESS 4D TAGS | ○ | ○ | テキストデータは変換しません。 BLOBデータは、互換性のために Mac-Roman 文字セットから自動変換されます。 |
(*) 4DHTML、4DTEXT、4DEVALタグにおいては、代替の $ベースシンタックスが利用可能です。