Structure du site

Structure du site Internet

Pour les amateurs, entrons un peu dans les détails techniques...

Le site est structuré de la manière suivante :

Il n'y a donc pas de page HTML, mais seulement des fichiers XSLT, ainsi qu'une page PHP, assez courte, qui se charge de lancer les transformations. Un autre site conçu sur le même modèle conserverait la même page PHP, mais posséderait sans doute des fichiers XSL différents.

Non seulement le principe de la séparation données/présentation est ainsi respecté, mais il est possible d'intervenir au niveau logique intermédiaire grâce aux fichiers XSLT.
Ce que j'appelle le « niveau logique » est comparable à la couche contrôle du paradigme Modèle-Vue-Contrôleur, et correspond à la manière dont contenus et fonctionnalités s'articulent au sein d'une page Internet.
Par exemple, définir un mécanisme de pagination, pour un site d'articles en ligne, ne correspond ni à une donnée en tant que telle, ni à un élément de présentation en soi (à moins de s'interroger sur le type de caractères employés, les couleurs, etc., qui sont bien, eux, des éléments de présentation, et qui se définiront en CSS). Ce niveau fonctionnel et logique s'intercale donc entre présentation et donnée. Si, techniquement, on le met généralement en oeuvre au travers de langages de script, comme PHP, ou au travers de servlets, on peut aussi avoir recours à XSLT.

Schéma de traitement des requêtes HTTP

Un fichier XSL possède en particulier cette faculté de pouvoir faire référence à d'autre fichiers XSL, grâce à la directive <xsl:include>, ce qui est bien pratique pour définir des librairies de fonctions, et mutualiser le code (menu, pied de page, pagination, détail d'un article, etc.)
A l'intérieur d'un fichier inclus avec <xsl:include>, les différentes fonctions/fonctionnalités pourront avoir été définies au sein de templates nommés (<xsl:template name="footer">).
Si vous avez quelques connaissances en syntaxe XSLT, je vous invite à regarder l'include général, utilisé sur toutes les pages du site : /includes/common.xsl
Vous y trouverez la définition du menu du haut par exemple (head).
Ce système correspond un peu à la notion d'include PHP, mais avec une syntaxe plus souple et bien mieux adaptée à l'environnement XML.

Bien sûr, XSLT n'a rien de la puissance de vastes environnements de développement comme JEE, .NET, Perl, ou PHP, qui intègrent de nombreuses classes (connexion à des bases de données SQL, traitement d'images, email, cryptage, etc.), dont il est vain d'imaginer un jour le portage en XSLT. Pourtant, dans la mesure où de plus en plus d'applications communiquent au travers d'XML, de plus en plus de traitements pourront se satisfaire d'XSLT, et je suis convaincu que ce langage prendra une place grandissante dans le web dans la décennie à venir.

Remarque : avec la structure que je décris ci-dessus, l'existence physique des répertoires n'est même pas obligatoire. D'ailleurs, dans mon site, le répertoire /en/, qui contient la version anglaise, n'existe pas réellement  : c'est le fichier .htaccess qui passe une variable $langue au fichier index.php, qui à son tour en informe le processus XSLT, de façon à ce que celui-ci extrait le contenu anglais des documents XML. Sur le fond, la totalité du site pourrait être virtuelle, et l'on pourrait ainsi imaginer un document XML maître, une sorte de plan du site, qui serait lu à chaque requête pour déterminer quel fichier XSL utiliser en fonction de quelle page demandée. Il n'est pas exclu que je fasse un jour évoluer l'architecture de mon site vers ce modèle, d'autant que le système actuel fait déjà appel à une liste d'élements XML "page" pour enregistrer les contenu des balises title et meta de chaque page. Cela pourrait même former la base d'un CMS. Reste à le développer, évidemment...