4D v16.3

セミダイナミックページ

ホーム

 
4D v16.3
セミダイナミックページ

セミダイナミックページ  


 

 

4D Webサーバーでは、セミダイナミックページを使用することができます。

これらのページは4D HTMLタグを含んだHTML"テンプレート"であり、つまりスタティックなHTMLコードと、4DHTML、4DIF、または 4DINCLUDEなどの変換タグによって追加された4D参照を合わせたものです。これらのタグはHTML型のコメント(<!--#Tag Contents-->)としてHTMLソースコードに挿入されます。

注: 4DHTML、4DTEXT、4DEVALタグに関しては、これらをXMLに準拠させるため、特定の場合において$-ベースの代替シンタックスが使用されます。詳細な情報については、4DTEXT、4DHTML、4DEVALにおける代替シンタックスの章を参照して下さい。

これらのページがHTTPサーバーによって送信されると、そのページは解析され、中のタグは実行されてその結果のデータで置き換えられます。その結果、ブラウザで受信したページは、スタティックな要素と4Dからひっぱってきた値を合わせたものとなるのです。

原理  

HTMLオブジェクトのvalue フィールドに<!--#4DTEXT VarName--> を含めることによって、プログラミングによってHTMLオブジェクトにデフォルト値を与えることができます。このときVarName iがカレントWebプロセスで定義された4Dプロセス変数名となります。この名前は標準のHTML記法でコメントとして使用する<!--#...--> で囲います。

: HTMLエディタによっては <!--#4DTEXT VarName--> をHTMLオブジェクトの value フィールドに許可しないかもしれません。この場合、HTMLコードに直接入力する必要があります。

<!--#4DTEXT --> タグを使用すればページに4D式 (フィールドや配列要素) を挿入することもできます。 このタイプのデータに対するこのタグの動作は、変数のそれと同じです。詳細はST FREEZE EXPRESSIONSを参照してください。

実際、シンタックス <!--#4DTEXT VarName--> は、HTMLページのどこにでも、4Dデータを挿入することを可能にします。例えば以下のように記述すると:

<P>Welcome to <!--#4DTEXT vtSiteName-->!</P>

4D変数vtSiteName の値がHTMLページに挿入されます。

例題:

  // 以下の4Dコードはプロセス変数vs4Dに"4D4D"を割り当てます。
 vs4D:="4D4D"
  // その後、HTMLページ"AnyPage.HTM"を送信します。
 SEND HTML FILE("AnyPage.HTM")

AnyPage.HTMのソースは以下のようなものです:

<html>
<head>
    <title>AnyPage</title>
<script language="JavaScript"><!--
function Is4DWebServer(){
    return (document.frm.vs4D.value=="4D4D")
}
function HandleButton(){
    if(Is4DWebServer()){
        alert("You are connected to 4D Web Server!")
    } else {
        alert("You are NOT connected to 4D Web Server!")
}
//--></script>
</head>

<body>
<form action="/4DACTION/WWW_STD_FORM_POST" method="post" name="frm">
<p><input type="hidden" name="vs4D" value="<!--#4DTEXT vs4D-->"</p>
<p><a href="JavaScript:HandleButton()"><img src="AnyGIF.GIF" border=0 align=bottom></a></p>
<p><input type="submit" name="bOK" value="OK"></p>
</form>
</body>
</html>

<!--#4DTEXT --> タグは送信したページに4D式(フィールド、配列要素、等)を挿入することもできます。このタグでのこのデータ型のオペレーションは、変数のオペレーションと同じです。また、4DHTML タグによって、HTMLコードを4D変数へと挿入することも可能です。4DIF などの他のタグは、実行されたコードの操作を可能にします。使用可能な全てのタグの詳細は、4D HTMLタグの章の中にあります。

4Dが送信するセミダイナミックページの内容解析は、WEB SEND FILE (.htm, .html, .shtm, .shtml) または WEB SEND BLOB (text/html タイプのBLOB) コマンドが呼び出された時、またはWEB SEND TEXTコマンドが呼び出されたとき、さらにはURLを使用してページが呼び出されたときに発生します。

しかし最後のケースでは、 最適化の目的で、“.htm” と “.html” 拡張子を持つページは解析されません。この場合ページの解析を強制的に行うには、拡張子を “.shtm” または “.shtml” (例えば http://www.server.com/dir/page.shtm) にします。
このタイプのページの例題はWEB GET STATISTICSコマンドの説明にあります。XMLページ(.xml、.xsl)とWMLページ(.wml)も、4Dによってサポートされ、常に解析されます(XMLとWMLサポートの章を参照してください)。

内部的に、パーサーはUTF-16で動作します。しかし、解析するデータは異なるコード体系かもしれません。タグ(例えば4DHTML)を含むテキストであるときや、文字セットが明示的に指定されているようなときには、4Dは必要に応じてデータを変換します。

4DがHTMLページに含まれるタグを解析して変換する全てのケースを以下の表にまとめます:

動作送信ページ解析$シンタックスのサポートsyntax(*)タグ解析時の文字セット動作

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タグにおいては代替の$-ベースシンタックスが利用可能です(の章を参照して下さい)。

4DはJavaScriptソースコードとJavaScript .js ファイル (例 <SCRIPT SRC="...")とをHTMLドキュメントに埋め込むことをサポートしています。

WEB SEND FILEWEB SEND BLOBを使用すると、HTMLソースエディタで編集したHTMLソー スや4Dからディスクに保存したHTMLを送信します。両方のケースで、ページをフルコントロールできます。ドキュメントのHEAD部に JavaScriptスクリプトを挿入したり、FORMマークアップでスクリプトを使用したりできます。先の例題で、フォームに名前を付け、スクリプトか らそのフォームを参照しました。またフォームのマークアップレベルでサブミットを受け入れたり拒否したりできます。

: 4DはJava applets transportをサポートしています。



参照 

4D 変換タグ

 
プロパティ 

プロダクト: 4D
テーマ: Webサーバ

 
履歴 

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)