4D v16.3

Pages semi-dynamiques

Accueil

 
4D v16.3
Pages semi-dynamiques

Pages semi-dynamiques  


 

 

Le serveur Web de 4D vous permet d'utiliser des pages semi-dynamiques

Ces pages sont des 'templates' HTML contenant des Balises HTML 4D, c'est-à-dire un mélange de code HTML statique et de références 4D ajoutées via les balises de transformation telles que 4DHTML, 4DIF, 4DINCLUDE. Ces balises sont insérées sous forme de commentaires type HTML (<!--#LaBalise LeContenu-->) dans le code HTML source.

Note : Une syntaxe alternative basée sur le $ est utilisable dans certaines conditions pour les balises 4DHTML, 4DTEXT et 4DEVAL afin de les rendre conformes au XML. Pour plus d'information, reportez-vous à la section Syntaxe alternative pour 4DTEXT, 4DHTML, 4DEVAL.

Au moment de leur envoi par le serveur HTTP, ces pages sont analysées et les balises qu'elles contiennent sont exécutées et remplacées par les données résultantes. Les pages reçues par les navigateurs sont alors la combinaison d'éléments statiques et de valeurs issues de 4D. 

Vous pouvez donner par programmation des valeurs par défaut aux objets HTML en incluant par exemple <!--#4DTEXT NomVar--> dans le champ valeur de l'objet HTML ; NomVar est le nom de la variable process 4D telle qu'elle est définie dans le process Web courant — nom que vous mettez entre <!––# ––>, c'est-à-dire la notation standard pour les commentaires HTML.

Note : Certains éditeurs HTML n'acceptent pas la saisie de la valeur <!––#4DTEXT NomVar––> dans le champ valeur des objets HTML. Dans ce cas, vous devrez la placer directement dans le code HTML.

En fait, la syntaxe <!--#4DTEXT NomVar--> permet d'insérer des données 4D partout dans la page HTML. Si, par exemple, vous écrivez :

<P>Bienvenue dans <!--#4DTEXT vtSiteName-->!</P>

La valeur de la variable 4D vtSiteName sera insérée dans la page HTML. Examinons un exemple :

  // Voici le code 4D assignant "4D4D" à la variable process vs4D
 vs4D:="4D4D"
  //Puis envoyer la page HTML "AnyPage.HTM"
 WEB ENVOYER FICHIER("AnyPage.HTM")

Le source de la page HTML AnyPage.HTM est le suivant :

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

La balise <!--#4DTEXT --> permet également d'insérer des expressions 4D dans les pages envoyées (champs, éléments de tableaux, etc.). Le principe de fonctionnement de la balise avec ce type de donnée est identique à celui des variables. Vous pouvez également insérer du code HTML dans des variables 4D à l'aide de la balise 4DHTML. D'autres balises telles que 4DIF permettent de contrôler le code exécuté. L'ensemble des balises utilisables est décrit dans la section Balises HTML 4D.

L’analyse du contenu des pages semi-dynamiques envoyées par 4D s’effectue au moment de l’appel à WEB ENVOYER FICHIER (.htm, .html, .shtm, .shtml), WEB ENVOYER BLOB (blob de type text/html), WEB ENVOYER TEXTE et lors de l'envoi de pages appelées via des URLs. Dans ce dernier cas, à des fins d'optimisation, les pages suffixées “.htm” et “.html” ne sont PAS analysées. Pour “forcer” l’analyse des pages HTML dans ce cas, vous devez les suffixer “.shtm” ou “.shtml” (par exemple http://www.server.com/dir/page.shtm). Un exemple d'utilisation de ce type de page est fourni dans la description de la routine WEB LIRE STATISTIQUES. Les pages XML (.xml, .xsl) et les pages WML (.wml) sont également prises en charge et toujours analysées par 4D (cf. section Support de XML et de WML).

L'analyse peut également être effectuée en-dehors du contexte Web lorsque vous utilisez la commande TRAITER BALISES 4D.

En interne, l'analyseur travaille avec des chaînes utf-16, mais les données à analyser peuvent avoir été encodées différemment. Lorsque les balises contiennent du texte (par exemple 4DHTML), 4D convertit les données si nécessaire en fonction de leur provenance et des informations disponibles (charset). Voici un tableau récapitulatif des cas dans lesquels 4D analyse les balises contenues dans les pages HTML ainsi que les conversions éventuellement effectuées :

ActionAnalyse du contenu des pages envoyéesPrise en charge de la syntaxe $ (*)Jeu de caractères utilisé pour l'analyse des balises
Pages appelées par des URLsX, sauf pages suffixées “.htm” ou “.html”X, sauf pages suffixées “.htm” ou “.html”Utilisation du charset passé en paramètre de l'en-tête "Content-Type" de la page. A défaut, recherche d'une balise META-HTTP EQUIV avec un charset. Sinon, utilisation du jeu de caractères par défaut du serveur HTTP
Commande WEB ENVOYER FICHIERX-Utilisation du charset passé en paramètre de l'en-tête "Content-Type" de la page. A défaut, recherche d'une balise META-HTTP EQUIV avec un charset. Sinon, utilisation du jeu de caractères par défaut du serveur HTTP
Commande WEB ENVOYER TEXTEX-Pas de conversion nécessaire
Commande WEB ENVOYER BLOBX, si le BLOB est du type “text/html”-Utilisation du charset défini dans l'en-tête "Content-Type" de la réponse. Sinon, utilisation du jeu de caractères par défaut du serveur HTTP.
Inclusion par la balise <!--#4DINCLUDE-->XXUtilisation du charset passé en paramètre de l'en-tête "Content-Type" de la page. A défaut, recherche d'une balise META-HTTP EQUIV avec un charset. Sinon, utilisation du jeu de caractères par défaut du serveur HTTP
Commande TRAITER BALISES 4DXXDonnées Texte : pas de conversion. Données BLOB : conversion automatique depuis le jeu de caractères Mac-Roman par compatibilité

(*) La syntaxe alternative utilisant le $ est disponible pour les balises 4DHTML, 4DTEXT et 4DEVAL (cf. section ).

Le code source JavaScript encapsulé dans les documents HTML est supporté par le serveur Web 4D, ainsi que l'insertion de fichiers JavaScript .js dans des documents HTML (par exemple <SCRIPT SRC="...").

Avec WEB ENVOYER FICHIER ou WEB ENVOYER BLOB, vous envoyez une page que vous avez préparée avec un éditeur HTML ou construite avec 4D et sauvegardée comme document sur disque. Dans les deux cas, vous avez tout contrôlé sur la page et, par exemple, vous pouvez insérer des scripts JavaScript dans la section HEAD du document et utiliser des scripts avec une balise FORM. Ainsi, dans l'exemple ci-dessus, le script renvoie le formulaire "frm" car vous avez donné un nom au formulaire. Vous pouvez également déclencher, accepter ou rejeter la soumission du formulaire au niveau de la balise FORM.

Note : 4D supporte le transport d'Applets Java.



Voir aussi  

Balises de transformation 4D

 
PROPRIÉTÉS 

Produit : 4D
Thème : Serveur Web
Nom intl. : Semi-dynamic pages

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)