Le web statique et le web dynamique

Utiliser le Web statique au bon moment pour améliorer les performances

Le Web est de plus en plus dynamique. Non seulement dans le sens humain - ce qui est une bonne chose - mais aussi dans le sens technique, c'est-à-dire la machinerie qui supporte le Web.

Et que cette machinerie soit dynamique n'est pas toujours une bonne chose. Elle l'est même de moins en moins.

Comment expliquer que le plus petit des blogs ne soit que l'interface d'une base de données sur laquelle est greffée un moteur de rendu ?

Ce moteur de rendu cherche des informations à droite (contenu réel), à gauche (menus, options, publicités,…), reconstitue une page web et l'envoie au client et ceci à chaque fois, que le contenu ait changé ou pas.

Même pour une page qui ne change pas, il n'y a plus de statique. Dans le meilleur des cas, le statique est rendu par un intermédiaire mettant en cache les contenus finaux qui n'ont pas été modifiés.

Mais le vrai statique est en perte de vitesse.

Était.

Car selon les dernières statistiques, il revient en force.

Pourquoi ? Tout simplement parce qu'il est plus performant et surtout il utilise moins de ressources. Or, à une époque où le maître mot est faible empreinte énergétique, le Web dynamique n'est pas toujours la stratégie la plus énergétiquement efficace.

Inutile de préciser que efficacité énergétique et performance sont liés.

L'efficacité, ce n'est pas simplement combien de temps il faudra à une page pour s'afficher, mais aussi quelle quantité de données, quel nombre de requêtes ont été nécessaires pour effectuer le travail. Une page volumineuse sur une machine à gros processeur et un réseau rapide s'affichera peut-être plus rapidement que la même page sur un réseau puls lent et un serveur moins puissant.

A-t-on seulement besoin d'une base de données, d'un moteur de rendu pour afficher le contenu d'un simple blog ?

Doit-on disposer d'un centre de calcul pour mettre en place le plus petit moteur de blog ?

L'hypertexte et le web dynamique

Avec le Web est arrivé l'hypertexte. Les pionniers du Web avaient bien compris que l'Internet permettait des connexions multiples. Pas seulement de simples renvois dans un document, ou entre deux documents, mais une multitude, car rien ne pouvait stopper la transitivité, si ce n'est l'imagination.

Un document relié à un document, lui-même relié à un document… Et pourquoi pas plusieurs ?

Au-delà du côté pratique indéniable, l'hypertexte cassait les codes. Jusqu'à l'invention du Web, les documents écrits n'étaient inspirés que du volumen, dont nous avons gardé les habitudes. Nos livres ne sont que des fragments de volumen, mais gardant toujours cette cohérence, comme un rouleau de texte qu'on déroule au fur et à mesure de la lecture.

D'ailleurs, le moindre article un peu long publié sur la Toile respecte les principes fondamentaux du volumen.

Ce qui est hypertextuel n'est pas l'article, le billet, qui, lui, est immuable. Mais le lien entre chacun est dynamique. Il dépend du contexte spatio-temporel - surtout - et de l'internaute - souvent. Chacun possède sa propre façon de naviguer, de comprnedre, de chercher, de fouiller.

Et pour autoriser cette multitude de lectures, nous avons ajouté une multitude d'ancrages : mots-clefs, tags, sémantique, … tous reliés les uns aux autres. Et plus nous ajoutons d'articles, plus l'hypertextuel devient vaste et complexe.

Fondamentalement, l'article est statique et l'hypertexte est dynamique.

Pour cette raison, il est souvent peu utile de stocker dynamiquement des articles. Seule la dynamique des liens est réellement intéressante car elle doit être mise à place à peu de frais tout en permettant d'exprimer la multitude des appréhensions.

L'extensivité et le multidimensionnel

L'hypertexte n'est qu'un résultat. Il repose sur un principe d'espace multidimentionnel.

Dans le monde du web, l'extensivité est souvent représenté par le X (eXtensible). Ce X qu'on retrouve dans XML ou XHTML.

Il est extensible car il permet d'ajouter un nouveau module, le sien ou celui d'un autre.

Chaque module n'est qu'une dimension différente, un nouvel axe, une nouvelle façon de lire l'univers. C'est un nouveau paradigme.

Ainsi, il y a l'information en elle-même, encapsulée dans le HTML qui lui donne un début de structure (titre, section, partie, paragraphe, …). Et il y a tout le reste, ajouté au fur et à mesure grâce à des espaces de noms (technologie XML) ou des ontologies (technologie RDF).

Grâce à cette vision multidimensionnelle, nous pouvons extraire les données structurées qui nous intéressent et construire le menu multidimensionnel dynamique associé.

Le menu structuré : un archaïsme

Nous avons trop souvent l'habitude de structurer un site Web selon l'ancienne méthode, c'est-à-dire avec des catégories principales, une hiérarchie. Il n'est qu'une vision rigide de l'organisation ; une grille de lecture imposée par le développeur.

À cause de (ou grâce à) l'hypertexte, le menu n'est plus une structure unique, mais un maillage qui peut s'attaquer selon différents angles.

Ce maillage prend peu à peu sa place à travers les tags, qui proposent souvent une autre façon de naviguer.

Cependant, nous sommes encore trop attachés à nos habitudes pour abandonner le menu classique par thèmes, au risque de perturber les internautes.

Ce menu par thème, rigide et prédéfini, nous oblige à conserver un certain nombre de vieux réflexes qui compliquent grandement le processus de génération et de navigation. Nous devons gérer le menu multidimentionnel en parallèle du menu classique, ce qui fait une double maintenance.

C'est un peu plus compliqué et très souvent inutile si le menu dynamique est bien réalisé.

Les règles

Maîtriser son code

La première des règles du développeur ou de l'administrateur est de contrôler le code qu'il génère.

Il est toujours étrange d'entendre un informaticien (professionnel) dire : je ne sais pas, c'est la machine/le framework qui génère/gère.

Ça ne devrait jamais arriver.

C'est parce que l'utilisateur n'avait pas la main sur le code que le mouvement Open Source est né.

En tant qu administrateur ou développeur de site Web, la qualité du code produit doit correspondre, au caractère près, à ce que vous avez décidé. Et si ce n'est pas le cas, vous devez pouvoir le changer.

Alors il faudra se creuser les méninges. Mais plus vous développerez de bouts de code et de modèles, plus les développements à venir seront rapides. Le plus difficile est de commencer, après ça roule tout seul. La machine est là pour vous aider.

Utiliser le X(HT)ML

Même si le HTML reste encore la référence dans l'imaginaire collectif, il n'est pas le format d'avenir.

Le format d'avenir est le XML. C'est pourquoi le W3C motive son usage (HTML transitionnel, strict, …).

La version XML du HTML est nommée XHTML. Il ne s'agit ni plus ni moins qu'un vocabulaire spécifique, hérité du HTML et orienté Web. Les navigateurs sont optimalisés pour interpréter ce format.

Ses avantages sont l'eXtensivité, c'est-à-dire l'ajout de dimensions, et sa syntaxe XML, c'est-à-dire l'usage d'une syntaxe souple et stricte à la fois.

Et cette syntaxe permet de relier la structure de la page à un ensemble incroyable de possibilités. Avec le format XML (ou XHTML), il est possible de passer la page à la moulinette et d'en extraire ce qu'on veut, en général par une ou plusieurs transformations XSL. Mais pas seulement.

Il est, par exemple, possible de :

  • extraire les mots-clef ;

  • extraire les menus de navigations ;

  • convertir la page en un autre format (Docbook, PDF, Latex, …) ;

  • extraire les informations sémantiques et alimenter une autre application avec (cf. GRDDL) ;

Vous pouvez utiliser par défaut le format XHTML, ce qui nécéssitera peu de transformations pour produire un document final, mais vous pouvez utiliser d'autres formats, comme Docbook.

Séparer la structure de la forme

L'information visuelle n'a aucun intérêt pour la machine. Elle ne sait pas ce que c'est. Et cette information visuelle est souvent très complexe à traiter. Un document Word docx en est un parfait exemple.

La présentation est souvent (et doit être) la dernière étape du processus de création. C'est la couche de laque sur le tableau.

L'utilisation du XML permet de séparer la structure et l'information de la présentation et de vous faire gagner énormément de temps.

Séparer les opérations

Ce qui oblige souvent à employer du Web dynamique pour afficher des éléments statiques est le fait que nous mélangeons les opérations de natures différentes. Nous voulons inclure du menu dynamique dans un article (statique par définition).

Il faut donc concevoir le site de façon plus large, avec recul, en séparant les opérations selon leur nature : le statique d'un côté et le dynamique de l'autre.

En définitive, vous aurez un site ressemblant schématiquement à :

schéma de site structuré par nature de document
schéma de site structuré par nature de document
Informations

Source : source (.graphml)

Auteur : ccompagnon

La méthode

Construire ses règles de transformation

En règle générale, le UX designer construit le modèle de document pour réaliser son site (lorsque celui-ci n'est pas déjà imposé). Il répond à la question Qu'est-ce que je veux présenter ?

Ceci est juste lorsqu'il ne s'agit que de Web, c'est-à-dire de la partie interactive homme-machine.

Mais cette consruction n'est pas efficace si vous voulez aller plus loin.

La première question à se poser n'est pas Qu'est-ce que je veux présenter ? mais Qu'est-ce que je veux pouvoir en faire ?

Cette question apportera comme réponse une solution technique, c'est-à-dire un bout de code qui remplira sa fonction et atteindra votre objectif. Votre objectif n'est pas que le lecteur lise l'article, se repère dans les menus. Ça, c'est accessoire. C'est important, c'est primordial même, mais cela ne nécessite aucune intelligence. Aujourdhui, la plupart des outils de conception web le font très bien (en réalité : très mal d'un point de vue informatique, mais c'est invisible la plupart du temps).

Car l'important d'une information n'est pas l'information elle-même, mais ce qu'on peut en faire. Une information dont on ne peut rien faire n'a aucune valeur (au sens personnel et humain, pas au sens capitaliste).

Lorsque nous lisons une information, l'interprétation que nous en avons provient de ce que nous pouvons en faire. Si je comprends une information c'est que, d'une façon ou d'une autre, j'ai pu et su en faire quelque chose. En cela, elle a de la valeur.

Lorsqu'un designer travaille l'apparence d'un site, il cherche à donner de la valeur à l'information et s'occupe préférentiellement de l'expérience utilisateur, mais beaucoup moins de l'expérience développeur. D'autre part, cette valeur est généralement limitée à l'humain. La machine ne peut rien en faire.

Quel intérêt que la machine puisse en faire quelque chose ? Traiter l'information automatiquement. Et c'est là que de bout de code prend tout son sens.

Si je veux pouvoir charger mon agenda à partir d'un événement contenu dans une page Web, il faut un bout de code pour ça. Et il faut aussi que la structure sous-jacente soit adaptée. L'expérience prouve que cette structure façonne plus la page Web que la présentation car l'efficacité du bout de code dépendra de l'efficacité de cette structure.

Il faut donc penser d'abord à ce que vous vouler faire de l'information pour constuire le code qui va la récupérer. Si ce code est inédit, alors il faudra un certain nombre d'essais et d'erreurs avant de trouver la structure optimale. Mais une information qui ne peut pas être récupérée est une information qui ne sert à rien.

Nous se déduisons donc :

  1. Les règles de transformation (règles métiers) impliquent le code.

  2. Le code implique la structure adaptée (code + structure = règles techniques).

  3. Toutes les structures mises bout à bout forment le modèle de votre document, auquel vient s'ajouter la partie UX.

Evolution

Il est rare de penser à toutes les règles du premier coup. Surtout lorsque les technologies évoluent, tout comme l'informaticien.

Il y a donc de fortes chances pour que le modèle et les structures évoluent avec le temps. mais comme vous utilisez du XML, un bout de code vous permettra de migrer aisément l'ancien format vers le nouveau.

Élaborer des procédés

Une fois que vous avez construit vos règles de transformation, vous disposez d'un ensemble d'outils, de bouts de code, chacun faisant une chose.

Pour exécuter toutes ces règles, vous devez le faire à la main, dans un ordre bien précis, tel une recette de cuisine.

L'informatique permettant d'automatiser les choses, vous devez vous simplifier la vie en automatisant les opérations, c'est-à-dire en élaborant des procédés, que vous connaissez peut-être mieux sous les anglicismes process ou worflow.

Il s'agit d'enchaîner les exécutions des règles de manière automatique afin de dérouler toutes les transformations dans l'ordre.

schéma de procédé
schéma de procédé
Informations

Source : source (.graphml)

Auteur : ccompagnon

L'élaboration de ces procédés nécessite un système capable d'exécuter des procédés.

Ce peut être natif au système, comme le shell UNIX, ou supplémentaire comme XProc. L'objectif étant de choisir celui qui vous sera le plus agréable et le plus souple à l'usage.

Il peut être local, sur votre machine de développement, ou distant, sur un serveur. Le choix final appartenant souvent à l'usage multi-utilisateur. Si vous êtes seul, alors vous aurez tendance à exécuter les procédés en local. Si vous travaillez à plusieurs, vous devrez incorporer votre travail dans un ensemble plus large de documents et les procédés devront s'exécuter sur ce corpus complet.

Exemple de procédé

  1. Validation de la conformité de la source par rapport au modèle.

  2. Génération du document à publier depuis la source.

  3. Extraction des mots-clef.

  4. Compilation des mots-clef pour créer les menus multi-dimentionnel.

  5. Extraction des videos.

  6. Compression des videos.

  7. Extraction du bloc de sitemap.

  8. Compilation du sitemap.

  9. Extraction du bloc de sitemap vidéo.

  10. Compilation du sitemap vidéo.

  11. Extraction du bloc de sitemap image.

  12. Compilation du sitemap image.

  13. Compilation des CSS.

  14. Compression des CSS.

  15. Transfert FTP de la source vers le serveur de publication.

  16. Transfert FTP des menus multidimentionnels vers le serveur de publication.

  17. Transfert FTP des sitmaps vers le serveur de publication.

  18. Transfert FTP des CSS vers le serveur de publication.

Les règles techniques élémentaires

Dès le départ, il faut penser à tout. Mais il est difficile, voire impossible, de penser à tout. Imposez-vous donc la discipline élémentaire suivante, pour laquelle vous développerez le code adéquat :

  • Chaque document doit être généré depuis un modèle (et seulement depuis un modèle. Pas de modification manuelle). Cela permet de vérifier a minima que la structure XML est correcte et que toutes les autres transformations fonctionneront.

  • Chaque modèle doit être identifié par une version (par exemple la propriété softwareVersion de schema.org ou juste la propriété version de schema.org).

  • Chaque document doit être attaché à un modèle (le document généré doit comporter quelque part le modèle et la version qui l'a généré).

  • Chaque document généré doit être validé par des règles automatisées afin de vérifier sa conformité (la conformité évite la fragmentation et les exceptions, ce qui simplifie les migrations).

Réalisation

Composition de la source

La source est le premier document qui sera produit après l'intervention humaine. Elle peut être composée entièrement à la main, dans un éditeur de texte ou à partir d'un autre langage.

Que doit-il y avoir dans la source ?

Pour faire simple : tout ce qui ne peut pas être déduit. C'est-à-dire (de façon non exhaustive) :

  • Le contenu de l'article (structure incluse : paragraphes, titre, …) ;

  • les métadonnées de l'article : auteur(s), contributeur(s) ;

  • les métadonnées des sous-éléments de l'article : images, vidéos, …

  • la sémantique : dates, lieux, personnes, références, …

  • les mots-clefs.

Pour des raisons pratiques, le format de la source est le XHTML permettant de disposer de la puissance du XML tout en permettant un affichage rapide dans un navigateur pour tester le rendu et valider le contenu (correction).

En pratique

L'auteur n'utilise pas forcément le XTML en format source de document.

Dans son répertoire de travail, en local, il conservera son travail sous la forme qui lui convient le mieux, mais il devra fournir au procédé un fichier d'entrée source conforme. Dans ce cas, une transformation supplémentaire peut être nécessaire.

Des outils inadaptés

Au regard de l'automatisation, de la construction des modèles et des transformations que nous devons réaliser, les outils proposés (CMS) sont très souvent trop riches, inadaptés et trop gourmands en ressources.

D'autre part, la qualité du code généré reste trop souvent à désirer.

Il convient donc de concevoir ses propres outils de travail, notamment sur la construction de la source, qui est le point central.

Vous pouvez utiliser du markdown pour rédiger les articles et les passer dans un script qui génèrera la première version de l'article (source), c'est-à-dire le contenu et la structure de base. Mais il faudra ajouter les métadonnées et la sémantique.

Cette seconde opération peut être automatisée, pour peu, par exemple, que chaque image utilisée soit stockée avec ses métadonnées, qu'il suffirait ensuite d'inclure dans la source (XInclude).

Vous pouvez utiliser un CMS. Mais optez pour un moteur capable de générer des pages statiques, que vous puissiez ensuite les insérer dans votre procédé.

Composition du modèle

Le modèle est la transformation qui prend la source et génère son rendu final après validation de la conformité de la source.

Il s'occupe d'ajouter tout ce qui peut être déduit ou paramétré : titre principal, insertion des menus et des composants supplémentaires (publicités, scripts, …), ajout du bas de page (footer), génération des sémantiques supplémentaires (OpenGraph,…), etc.

Génération et gestion des parties dynamiques

Une fois qu'on dispose de l'article statique, il faut s'occuper de la partie dynamique (normalement unique puisque tout est rassemblé dans un seul et unique mécanisme), c'est-à-dire celle qui change en fonction de l'exploration de l'internaute.

Sauf cas exceptionnel, dans la grande majorité des cas, cela se limite aux menus.

Les menus de navigation sont générés exclusivement à partir des données statiques des articles ou de leurs sources. Toute modification d'une source entraîne une recompilation des menus.

Comme nous l'avons vu, gérer les menus de façon multidimentionnelle à partir des mots-clef nous simplifie grandement le travail car nous n'avons besoin que d'une petite application qui prend un paramètre (le mot-clef recherché) et renvoie la liste des articles associés, avec un petit résumé du contenu.

Cette seule et unique application gère la navigation à elle seule, de façon dynamique. Elle n'est juste qu'une base de liens. Elle ne gérera aucun contenu et n'en génère aucun.

Elle ne tient qu'en quelques lignes de codes : elle est donc facile à développer, facile à maintenir et rapide à s'exécuter.

Si le nombre d'articles est faible (200 à 300), la base de données sous-jacente peut être sous forme de fichiers. Si le nombre d'articles est plus conséquent, elle peut être sous la forme d'une vraie base de données ou sous la forme d'un sous-ensemble de métadonnées (en général, un grep suffit pour obtenir ce sous-ensemble).

Génération des menus

Soit l'article possédant le mot-clef suivant :

<meta name="keywords" typeof="ctag:Tag" rel="ctag:means" resource="http://dbpedia.org/resource/Green_IT" property="ctag:label" content="Green IT" data-tag="Green_IT"/>

content représente le mot-clef affiché à l'utitisateur dans sa langue ; data-tag représente ce qui est stocké en base et sert de référence. Il ne contient ni espace, ni caractère accentué qui pourrait compliquer les traitements. Ça pourrait être un code numérique mais il serait plus difficile à gérer par un humain.

L'extraction du mot-clef s'effectue de la façon suivante :

<xsl:variable name="description" select="/html/head/meta[@name='description']/@content"/>
<xsl:variable name="title" select="/html/head/title"/>

<xsl:template match="span[ @typeof='ctag:Tag' and @property='ctag:label' and exists(@content) ]">
<xsl:variable name="tag.id" select="@data-tag"/>
<xsl:variable name="tag.label" select="@content"/>

<tag id="{$tag.id}" label="{$tag.label}" href="{$url}">
<title><xsl:value-of select="$title"/></title>
<desc><xsl:value-of select="$description"/></desc>
</tag><xsl:text>
</xsl:text>
</xsl:template>

$url est, quant à lui, un paramètre contenant le chemin final de l'article publié. Ce paramètre est déféni au moment de l'extraction des mots-clef, à partir du nom du fichier source. Il pourrait être aussi le contenu du lien canonique :

<link rel="canonical" href="http://www.firenode.net/techno/web_static_dynamic.html"/>

Le mot-clef, peut aussi être inséré directement dans le document, sous la forme de lien visible comme :

<a href="tag.sh?tag=CSS" typeof="ctag:Tag" rel="ctag:means" resource="http://dbpedia.org/resource/Cascading_Style_Sheets" property="ctag:label" data-tag="CSS">CSS</a>

Et analysé à peu près de la même façon :

<xsl:template match="a[ @typeof='ctag:Tag' and @property='ctag:label' and not(exists(@content)) ]">
<xsl:variable name="tag.id" select="@data-tag"/>
<xsl:variable name="tag.label" select="."/>
<tag id="{$tag.id}" label="{$tag.label}" href="{$url}">
<title><xsl:value-of select="$title"/></title>
<desc><xsl:value-of select="$description"/></desc>
</tag><xsl:text>
</xsl:text>
</xsl:template>

Le résultat obtenu est un fichier partiel contenant la ligne :

<tag id="Green_IT" label="Green IT" href="http://www.firenode.net/techno/web_static_dynamic.html"><title>Le web statique et le web dynamique</title><desc<Utiliser le Web statique au bon moment pour améliorer les performances</desc></tag>

La compilation de tous les fichiers de tags donne la base de données finale.

Compatibilité avec le menu structuré

Si vous conservez une compatibilité avec une arborescence classique (hiérarchie), incluez dans la source les métadonnées de navigation classique :

<link rel="home" href="home.html" title="Retour"/>
<link rel="start" href="start.html" title="Pour débuter"/>
<link rel="up" href="up.html" title="Chapitre du tout"/>
<link rel="previous" href="previous.html" title="L'article d'avant"/>
<link rel="next" href="next.html" title="L'article d'après"/>

À partir de ces métadonnées, il est possible de générer un menu de la façon suivante :

<xsl:template match="link[@rel = 'home']">
<a href="{@href}" title="{@title}" accesskey="1"><img src="../commons/image/png/200px-Home_Icon.svg.png"/><p>Index</p></a>
</xsl:template>

<xsl:template match="link[@rel = 'up']">
<a href="{@href}" title="{@title}" accesskey="5"><img src="../commons/image/png/200px-High-contrast-go-up.svg.png"/><p>Retour</p></a>
</xsl:template>

<xsl:template match="link[@rel = 'previous']">
<a href="{@href}" title="{@title}"><img src="../commons/image/png/200px-High-contrast-go-previous.svg.png"/><p>Précédent</p></a>
</xsl:template>

<xsl:template match="link[@rel = 'next']">
<a href="{@href}" title="{@title}"><img src="../commons/image/png/200px-High-contrast-go-next.svg.png"/><p>Suivant</p></a>
</xsl:template>

Pour plus d'informations, lire l'article Création automatisée de la navigation.

Vers l'infini et au-delà

Bien entendu, il ne s'agit là que d'exemples a minima. À partir de votre modèle, rien ne vous empêche de générer d'autres types de documents dépendants comme du code JavaScript, du CSS associé au modèle (chaque bloc structuré donnera le code CSS correspondant), le code Java des Servlets, ...

Si le modèle est bien structuré, tout est possible.

Par exemple, dans le cas du CSS, il convient de stocker les styles de façon atomique par objet graphique, d'extraire la liste des objets graphiques depuis le modèle et de concaténer les fichiers atomiques selon la liste extraite.

L'utilisation des menus

À présent, tous les mots-clef sont en base (ici un fichier XML). Voyons comment l'interroger.

À partir des mots-clefs, vous pouvez créer une page web (statique) qui référence tous les mots-clef.

À partir des mots-clefs de chaque article, vous pouvez intégrer ceux-ci soit en début soit en fin d'article de façon automatique à la génération, soit par l'usage d'un lien comme :

<a href="tag.sh?tag=CSS" typeof="ctag:Tag" rel="ctag:means" resource="http://dbpedia.org/resource/Cascading_Style_Sheets" property="ctag:label" data-tag="CSS">CSS</a>

Ce lien fait référence au script tag.sh et lui passe en paramètre tag=CSS, qui sera analysé de la façon suivante :

[ "${REQUEST_METHOD}" = "POST" ] && read QUERY_STRING
tag=$(echo ${QUERY_STRING} | tr '&' '\n' | grep ^tag= | cut -d"=" -f2)

Il ne reste plus qu'à rechercher simplement toutes les pages contenant le mot-clef CSS et les afficher dynamiquement, soit par une requête sur la base de données, soit par un filtre :

<xsl:variable name="tags" select="/application/data/tag[@id = $param.tag]"/>

<xsl:for-each select="$tags">

</xsl:for-each>

Vrai et faux Web dynamique

Habituellement, l'usage veut que la page Web dynamique soit générée dynamiquement.

Évidence ! Oui.

Mais lorsque la page Web dynamique est générée à la volée, le moteur de rendu du serveur génère le code complet de la page, avec sa structure ses titres, ses paragraphes. Une fois cela fait, il envoie de tout au client qui se charge de l'interpréter et de l'afficher.

Et il effectue cette opération à chaque fois que la page est demandée.

La structure de la page a-t-elle changée ? Que ce soit le cas ou pas, il renvoie.

Ce n'est pas ce qu'on peut technique appeler du vrai Web dynamique. Jusque un Web dynamique partiel (et coûteux en temps machine).

Le vrai Web dynamique constitearit à n'envoyer que le contenu sans renvoyer la structure à chaque fois.

Et ceci peut être aisément fait avec la combinaison XML/XSL : le moteur de menu dynamique n'envoie que les données avec une structure minimale, ainsi qu'une référence à une transformation XSL qui se chargera d'afficher la page au format XHTML sur le navigateur du client. C'est le client qui se charge de déterminer la structure, et non le serveur.

Les données envoyée ressemblent à :

<tag id="Green_IT" label="Green IT" href="page1.html"><title>Titre1</title><desc<Desc1</desc></tag>
<tag id="Green_IT" label="Green IT" href="page2.html"><title>Titre2</title><desc<Desc2</desc></tag>

La feuille de style est appelée par :

<?xml-stylesheet type="text/xsl" href="tag.xsl"?>

et le navigateur fera le reste.

Vous pouvez voir un exemple ici.

Exemples

Quelques exemples simples à télécharger (version alpha) :

  • un document source : source.xml

  • un modèle de transformation : source2html.xsl (avec son paramétrage param.xsl)

  • un modèle de validation : source.checkFormat.xsl

  • un modèle de procédé : source2html.sh

  • le moteur de menu : tag.sh

  • l'interface XSL du moteur de menu : tag.xsl

  • un exemple de base de données de tags : tags.xml

  • un modèle de d'extraction de tags : xhtml.extract.tags.xsl et son procédé xhtml.extract.tags.sh

  • un modèle de transformation de lien XML en une page statique : tags2xhtml.xsl

  • un exemple de page de liens statique : tags.html

Web