J'ai commencé par étudier la structure du site :
Pour le php, j'utilise une méthode simpliste mais efficace, qui utilise le xsltproc :
<?php
...
$xhtml=new xslt($xml, $sitemap, true, 'xsltproc');
$xhtml->setParams(array("theme"=>_SITE_RESRC."/themes/theme0.xml",
"categorie"=>$categorie,
"active"=>$categorie,
"module"=>$module,
//"module_style"=>$module_style,
"action"=>$action ));
$xhtml->transform();
echo $xhtml->output();
...
?>
Pour le xml, j'ai séparé toutes les référence dont j'avais besoin, pour le rendre dynamique, à chaque fois un xml, associé à un xsl, contenant des balises de réfs
contenues dans les autres fichiers xml, eux-même associés à leur propre xsl !...
Un exemple de fichier xml : la map de base, dans l'immédiat :
<?xml version="1.0" encoding="iso-8859-15"?>
< html >
< head >
<insert-metas/>
<insert-head/>
< /head >
< body >
< div class="page" >
< div class="catbar" >
<insert-catbar/>
< /div >
< div class="toolbar" >
<insert-toolbar/>
< /div >
< div class="menubar" >
<insert-menubar/>
< /div >
< div class="mainpage" >
< br/ >
< div class="header" >
<insert-header/>
< /div >
< div class="main" >
<insert-main/>
< /div >
< div class="footer" >
<insert-footer/>
< /div >
< /div >
< div class="infobar" >
<insert-infobar/>
< /div >
< div class="statusbar" >
<insert-statusbar/>
< /div >
< /div >
< /body >
< /html >
NB : Imaginez les autres fichiers !?...
Etc, finalement, je n'ai qu'un petit moteur PHP, des pages de transformation xsl, et des données xml trés simples, associées, ça récupère l'ensemble du site, avec chaque élément xml/xsl, customizable ! Suffit d'une interface d'édition, et une conservation des choix du user en terme de fichier customizé, que j'étais en train d'étudier !...
[^] # Re: Utilisation du xml....
Posté par Dams Nation . En réponse au message Où en est-on avec le XML. Évalué à 2.
Pour le php, j'utilise une méthode simpliste mais efficace, qui utilise le xsltproc :
<?php
...
$xhtml=new xslt($xml, $sitemap, true, 'xsltproc');
$xhtml->setParams(array("theme"=>_SITE_RESRC."/themes/theme0.xml",
"categorie"=>$categorie,
"active"=>$categorie,
"module"=>$module,
//"module_style"=>$module_style,
"action"=>$action ));
$xhtml->transform();
echo $xhtml->output();
...
?>
Pour le xml, j'ai séparé toutes les référence dont j'avais besoin, pour le rendre dynamique, à chaque fois un xml, associé à un xsl, contenant des balises de réfs
contenues dans les autres fichiers xml, eux-même associés à leur propre xsl !...
Le caneva de base : sitemap.xsl :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform(...)">
<xsl:output method="html" encoding="ISO-8859-15" indent="yes"/>
<xsl:param name="categorie"/>
<xsl:param name="module"/>
<xsl:param name="action"/>
<xsl:param name="theme"/>
<xsl:param name="active"/>
<!--xsl:param name="module_style"/-->
<!--xsl:param name="session_id"/-->
<xsl:include href="src/themes.xsl"/>
<xsl:include href="src/categories.xsl"/>
<xsl:include href="src/modules.xsl"/>
<xsl:include href="src/actions.xsl"/>
<xsl:include href="src/header.xsl"/>
<xsl:include href="src/main.xsl"/>
<xsl:include href="src/footer.xsl"/>
<xsl:include href="src/smileys.xsl"/>
<xsl:include href="src/misc.xsl"/>
<!--xsl:include href="concat('categories/', $categorie, '/', $module, '/module.xsl')"/-->
<!--xsl:import href="$module_style"/-->
<xsl:variable name="map" select="document('src/map.xml')"/>
<xsl:variable name="base" select="document('src/base.xml')"/>
<xsl:variable name="style" select="document($theme)"/>
<xsl:variable name="page" select="page"/>
<xsl:variable name="categories" select="document('categories/categories.xml')"/>
<xsl:variable name="modules" select="document(concat('categories/', $categorie, '/modules.xml'))"/>
<xsl:variable name="actions" select="document(concat('categories/', $categorie, '/', $module, '/actions.xml'))"/>
<!--xsl:variable name="infobar" select="document(concat('../sessions/',$session_id,'/infobar.xml'))"/-->
<xsl:template match="/">
<xsl:apply-templates select="$map/html"/>
</xsl:template>
<xsl:template match="insert-head">
<xsl:apply-templates select="$page/head/*"/>
<xsl:apply-templates select="$base/format/*"/>
<xsl:apply-templates select="$style/*"/>
</xsl:template>
<xsl:template match="insert-catbar">
<xsl:apply-templates select="$categories/*"/>
</xsl:template>
<xsl:template match="insert-toolbar">
<xsl:apply-templates select="$modules/*"/>
</xsl:template>
<xsl:template match="insert-menubar">
<xsl:apply-templates select="$actions/*"/>
</xsl:template>
<!--xsl:template match="insert-infobar">
<xsl:apply-templates select="$infos/*"/>
</xsl:template-->
<xsl:template match="insert-header">
<xsl:apply-templates select="$page/header"/>
</xsl:template>
<xsl:template match="insert-main">
<xsl:apply-templates select="$page/main"/>
</xsl:template>
<xsl:template match="insert-footer">
<xsl:apply-templates select="$page/footer"/>
</xsl:template>
<!--xsl:template match="insert-statusbar">
<xsl:apply-templates select="$statusbar/statusbar/*"/>
</xsl:template-->
<xsl:template match="@*|*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Un exemple de fichier xml : la map de base, dans l'immédiat :
<?xml version="1.0" encoding="iso-8859-15"?>
< html >
< head >
<insert-metas/>
<insert-head/>
< /head >
< body >
< div class="page" >
< div class="catbar" >
<insert-catbar/>
< /div >
< div class="toolbar" >
<insert-toolbar/>
< /div >
< div class="menubar" >
<insert-menubar/>
< /div >
< div class="mainpage" >
< br/ >
< div class="header" >
<insert-header/>
< /div >
< div class="main" >
<insert-main/>
< /div >
< div class="footer" >
<insert-footer/>
< /div >
< /div >
< div class="infobar" >
<insert-infobar/>
< /div >
< div class="statusbar" >
<insert-statusbar/>
< /div >
< /div >
< /body >
< /html >
NB : Imaginez les autres fichiers !?...
Etc, finalement, je n'ai qu'un petit moteur PHP, des pages de transformation xsl, et des données xml trés simples, associées, ça récupère l'ensemble du site, avec chaque élément xml/xsl, customizable ! Suffit d'une interface d'édition, et une conservation des choix du user en terme de fichier customizé, que j'étais en train d'étudier !...