Le web de Dominique Guebey – Bazar informatique

Page : http://www.dg77.net/tekno/sitedoc.htm


   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

Documentation technique du site

Sommaire

Le site dg77.net

Format

Les pages sont au format HTML5.

Évolution :

Implantation générale

Racine

Le répertoire racine contient :

Répertoire design

Quoique ce ne soit pas impératif, il permet de regrouper des fichiers utiles à la création et à la présentation du site.

Répertoires thématiques

Il s’agit des répertoires correspondant aux différentes rubriques traîtées sur le site.

Génération, enregistrement des pages, namespace.

Stockage des données à publier dans le Web

Les données sont écrites dans des fichiers XML, dits fichiers sources. Un fichier XML peut contenir les données de plusieurs pages html. Le système se charge d’ajouter automatiquement des header, en-têtes et pieds de pages standardisés.

Méthode de production des pages Web

Les fichiers HTML sont créés par des transformations XSL, contenues dans des fichiers .xsl – également au format xml. Des informations détaillées se trouvent plus bas (sections Processeur XSLT et Liste des modules).

La transformation XSL peut être lancée pour l’ensemble des pages html contenues dans le fichier xml, ou pour une seule d’entre elles.

La description d’une page peut se limiter à indiquer en référence (balise d:docu) un autre fichier xml (fichier externe) qui sera inclu à la génération.

Namespaces (espaces de nommage)

Les données html contenues dans les fichiers source XML sont associées à l’espace de nommage défini par http://ns.dg77.net/XML/. Les balises spécifiques au présent système, par convention distinguées par le raccourci (xmlns) d:, sont associées à http://ns.dg77.net/XML/d/.

Confection du site

On se positionne dans le répertoire racine du site (commande cd). C’est là que le processeur XSLT mettra les données qu’il génère.

Arguments à transmettre au module XSLT :

Distribution libre – Changelog

On peut récupérer les outils qui produisent le présent site sous la forme d’un fichier compressé (format zip) dans le répertoire /design. On y trouvera le nécessaire pour créer ses propres pages web. Il s’agit pour l’essentiel de modules XSLT de génération, de fichiers de configuration, feuilles de style CSS, et des exemples de fichiers sources XML.

Dernière version : #18, du 05 avril 2024.

Le fichier Changelog.txt permet de connaître les éléments qui ont fait l’objet de corrections ou améliorations, ainsi que les évolutions depuis la dernière version.

Exemples, page témoin et structure XML

Une page témoin [http://www.dg77.net/demo/index.html] est disponible. Son source XML [http://www.dg77.net/demo/demo_temoin.txt] permet de comprendre comment s’affichent les différents éléments qu’on peut trouver dans une page web.

Schéma simplifié.

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE www SYSTEM "../XML/XSL/listent.ent">
<d:www xmlns="http://ns.dg77.net/XML/" 
    xmlns:d="http://ns.dg77.net/XML/d/"
>

<d:page nomfic="chemin/nompage.htm">
<d:description>
    <d:cre>2004-10-28</d:cre>
    <d:upd></d:upd>
    <d:titre>Documentation technique</d:titre>
    <description>(Texte descriptif)<description>
</d:description>

<h2>Documentation technique du site</h2><
    …
    
</page>

<page nomfic="autrepage.html">
<description>
    …
</d:page>

</d:www>

Illustration plus complête :

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE www SYSTEM "../XML/XSL/listent.ent">
<d:www xmlns="http://ns.dg77.net/XML/" 
    xmlns:d="http://ns.dg77.net/XML/d/"
>

…

<!-- *************************************************** -->

<d:page nomfic="tekno/sitedoc.htm" retour="tekno/index.html" e="">
<d:description>
    <d:cre>2004-10-28</d:cre>
    <d:upd></d:upd>
    <d:titre>Documentation technique</d:titre>
    <description>Documentation technique sur ce site</description>
    <keywords>html,xhtml,xml,xslt</keywords>
    <d:style></d:style>
    <d:docu></d:docu>
</d:description>

<d:corps>

<h2>Documentation technique du site</h2><
    …
    
</d:corps>
</d:page>
<!-- *************************************************** -->

<d:page nomfic="tekno/tomcat.htm" retour="tekno/index.html" e="">
<d:description>
    …
</d:description>

[balisage html]

</d:page>

</d:www>

La partie préliminaire, contenue au sein de l’élément d:description, donne diverses information qui serviront à la partie HEAD de la page. Noter d’abord les attributs :

La description contient différentes informations classiques (titre, description, mots-clefs…). La balise d:titre est obligatoire. d:cre et d:upd sont les dates de création et dernière modification de la page. Il est possible d’insérer dans cette partie des balisages meta et link : ils seront reproduits dans l’entete de la page résultante.

Paramétrage, fichier Config.xml

Config.xml

Config.xml permet d’initialiser des variables essentielles, telles que l’encodage (cf notre page [http://www.dg77.net/tekno/xhtml/codage.htm]), la langue par défaut, le protocole, le nom de domaine, la désignation de la page d’accueil, etc.

<config xmlns="http://ns.dg77.net/XML/d/">
  <!-- Encodage -->
  <encodage>utf-8</encodage>
  <!-- Langue par defaut -->
  <dglang>fr</dglang>
  <!-- Protocole (http, https...) -->
  <protoc>http</protoc>
  <!-- noms de domaine et sous-domaine -->
  <domaine>xxxxxx.com</domaine>
  <ssdomaine>www</ssdomaine>
  <!-- Nom de la page d'accueil 
       (par défaut : index.html) -->
  <homepage>/index.php</homepage>
  <!-- Fichier bandeau general du site -->
  <dgbando>../../design/root_bando.xml</dgbando>
  <!-- Fichier index des sections du site -->
  <dgindex>../../design/root_index.xml</dgindex>
  <!-- feuille de style (CSS) generale -->
  <pcss_gen>/design/monstyl.css</pcss_gen>
  <!-- feuille de style (CSS) d'affichage (screen) -->
  <pcss_scr>/design/monstylecran.css</pcss_scr>
  <!--  feuille de style (CSS) d'impression (print) -->
  <pcss_prt>/design/monstylprint.css</pcss_prt>
  <!-- Classe par defaut du contenu -->
  <class_main>contenu</class_main>
  <!-- Classe par defaut des sous-titres -->
  <class_titr>demo</class_titr>
  <!--  feuille de style (CSS) galerie d'image -->
  <pcss_gal>/design/galerie.css</pcss_gal>
  <!-- Classe pour galerie d'images -->
  <class_gal>image</class_gal>
  <!--  prefixe/suffixe pour noms de fichiers icônes -->
  <gal_prefix>_t</gal_prefix>
  <!--  Cf précédent : si gal_preftop vide, ce sera 
  un préfixe (mis avant le nom du fichier), si non vide, 
  ce sera un suffixe (ajouté après le nom) -->
  <gal_preftop>x</gal_preftop>
  <!-- Auteur du site -->
  <dgauteur>Alfred Jarry</dgauteur>
  <!-- Page sur l'auteur -->
  <dgautpag>/auteur.htm</dgautpag>
  <!-- Page "plan du site" (sitemap) -->
  <sitemap>/sitemap.htm</sitemap>
  <!-- page informations globales sur le site -->
  <pinfo>/info.htm</pinfo>
  <!-- URL à utiliser pour CONTACT -->
  <pcontact>http://www.xxxxxx.com/email/</pcontact>
  <!-- URL de la page ABOUT -->
  <pabout>/about.htm</pabout>
  <!-- Emplacement et nom "favicon" -->
  <favicon>/design/favic.ico</favicon>
  <!-- Emplacement et nom image QRCode du site -->
  <qrcode>/monQRcode.png</qrcode>
  <!-- Nom de cette machine XSLT -->
  <pgenerateur>net.dg77.xslengin</pgenerateur>
  <!-- Fichier liste des pages avec bouton retour generique -->
  <pret_js>../../design/retr_js.xml</pretour_js>
</config>

Feuille de style de service

Un fichier de type CSS a été créé pour permettre l’affichage convivial dans un navigateur de Config.xml, ainsi que root_index.xml (cf infra). Dans le présent site il se dénomme design/config_xml.css. Son utilisation suppose deux conditions :

Exemple :

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="config_xml.css"?>
<config xmlns="http://ns.dg77.net/XML/">
  <encodage nom="Encodage">utf-8</encodage>
  <dglang nom="Langue">etc.

Suivre ce lien [http://www.dg77.net/design/Config.xml] pour voir le résultat dans le présent site internet.

Bandeau général d’entête

L’entête général du site est récupéré dans un fichier xml défini par la variable $dgbando (Paramétrée dans Config.xml). Exemple :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE div SYSTEM "../XSL/listent.ent">
<div xmlns="http://ns.dg77.net/XML/"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
><xsl:text disable-output-escaping="yes">&nbsp;XXX&nbsp;</xsl:text>
<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>
</div>

Titre et barre de menu

Cette partie est configurée par le fichier root_index.xml.

Fonction : fournir un index du site et des libellés automatisables dans le bandeau. Il permet d’voir une barre de menu variable en fonction du répertoire où on se situe.

Utilisé dans le traîtement de l’entête. Le fichier définit les fichiers à inclure, en fonction du répertoire ou répertoire + sous-répertoire de la rubrique en question.

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Liste des sections :
- cle   : nom du repertoire
- lib   : titre a afficher
- menu  : fichier contenant la barre de menu
- descr : élément (pour version imprimable), ne
          doit exister qu'en un seul exemplaire.
-->
<index xmlns="http://exe.dg77.net/XML/d/">
 <entree>
   <cle></cle>
   <lib></lib>
   <menu>../SRC/menu_root.xml</menu>
   <descr>Le web de Dominique Guebey</descr>
 </entree>
 <entree>
   <cle>marche</cle>
   <lib>La marche athlétique</lib>
   <menu>../src/menu_marche.xml</menu>
 </entree>
 <entree>
   <cle>tekno</cle>
   <lib>Bazar informatique</lib>
 </entree>
 <entree>
   <cle>tekno/as400</cle>
   <lib>AS/400 - iSeries</lib>
 </entree>
 <entree>
   <cle>galerie</cle>
   <lib>Images</lib>
   <menu>../etc/menu_root.xml</menu>
 </entree>
</index>
 index 
Racine
 entree 
Enregistrement
 cle 
Nom de répertoire, suivi éventuellement d’un sous-répertoire
 lib 
Libellé
 menu 
Nom d’un fichier contenant une "barre de menu" (classe/id "menubar") affichable en tête de page.
 descr 
Texte destiné à la version imprimable. Cet élément est unique dans tout le fichier root_index.xml.

Suite : traîtement par xsl:key

Au moment de la génération par XSLT, l’argument de recherche est transmis par la variable clef. Noter l’utilisation de for-each pour contourner l’interdiction d’utiliser directement document() dans match="…

<!-- Definition de la clef d'acces -->
<!-- xsl:key doit etre au sommet de la page xslt ("top level") -->
<xsl:key name="chainage" match="d:entree" use="d:cle"></xsl:key>

  …

<!-- Recherche et recuperation du libelle -->
 <xsl:for-each select="document('../fic_plan.xml')/d:index">
   <xsl:value-of select="key('chainage',$clef)/d:lib" />
 </xsl:for-each>

d:docu : données stockées dans un fichier xml externe

Mention d:docu dans la partie description de la page. Exemple :

<page nomfic="marche/news/maj.htm" retour="marche/news/index.htm">
<d:description>
  <d:cre>2015-06-03</d:cre>
  <d:upd>2017-01-04</d:upd>
  <d:titre>Historique annales marche athlétique</d:titre>
  <description></description>
  <keywords></keywords>
  <d:style></d:style>
  <d:docu>marche_news_maj.xml</d:docu>
</d:description>
    … [contenu html]
</d:page>

Le fichier indiqué par "d:docu" peut être de type “liens” (cf la section Liste de liens), RSS2 (voir la section flux rss), ou XHTML / HTML.

Le fichier sera inséré au début de la page. Les éléments éventuellement spécifiés dans le corps (après la partie description) s’ajouteront à la suite. Cela n’est pas conseillé car certaines fonctions ne seront plus assurées correctement (notes de bas de page…).

d:inclure : inclusion de données html

Insertion d’un autre fichier

La balise d:inclure permet d’insérer un fichier xml (ou une partie de ce fichier) dans le corps des données. L’attribut source spécifie le nom de l’objet à inclure. Attention : il s’agit d’une copie du fichier tel-quel, les templates ne sont pas appliqués. En particulier les notes de bas de page (cf section des spécifications) ne fonctionneront pas. Par conséquent, ces données doivent appartenir au namespace de la page html résultante.

Exemple :

Spécification dans le fichier xml
<h6>Balance des blancs (BdB / WB)</h6>
<d:inclure source="balbla.xml" />
Fichier balbla.xml
<?xml version="1.0" encoding="utf-8"?>
<article "http://ns.dg77.net/XML/">
<p>La balance des blancs correspond à l’équilibre entre les différentes 
couleurs enregistrées par le capteur ; sa fonction est de permettre une reproduction 
fidèle des teintes.</p>
</article>

Noter la mention xmlns. Résultat :

Balance des blancs (BdB / WB)

La balance des blancs correspond à l’équilibre entre les différentes couleurs enregistrées par le capteur ; sa fonction est de permettre une reproduction fidèle des teintes.

Inclusion limitée à un fragment de fichier xml

Au lieu d’insérer le fichier xml entier, il est possible d’en sélectionner une partie pour inclusion.

La partie qu’on veut copier doit correspondre à un élément doté d’un attribut id. Exemple (Code d’instruction criminelle, édition 1828) :

<div "http://ns.dg77.net/XML/">
 <div id="cic072">
  <h6>Art. 72</h6>
  <p>Les témoins seront cités par un huissier ou 
  par un agent de la force publique, à la requête 
  du procureur du Roi.</p>
 </div>
 <div id="cic073">
  <h6>Art. 73</h6>
  <p>Ils seront entendus  séparément, et hors de 
  la présence du prévenu, par le juge d’instruction, 
  assisté de son greffier.</p>
 </div>
 <div id="cic074">
  <h6>Art. 74</h6>
  <p>Il représenteront, avant d’être entendus, 
  la citation qui leur aura été donnée pour 
  déposer ;  et il en sera fait mention dans le 
  procès-verbal.</p>
 </div>
</div>

Dans l’élément d:inclure, on ajoute l’attribut idref, qui mentionne l’id correspondant au membre qu’on veut copier. Exemple :

<d:inclure source="sixcodes.xml" idref="cic073"/>

Résultat après génération :

Art. 73

Ils seront entendus séparément, et hors de la présence du prévenu, par le juge d’instruction, assisté de son greffier.

Inclusion d’une autre partie prise dans le même fichier source xml

Si l’attribut source est vide ou inexistant, alors on ira chercher les données désignées par l’attribut idref dans le fichier en cours.

Formats XML

Différentes structures XML utilisées

La structure XML peut correspondre à différents types :

Formats standards, intégrés à la transformation XSLT
Balisage HTML5 (XHTML avant le 4 novembre 2014).
Format RSS 2. Utilisé pour la publication de certaines informations, (cf infra).
Obsolète / deprecated balisage Docbook, désactivé le 2015-12-08
Obsolète / deprecated balisage WML / WAP (Wap, pour téléphones mobiles). Désactivé le 2015-12-08
Formats spécifiques
Définition des variables paramétrées.
Balises « système ». qui contiennent les données des pages web.
Liste de liens.
Galerie d’images. Ements qui entrainent, outre une page index, la création d’autant de pages html qu’il y a d’images définies.
Calendrier.
Obsolète : le Curriculum Vitae correspondait à un format et un traîtement spécifiques.
Fichier de description
Document externe utilisé pour fournir le sous-titre figurant sur le bandeau, en fonction du répertoire (et éventuellement du sous-répertoire).

Sur la méthode d’inclusion de fichiers, cf infra la section Utilisation de fichiers externes.

Flux RSS

Généralités

Des donées au format RSS peuvent être introduites dans les pages html.

Dans title, sous-élément de l’élément channel, on peut insérer un attribut @niv de 1 à 6 pour spécifier le niveau de titre (de h1 à h6).

Dans le résultat; il est possible d’afficher (mais pas imprimer) un sommaire en début de page html. Il est conditionné par un attribut sommaire dans la balise channel, qui doit alors être non vide.

Flux intégré au fichier XML

Exemple

Attention aux namespaces (xmlns)
<rss xmlns="http://blogs.law.harvard.edu/tech/rss"
        xmlns:dg="http://ns.dg77.net/XML/">
<channel>
  <title niv="4" class="">Titre du fil RSS</title>
  <link>URL page web</link>
  <description>Texte descriptif</description>
  <language>fr</language>

  <!-- Exemple d’article -->
  <item>
    <title>Titre</title>
    <guid isPermaLink="false">Référence</guid>
    <link>URL vers document </link>
    <description>Texte de l’article</description>
  </item>
 
</channel>
</rss>

Flux dans un fichier externe

La balise d:docu dans la partie description d’une page peut appeler un fichier xml au format rss2 au lieu du format standard.

Exemple
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss SYSTEM "../../../XML/XSL/listent.ent">
<rss version="2.0" xmlns="http://blogs.law.harvard.edu/tech/rss"
xmlns:dg="http://exe.dg77.net/XML/" xmlns:atom="http://www.w3.org/2005/Atom">
<d:description>
  <d:cre>2017-09-02</d:cre>
  <d:upd>2019-05-17</d:upd>
</d:description>
<atom:link href="http://twotwo.dog/ficx.xml" rel="self" 
  type="application/rss+xml" />
<channel sommaire="x">
 <title>Racewalking NEWS de la marche France 1925</title>
 <description>Resultats marche athletique France 1925</description>
 <link>http://exe.dg77.net/marche/news/newsf925.htm</link>
 <lastBuildDate>Fri, 17 May 2019 15:20:00 GMT</lastBuildDate>
 <language>fr</language>
…

</channel>
</rss>

Le fichier suivant :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss SYSTEM "../../../XSL/ent.ent">
<rss version="2.0" 
 xmlns="http://blogs.law.harvard.edu/tech/rss"
 xmlns:dg="http://exe.dg77.net/XML/" 
 xmlns:atom="http://www.w3.org/2005/Atom"
 xmlns:d="http://ns.dg77.net/XML/d/">
<d:description>
  <d:cre>2003-01-15</d:cre>
  <d:upd>2017-05-13</d:upd>
</d:description>
<channel sommaire="x">
  <title>Marche NEWS</title>
  <description>Hot racewalking News</description>
  <link>http://exe.dg77.net/marche/news.htm</link>
  <lastBuildDate>Wed, 17 May 2017 11:20:00 GMT</lastBuildDate>
  <language>fr</language>
<item>
  <guid isPermaLink="false">frarg-08914</guid>
<title><dg:span class="monosp">ARA</dg:span> 
   OYONNAX - 14/05/17</title>
   <description dg:format="pre">** 2000m | F
  1 12'55"47   PICOD Laura      Us Oyonnax             
  2 13'24"15   GHIDELLI Emma    Eab - S/l Athle
  3 14'15"79   JOUVE Lucie      Eab - S/l Athle
</description>
<link>http://bases.athle.com</link>
<pubDate>Wed, 17 May 2017 11:20:00 
    GMT</pubDate></item>

</channel>
</rss>

S’affichera ainsi :

On peut par ailleurs afficher une liste des titres de chaque item, le nombre de lignes affichables étant Paramétrable. Cf infra les Spécifications liste RSS.

Eléments et attributs

Obligatoire

 <d:www> 
Elément racine de chaque fichier XML.
 <d:page> 
Elément qui englobe les données de chaque page Web.
 <d:description> 
Contient les informations de base pour une page Web.
 <d:titre> 
Titre de la page Web (élément title de la partie head.

Facultatif

d:www/@dglang
Attribut commun à toutes les pages contenues dans le fichier XML. Il permet d’avoir un code langue différent du celui qui est paramétré pour tout le site. Exemple :
<?xml version="1.0" encoding="iso-8859-1"?>
<d:www xmlns="http://ns.dg77.net/XML/" xmlns:d="http://ns.dg77.net/XML/d/"
  dglang="en">
d:page/@dglang
Attribut propre à la page en cours qui permet d’avoir un code langue différent du celui qui est paramétré pour tout le site ou le fichier xml.
d:page/@e
Elément page/attribut e : enfilade ; si non vide, entraîne la création de liens précédent/suivant pointant vers la page précédente comme la suivante si celles-ci ont le même attribut. Facultatif.
d:page/@retour
Cet attribut indique la page de retour. Facultatif.
d:page/d:description/d:cre
Date de création.
d:page/d:description/d:upd
Date de dernière modification.
d:page/d:description/class
Facultatif : possibilité d’avoir une classe particulière pour le contenu principal de la page.
d:page/d:description/keywords
Mots clefs, utilisés dans la balise keywords de la partie head dans la page Web.
d:page/d:description/meta
Balises meta, utilisés dans les balise meta de la partie head dans la page Web.
d:page/d:description/link
Balises link, utilisés dans la balise link de la partie head dans la page Web.
d:page/d:description/d:style
Nom de la « feuille de style » CSS d’affichage propre à la page. Cette CSS se substitue à celle qui est spécifiée dans le fichier Config.xml (paramètre pcss_scr).
d:page/d:description/d:style_print
Nom de la « feuille de style » CSS d’impression propre à la page. Cette CSS se substitue à celle qui est spécifiée dans le fichier Config.xml (paramètre pcss_prt).
d:somm
Sommaire automatique : voir la section ad-hoc.
Pages RSS :  @sommaire  (balise item)
(10 sept 2013) Possibilité d’afficher le sommaire des item en tête de page.
 @typ 
Utilisé avec les éléments link dans les fichiers XML/RSS. L’attribut typ est utilisé pour identifier le type de fichier, de lien… exemple : typ="mail". Par défaut, le lien généré sera du type URL avec protocole http.
 @format 
Attribut utilisé dans les éléments description des fichiers XML/RSS. Si la valeur est « pre », alors les données seront sorties entre balises pre par la génération du html.

Utile

 <d:bidon> 
Elément factice, utilisé pour différents besoins :
  • Au début du fichier XML source, permet d’avoir un attribut @retour supplémentaire indiquant une page se trouvant dans un autre XML.
  • Comme élément racine d’un fichier XML inséré par la balise inclure.

Dans le corps de la page

 <d:corps> 
Délimitation de la partie "donnés" pour la distinguer de la partie description. Impératif pour les fichiers XML externes chargés par l’intermédiaire d’une balise <d:docu> ou <d:inclure> 1.
 <hl> 
(12 nov 2006) hl comme « hyper lien ». Utilisé à la place de la balise <a> (anchor), cet élément permet d’avoir automatiquement l’indication de l’URL intégral dans la version imprimée. Ne fonctionne que pour les URL complets avec protocole (exemple type : http: (http://www.domaine.tld/index.html)
Mise au point du 30 mai 2014 : désormais, le generateur sait aussi manipuler les liens internes (ex : ../../repert/toto.html) et reconstituer l’URL.
 <comment> 
Permet d’inclure des commentaires dans le document résultant. Fonctionne aussi dans l’entête (description), auquel cas les commentaires figureront en début de header quelle que soit leur place dans la partie description.
 <d:protoc/> 
(08 novembre 2019) Protocole (http, https…) défini en paramètre. La balise protoc fait référence à un simple template qui récupère la variable.
 <d:domaine/> 
(16 juillet 2011) Nom de domaine défini en paramètre. La balise domaine fait référence à un simple template qui récupère la variable.
 <d:ssdomaine/> 
(17 juillet 2011) Nom de sous-domaine défini en paramètre. Généralement www. La balise ssdomaine fait rérérence à un simple template qui récupère la variable. Remarque : le sous-domaine peut être nul.
 <d:homepage/> 
(28 septembre 2022) Nom de la page d’accueil défini en paramètre. Même fonctionnement que les précédents. Balise : homepage.
Exemple complet pour afficher l’URL de la page d’accueil du site :
<span> [<d:protoc/>://<d:ssdomaine/>.<d:domaine/>/<d:homepage/>]</span>

Feuilles de style (CSS), classes et id

CSS = Cascading Style Sheets

Fichiers CSS de base

Depuis le 11 mars 2020, trois fichiers CSS sont prévus. Ces CSS principales, obligatoires, sont définies dans Config.xml. Valeurs standard :

Vers le 2012-03-02, il y avait eu plusieurs évolutions (cf le Changelog).

CSS3 – compatibilité avec terminaux mobiles

La feuille de style fournie pour écrans permet une différenciation selon la largeur du terminal utilisé. Pour cela, on utilise la clause @media. Ce fut implémenté le 17 juin 2012.

Il est possible, pour chaque page html, de spécifier un fichier CSS particulier. Cf style dans les éléments facultatifs.

CSS facultatives.

Á ajouter dans l’entête du fichier xml pour chaque page concernée.

ecranvert.css
Pour les pages contenant notamment des « écrans verts » (terminaux 5250) IBM.
marche_calend.css
Pour affichage d’un calendrier avec couleurs de fond variées.

Classes et id

Attention : un id. ne peut apparaître qu’une fois dans une page.

Id. standards

Ces id sont générés automatiquement.

Id menutab

Une présentation particulière est affectée aux éléments div concernés. Ce cas ne peut se présenter qu’une seule fois dans une page. Exemple :

<div id="menutab">
  <div><div><a href="truc1/index.html">Page 1</a></div></div>
  <div><div><a href="truc2/index.html">Page 2</a></div></div>
</div>

Les liens sont dans deux balises DIV emboîtées car il est permis d’en mettre deux (ou plus) sur une ligne de menu.

Classes standard

Classes

.bouton
Cette classe est particulièrement destinée à des liens de navigation. Noter que le résultat est flottant (à gauche). Exemple avec <div class="bouton"><a href="#clstd">Clic!</a></div> :

Classes paramétrées, cf Config.xml
class_main
Classe par défaut, présentation standard sur écran.
pcss_gal
Présentation pour les galeries d’images.

URL, paramétrage, chaîne £dg77£

Buts et moyens

Pour des raisons évidentes, on ne veut pas que l’URL du site figure tel-quel dans les fichiers sources XML, et encore moins dans les transformations XSLT. En effet, l’URL peut évoluer (par exemple le passage du protocole http à https est un sujet non négligeable), et la moindre rigueur informatique impose que les modules .xsl soient réutilisables sans retouche pour tout autre site web que l’on souhaite.

Utilisation des variables paramétrées dans un texte

Il s’agit des données paramétrées (protoc / ssdomaine / domaine) dans le fichier Config.xml (cf supra). Exemple source xml :

<p>Voici un texte contenant la chaine : 
&lt;d:protoc/>://&lt;d:ssdomaine/>.&lt;d:domaine/> : 
<d:protoc/>://<d:ssdomaine/>.<d:domaine/>.</p>
Résultat :

Voici un texte contenant la chaine <d:protoc/>://<d:ssdomaine/>.<d:domaine/> : http://www.dg77.net.

Ce Procédé fonctionne au sein des balises <p>, <div>, <li>, <dt>, <dd>, <pre>, <td>, <a>, <span>, <figcaption> comme pour les titres <h1> à <h6>.

Chaîne spéciale £dg77£

Dans les attributs spécifiant un URL, c’est à dire les liens vers un autre document (attribut href ou URL, ou autre spécifique), ainsi que pour les images (attribut src) et les textes préformatés, si la transformation XSL rencontre l’expression £dg77£, celle-ci sera automatiquement remplacée par l’URL tel que défini dans le Config.xml précédemment décrit (variables protoc, ssdomaine, domaine). Cela permet de ne modifier aucun fichier source XML, par exemple en cas de changement de protocole ou domaine.

Nota : la chaîne £dg77£ doit être suivie de la barre oblique ("/") si elle précède une indication de chemin.

Utilisation dans une balise préformatée

Autorisé dans une balise <pre>, mais pas le texte des autres, spécifiées précédemment.

Utilisation pour une image

Avec £dg77£, la génération de l’attribut src qui contient l’adresse du fichier image inscrira l’URL comme un lien relatif, donc avec un chemin variable suivant l’emplacement de la page en cours. Cette fonctionnalité est utile dans un membre de fichier xml commun à différentes pages. Exemple pour une image incluse dans le bandeau d’entête :

<img src="£dg77£/design/images/bulhome.png" class="navg" alt="Logo"/>
Utilisation dans une balise d’entête
<d:page nomfic="trav/azerty.htm">
<d:description>
 <d:titre>Redirection azerty</d:titre>
 <meta http-equiv="Refresh" content="5; URL=£dg77£/travzone/azerty.htm"/>
 ...
</d:description>
<h1>Titre de la page</h1>

Charte de couleurs

Voir la page Historique des chartes de couleur [http://www.dg77.net/tekno/sitedoclr.htm].

Version du 12 janvier 2024

bgcolor color Fonction
e0e0e0 body .ctitre - galerie.css:contenu
e0e0e0338888.bando2
ffffff323232#main .contenu
a0a0a0ffffff#menubar
666666ffff00#menubar+a:hover
338888ffffff#menutab+a:hover
50505066ff66.demo (color pour lien)
909090 .demo sur petit écran
007878a:link
696969d0d0ffa:link GALERIE.css
d8d8ff Listes à fond alterné (.bgalt_a)
ffffff6060ff#ynavig/#znavig
808080ffffff#ynavig/#znavig/#ypied.bouton
b0b0b0 #ypied
303080ffffff.bout2
ff00ffffffff.bouton/.bout2+a:hover
c8c8c8000000.listing
Exemple

Images (dimensions, licence)

Auteur et licence

On peut ajouter un lien vers la licence de la même façon que pour les galeries (Voir la section sur les galeries d’images). Pour cela on utilise d:galaut, comme dans l’exemple ci-dessous. Ceci s’obtient avec l’attribut dglicence dans la balise figure ou figcaption. La mention de la licence sera ajoutée après l’indication de l’auteur.

Source XML :

<figure>
  <img src="histoire/photo.jpg" alt="" />
  <figcaption dglicence="/lic_exemple.htm"
    Le peintre A.G. Decamps (1803-1860)
    <d:galaut>Eug&egrave;ne Disd&eacute;ri</d:galaut>
  </figcaption>
</figure>

Résultat :

Le peintre A.G. Decamps (1803-1860) Auteur : Eugène Disdéri - Licence [http://www.dg77.net/tekno/lic_exemple.htm]

Nota : s’il s’agit d’un URL local, il doit être indiqué suivant une des méthodes suivantes :

Insertion des dimensions des images

Il est possible d’inscrire automatiquement dans les éléments <img> les attributs width (largeur) et height (hauteur) à partir de données enregistrées à part. Il suffira d’insérer des balises spécifiques à un endroit quelconque du fichier XML source. Exemple :

<d:dgdim>
 <d:dgima dgwid="400" dghei="293" dgsiz="43792" dgfor="JPEG">MD050/o50_2277.jpg</d:dgima>
 <d:dgima dgwid="150" dghei="132" dgsiz="8856" dgfor="JPEG">MD050/md50_17.jpg</d:dgima>
 <d:dgima dgwid="400" dghei="591" dgsiz="114617" dgfor="JPEG">MD050/d2278.jpg</d:dgima>
 <d:dgima dgwid="400" dghei="600" dgsiz="230390" dgfor="JPEG">MD050/d4730.jpg</d:dgima>
 <d:dgima dgwid="400" dghei="267" dgsiz="113974" dgfor="JPEG">MD050/d4731.jpg</d:dgima>
 <d:dgima dgwid="400" dghei="597" dgsiz="335953" dgfor="JPEG">MD050/d4733.jpg</d:dgima>
</d:dgdim>

dgdim est impératif. La valeur de l’élément dgima correspond à l’adresse donnée par l’attribut src d’une image. Les attributs dgwid (largeur) et dghei (hauteur) contiennent les dimensions en pixels de cette image.

Les attributs dgsiz et dgfor fournissent la taille (en octet) et le format.

Pour que le mécanisme s’applique à un élément img, il faut que celui-ci ne comporte ni attribut width ni attribut height. Cette règle s’applique même si ces derniers sont vides.

Quand les données sont dans un fichier externe (Cf fichiers inclus supra), les données xml (<dgdim>) concernées doivent être ajoutées à ce fichier.

Un traîtement a été conçu pour créer automatiquement ces éléments. Voir la documentation de cet outil dans la page ad-hoc [http://www.dg77.net/tekno/sitedoc_i.htm].

Spécifications « sommaire automatique »

Description

Un sommaire peut être généré automatiquement dans une page. Il consiste en une liste de liens, qui peuvent être de deux types :

Un sommaire peut contenir les deux types de liens.

Le sommaire est inclu dans une section qui porte l'id “sompag”.

Apparence

Trois présentations sont possibles :

  1. Liste en lignes superposées, avec coloration alternée du fond (comme pour les listes de liens et le sommaire facultatif des fichiers RSS).
  2. Présentation Menu, avec id="menutab" (cf in Classes et id).
  3. Liste courte, chaque titre est à la suite du précédent.

Déclencheur

Il s’obtient en insérant un élément d:somm à l’emplacement que l’on veut.

<d:somm niv="h4" dgstyp="" tit="x" />

Attributs :

Conditions de fonctionnement

Spécifications « note » (de bas de page)

Eléments et attributs

 <d:note> 
Le contenu est renvoyé en note de bas de page. Numérotage automatique. Du balisage peut être inclu dans le corps de la note.
d:note/@ref
Attribut facultatif : indique un id de retour. Permet de revenir plus haut que la ligne de l’appel de note.
d:note/@id
Attribut facultatif : indique l’id de la note. A défaut, ce sera un numéro. Permet de naviguer vers la note depuis n’importe-quel autre emplacement (y compris une autre page web) sans être à la merci d’un changement de numéro de note.

(Amélioration du 29 nov 2016) Au passage du curseur sur l’appel de note, une infobulle affiche le contenu de la note (dans la limite de 1600 caractères). Ceci est obtenu par ajout d’un attribut TITLE dans le module XSLT :

<xsl:attribute name="title"><xsl:value-of select="substring(current(),1,1600)"/></xsl:attribute>

Exemple

<p id="neef1">&laquo;&nbsp;&hellip;mais dans ces cas il me semble 
que le po&egrave;te a voulu plut&ocirc;t nous faire sentir son penchant 
in&eacute;vitable, quelque idiote qu&rsquo;elle soit, pour la jouissance des 
plaisirs sexuels.&nbsp;&raquo;<d:note ref="neef1" id="dneef">Theodore Lee Neef, 
La Satire Des Femmes Dans la Poesie Lyrique Francaise Du Moyen Age &ndash; 
Giard &amp; Bri&egrave;re, Paris 1900</d:note> &hellip;</p>

Noter que, pour une bonne typographie, l’élément <d:note> suit le caractère précédent sans espace entre eux.

Résultat
« …mais dans ces cas il me semble que le poète a voulu plutôt nous faire sentir son penchant inévitable, quelque idiote qu’elle soit, pour la jouissance des plaisirs sexuels. »2

Spécifications « liste de liens »

Nomenclature des éléments :

 <d:liens> 
Elément racine, obligatoire.
 @titre 
Attribut facultatif.
 @class 
Attribut facultatif. Noter qu’en cas d’utilisation de l’élément “categorie”, la classe "demo" est automatiquement appliquée à ce dernier.
 <d:categorie> 
Elément qui permet d’établir des subdivisions en sections (facultatif).
 @id 
Attribut facultatif. Contient un identificateur ; par défaut, pour “categorie”, un id alphabétique sera automatiquement généré.
 @niv 
Attribut qui spécifie le niveau du titre. Valeur : de 1 à 5 (pour h1 à h5). A défaut, utilisation de h4 (h5 pour les sous-titres). Implémenté (enfin) le 20 février 2011.
 <d:lien> 
Lien internet et texte. Contenu : deux possibilités :
  • Un libellé simple. Le balisage HTML y est autorisé, à l’exclusion de tout lien (<a href=…).
  • Utilisation d’une balise dt, suivie d’une ou plusieurs dd.
 @uri 
Attribut de la balise lien. Il contient l’URL ; exemple :  uri="http://www.w3.org" 

Exemple :

<d:liens titre="Exemples de signets" niv="5">

<d:categorie titre="Droit des gens et humanitaire" id="droit">
 <d:lien uri="http://www.aui-ong.org">Action d’Urgence Internationale, 
    interventions à la suite de catastrophes naturelles, prévention, formation, 
    reconstruction.
 </d:lien>
 <d:lien uri="http://www.amnesty.org" id="amnesty">Arrestations arbitraires, 
    tortures, exécutions : attention, ça n’arrive pas qu’aux autres.
 </d:lien>
</d:categorie>

<d:categorie  titre="Fédérations nationales et autres" id="federations">
 <d:lien uri="http://www.taf.org.tr"><span class="monosp">TUR</span> 
   – Türkiye Atletizm Federasyonu.
 </d:lien>
 <d:lien uri="http://www.uka.org.uk/" id="uka">
   <dt><span class="monosp">UKA</span> – United Kingdom Athletics.</dt>
   <dd><a href="https://www.thpwrf.info/resultslookup.aspx">
     <span class="monosp">UKA</span> – Results</a>
   </dd>
 </d:lien>
</d:categorie>

</d:liens>

Résultat :

Exemples de signets

Sommaire :

Spécifications « galerie d’image »

Principe

Le traîtement des éléments décrits ici aura deux effets :

  1. Index des images : dans le document en cours, création d’un index des images qu’on veut montrer. Le lien vers chaque image est donné avec une image réduite (icône).
  2. Pour chaque image, génération d’une page HTML.

Présentation de l’index :

Paramètres

Voir fichier Config.xml supra. On y indique une feuille de style CSS et une classe spécifiques.

L’icône porte obligatoirement le nom du fichier image précédé ou suivi par un préfixe ou suffixe défini dans Config.xml.

Exemple minimum d’une galerie composée de deux images

<d:galerie>
  <d:galimage>
    <d:galtit>titre 1</d:galtit>
    <d:galfic alt="texte libre">nom_de_fichier_1</d:galfic>
  </d:galimage>
  <d:galimage>
    <d:galtit>titre 2</d:galtit>
    <d:galfic>nom_de_fichier_2</d:galfic>
    <d:galupd></d:galupd>
  </d:galimage>
</d:galerie>

Nomenclature des éléments et leurs attributs

 <d:galerie>  élément racine.
Obligatoire.
Attributs facultatifs :
@dglicence
Chemin et nom du fichier html où est spécifiée la licence d’utilisation des images.
Remarques : le lien ne s’affiche que si un auteur est indiqué (balise galaut).
@sorhtml
Permet d’indiquer un emplacement particulier pour chaque image.
@dggalist
Si non vide, provoque la sortie de l’index sous forme « liste ».
@class
Classe du titre des pages images unitaires. Si @class existe mais est vide, il n’y a pas de classe spécifiée. Par défaut, ce sera la classe des sous-titres prévue dans Config.xml ($class_titr).
 <d:galimage>  informations d’une image.
Doit contenir au moins les éléments galtit (titre) et galfic (nom du fichier).
Peut contenir l’attribut dglicence si la licence propre à l’image est différente de celle qui est spécifiée dans la balise galerie.
 <d:galtit>  titre de l’image.
 <d:galfic>  nom du fichier image.
Si le nom est indiqué sans extension, cette dernière sera par défaut .jpg. La page qui affichera l’image aura le même nom sauf l’extension qui sera .htm. Le nom du fichier icône est le même mais précédé ou suivi d’un pré/suf-fixe, paramétré dans Config.xml (cf gal_prefix et gal_preftop). L’extension (.jpg ou autre) doit être la même que pour l’image principale.
Attributs facultatifs :
@alt
Attribut standard xhtml, contient un texte de remplacement à l’image.
L’extension de l’image comme de l’icône est ".jpg". Le fichier icône est précédé de "t_". La page image générée portera le même nom suivi de l’extension ".htm".
Exemple à partir d’une image nommée monimg.jpg, on devra avoir une image réduite (icône) nommée t_monimg.jpg et le système générera une page monimg.htm.
 <d:galupd> 
Date de dernière modification : élément vide obligatoire en pratique. Si cet élément est absent et qu’ultérieurement une image est ajoutée à la planche, alors on verra apparaître pour les images préexistantes la date de modification de cette planche, indication inexacte.
Informations facultatives associées aux images
 <d:galaut>  auteur.
 <d:galcop>  copyright.
 <d:galtxte>  et  <d:galtxtf>  texte qui est sorti avant (galtxte) ou après (galtxtf) l’image.
Les quatres éléments galaut, galcop, galtxte et galtxtf peuvent contenir des balises html.
 <galcre>  et  <galupd>  dates de création et de dernière modification de la page image. A défaut, c’est la date de la page index d’origine qui est utilisée.
Possibilité d’avoir des informations communes
Si on spécifie sous l’élément racine galerie un élément galcop, galaut, galtxte ou galtxtf, il sera reproduit dans chacune des pages images.
Un élément galcop ou galaut spécifié au niveau de l’image prend le pas sur le même élément au niveau supérieur comme indiqué précédemment.
Eléments généraux spécifiques à une page image
 <d:description> 
Il est possible d’insérer dans une page image les données standard de description et keywords destinées à son entête html (partie head). Pour cela elles doivent être insérées dans une balise description standard. Voir illustration ci-dessous (noter l’absence de namespace).

Exemple plus étoffé, toujours composé de deux images

Noter l’attribut alt qui sera copié automatiquement dans la balise img.

<d:galerie dglicence="../licgen.htm">
    <d:galaut>Nom de l’auteur affiché par defaut sous toutes les images</d:galaut>
    <d:galcop>Mentions de copyright reproduites sous toutes les images</d:galcop>
    <d:galtxte>Ce texte sortira sous le titre, en tête de chaque page image, ainsi que 
    sur la planche index.</d:galtxte>
    <d:galtxtf>Ce texte sortira en fin de chaque page image, 
    sous l’image, ainsi que sur la planche index.</d:galtxtf>
    <d:galcre>2005-01-01</d:galcre>
    <d:galupd>2006-07-31</d:galupd>

    <d:galimage>
        <d:galtit>titre 1</d:galtit>
        <d:galfic alt="XXXXXX" >nom_de_fichier_1</d:galfic>
        <d:galtxte>Ce texte sortira au dessus de l’image.</d:galtxte>
        <d:galtxtf>Ce texte sortira au dessous de l’image.</d:galtxtf>
        <d:galaut><b>Nom de l’auteur spécifique de cette image</b></d:galaut>
        <-- Il n’y aura pas de mention de copyright 
        sur la page de cette image :                                 -->
        <d:galcop>  </d:galcop<
        <d:description> <!-- sera reportee dans la balise META Description de l’entete -->
          <description>xxxxx texte descriptif particulier xxxxxxx</description>
          <keywords>Liste de mots clefs.</keywords>
        </d:description>
    </d:galimage>
    <d:galimage dglicence="../licdupont.htm">
        <d:galtit>titre 2</d:galtit>
        <d:galfic>nom_de_fichier_2</d:galfic>
        <d:galtxte>Ce texte sortira au dessus de l’image.</d:galtxte>
        <d:galtxtf>Ce texte sortira au dessous de l’image.</d:galtxtf>
        <-- Dates particulières de création et modification de 
        cette page image : -->
        <d:galcre>2006-07-14</d:galcre>
        <d:galupd>2006-07-31</d:galupd>
    </d:galimage>
</d:galerie>

Aide à la création de galerie

Un outil en langage REXX permet de mettre automatiquement les données dans leur balisage à partir d’un fichier simple texte. Voir la documentation [http://www.dg77.net/tekno/manuel/rexxgal.htm].

Spécifications index par icônes

Cette présentation reprend le mécanisme de création d’index des galeries d’images, comme spécifié ci-dessus. En revanche, aucune page n’est générée individuellement pour chaque image.

Particularités :

<d:som_ix>
  <d:galimage>
    <d:galtit>Pages TEKNO</d:galtit>
    <d:galfic>galerie/fourbis/FURB080977</d:galfic>
    <d:fichtm>tekno/index.html</d:fichtm>
  </d:galimage>
  <d:galimage>
    <d:galtit>Versailles, #10</d:galtit>
    <d:galfic>galerie/versailles/N090516_10</d:galfic>
  </d:galimage>
</d:som_ix>

Remarque : dans la seconde image, on a omis la balise fichtm. Dans ce cas, le fonctionnement reste celui de la galerie d’images : le lien sera défini en utilisant l’adresse de l’image.

Résultat
Pages TEKNO
Versailles, #10

Spécifications « calendrier »

Exemple

<d:calend titre="" niv="6">
<d:cal_sec titre="2022" id="d2022" class="">

<d:cal_eve title="All japan 1er jan 2022" class="cal_">
 <d:cal_dat>1 jan</d:cal_dat>
 <d:cal_loc>Tokyo, JPN</d:cal_loc>
 <d:cal_tit>LXX festival Nouvel An, LXXXIV ch. Tokyo</d:cal_tit>
 <d:cal_com>
   <a href="https://jaaf.or.jp" rel="nofollow">
    jaaf.or.jp
   </a>
 </d:cal_com>
 <d:cal_res href="news/2022/newswdiv22.htm#jpnme-13586" />
</d:cal_eve>

</d:cal_sec>
</d:calend>

Éléments

 <d:calend> 
Obligatoire, élément racine.
Attribut facultatif @titre
Attribut facultatif @niv
 <d:cal_sec>  section.
Pour subdivision éventuelle.
Attribut @titre
 <d:cal_eve> .
Libellé évènement.
 <d:cal_dat> 
Date de l’évènement.
 <cal_loc> 
Lieu de l’évènement.
 <d:cal_tit> 
Désignation de l’évènement.
 <d:cal_com> 
Commentaires/description de l’évènement.
 <d:cal_res> 
Facultatif. Destiné à indiquer un lien vers d’éventuels résultats.
Attribut obligatoire : @href lien

Résultat

2022
DateLieuNomOrganisation/referenceR
1 jan Tokyo, JPN LXX festival Nouvel An, LXXXIV ch. Tokyo jaaf.or.jp R

Spécifications « liste RSS »

Fonctionnalité

(28 aout 2012) But : afficher une liste des n premiers titres d’un fichier RSS. L’attribut ficrss indique le fichier en entrée  ; refhtml désigne le fichier html en sortie (dans le rss, on récupère l’attribut guid pour pointer exactement sur le bon item).

Sur l’utilisation de fichiers RSS, cf la section Flux RSS.

Limitation du nombre d’items affichés

(24 avr. 2015) Nouvel attribut : limitation du nombre d’items affichés (facultatif). Valeur par défaut : 32. Dans l’exemple ci-dessous, 10 items maximum seront sortis.

 <listrss ficrss="../xxxx/xxxxx.xml" refhtml="zzzz.htm" maxitem="10" /> 

Pointage direct depuis le sommaire

(2017-11-19) Amélioration concernant le sommaire : possibilité d’avoir le lien directement vers la page concernée au lieu de pointer vers le détail en dessous. Pour cela, nouvel attribut “direct” dans l’élément guid. Intéressant pour les indications du type « Autres informations ».

<item>
  <guid isPermaLink="false">direct</guid>
  <title>…

Bouton de retour arrière générique

Un fichier, dont le nom est indiqué dans Config.xml (paramètre pretour_js), donne la liste des pages concernées. La structure en est des plus simples. Élément racine : liste, le contenu est mis dans la balise item. Exemple :

<?xml version="1.0" encoding="utf-8"?>
<!-- Pages ayant le bouton de retour arrière par javascript -->
<liste xmlns="http://ns.dg77.net/XML/d/">
 <item>about.htm</item>
 <item>auteur.htm</item>
 <item>email.htm</item>
 <item>contact.htm</item>
 <item>signature.htm</item>
 <item>sitemap.htm</item>
 <item>archives/index.htm</item>
 <item>info.htm</item>
 <item>photo/tech/optique.htm</item>
</liste>

Voir le code à insérer dans les pages sous la section Programmation web.

Application systématique : avec un "x" dans une balise <item>, le bouton sera installé dans toutes les pages.

<?xml version="1.0" encoding="utf-8"?>
<!-- Pages ayant le bouton de retour arrière par javascript -->
<liste xmlns="http://ns.dg77.net/XML/d/">
 <item>x</item>
</liste>

Processeur XSLT, trace

Générateur et xsl:result-document

Processeurs utilisés :

Voir le site Web de Saxonica [https://www.saxonica.com/] . Attention : il faut aussi avoir xmlresolver-4.2.0.jar à côté du « .jar » de Saxon.

<xsl:stylesheet version="2.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:saxon="http://icl.com/saxon"
        extension-element-prefixes="saxon"
        exclude-result-prefixes="dg rss2 dbk saxon"
        …
>
…
…
<xsl:template name="outhtml">
            <xsl:variable name="znom"><xsl:value-of select="@nomfic"/></xsl:variable>
            <xsl:result-document href="{$znom}">
                <xsl:call-template name="outh"/>
            </xsl:result-document>
</xsl:template>

Traîtement par le processeur SAXON (versions 11 et 12)

Batch Windows

Exemple simple :

:: Parametres :
:: 1 : nom du fichier XML source lu en entrée.
:: 2 : nom de la page html a generer avec le chemin 
::     en format UNIX ("slash" - tel qu'il se trouve 
::     dans l'attribut nomfic).
::     Si "x", alors toutes les pages définies 
::     dans le xml source sont sorties.
:: 3 : option de mise en ligne ou toute autre, à 
::     la discrétion de l'utilisateur
:: %div% : destiné à un horodatage, mais en 
::     fait à la discrétion de l'utilisateur.
java -cp bin\xmlresolver-4.2.0.jar;bin\saxon.jar  ^
    net.sf.saxon.Transform ^
    -s:%1 -xsl:XML/XSL/dg8.xsl ^
    dateheure=%div% page=%2 fxml=%1 ^
    option=%3 fconfig=../../design/Config.xml ^
    | findstr /B ":" > tmp\log_html.txt

À noter :

Script Shell UNIX/LINUX

Exemple simple.

java -cp bin/xmlresolver-4.2.0.jar;bin\saxon.jar net.sf.saxon.Transform \
     -s:$RSRC/$1 -xsl:XML/XSL/dg8.xsl dateheure=$DATHEUR \
     page=$2 fxml=$RSRC/$1 option=$div \
     fconfig=$4 | grep ":" > $TMP/log_html.txt

Fichier trace et mise en ligne

Le programme java sort des informations dans un fichier annexe (“log”). Ces sorties sont prévues dans dg8_h.xsl (prologue) et dg8_out.xsl (indication du ou des pages html et document externe éventuel). Voir ci-dessus la sortie dirigée vers tmp\log_html.txt.

Ce log donne des informations telles que les noms de pages html et fichiers externes (balise d:docu). On peut utiliser ce fichier pour créer les commandes de transfert (ftp ou tout autre moyen) sur un serveur distant.

Les lignes de prologue général commencent par "::". Les principales indications sont identifiées par une lettre (h=horodatage ou autre, e=fichier lu en entrée, s=fichier html en sortie si un seul traîté, o=option). En détail (un seul ":"), les fichiers concernés sont ensuite mentionnés (p=page html, d=document externe, i=image, g=image de galerie, c=copy-of – données html inséréres par d:inclure).

Exemple pour la génération de la page “témoin” :

:: h : 09/04/2024-11:17:02,42
:: e : XML\SRC\demo.xml
:: s : demo/index.html
:: o : t
: p demo/index.html
: d XML/SRC/demo_temoin.xml
: i demo/disderi.jpg
: i demo/C24011436.jpg
: g demo/galerie/G80133.jpg
: g demo/galerie/t_G80133.jpg
: g demo/galerie/C23080213.jpg
: g demo/galerie/t_C23080213.jpg
: g demo/galerie/C23080214.jpg
: g demo/galerie/t_C23080214.jpg
: c XML/SRC/demo_sixcodes.xml#cic073
: p demo/galerie/G80133.htm
: p demo/galerie/C23080213.htm
: p demo/galerie/C23080214.htm

Noter l’indication du fichier source externe tekno_sitedoc.xml. Attention : le chemin est indiqué relativement au source xml.

Liste des modules XSLT

Génération standard des pages

listent.ent
DTD contenant des entités caractère.
dg8.xsl
  • Spécifie le type de sortie (html version 5, encodage utf-8).
  • Entrée des paramètres : horodatage, page à sortir ("x" = toutes).
  • Inclusion de dg8_3.xsl, et dg8_spec.xsl pour d’éventuelles spécificités (cf infra).
dg8_3.xsl
  • Initialise les variables générales à partir du fichier Config.xml.
  • Inclusion de tous les fichiers modules (dg8_h.xsl, dg8_head.xsl, dg_entete.xsl, dg_p.xsl, etc.) et spécifiques éventuels (via dg8_spec dans /XML/XSL_spec).
Fichiers Templates Commentaires
Match Name Call
dg8_h.xsl d:www, d:page, d:corps, d:inclure, d:protoc, d:domaine, d:ssdomaine, d:homepage, d:somm. sorsom, tattrib xchemin, outhtml, sornotes, sorsom, url_prt. Module principal. Envoie le template outhtml pour chaque page à créer. traîtement des attributs html (sauf href).
dg_out.xsl outhtml, loopimg, envpage, ref_icone, outh, sortcorps. tchemin, envpage, loopimg, extrnom, outh, xchemin, ref_icone, extrnom, thead, tentete, sortcorps, tpied, sornotes, gal_img. Initialise la sortie d'une page. Charge les variables VCH et ZNOM. Dans le cas d'une galerie d'images : loopimg, boucle pour générer chaque page image.
dg8_head.xsl thead, w_href, w_descr, w_keywr. tattrib, w_descr, w_keywr, w_href. Génère la partie HEAD (title, description, meta, link…).
dg_entete.xsl tentete, chain_lib, chain_menu, chain_tet. chain_lib, chain_menu, tnavig, tcont, w_href. Partie haute de l’affichage (barre de navigation, appelle le contenu de navig).
dg_p.xsl tpied, tmois, sordate. tnavig, tcont, tmois, sordate. Sortie du pied de page html. Fonctionne comme l’entête mais sort aussi les informations relatives à la page (dates de création-mise à jour, informations générales etc.).
dg77_navig.xsl tnavig, soretour, tprec, tsuiv. extrnom, tprec, tsuiv. Module appelé par tentete et pied : gère les liens de navigation en avant et en arrière.
dg_match.xsl dg:abbr, dg:action, dg:br, dg:button, dg:comment, dg:div, dg:dd, dg:dl, dg:dt, dg:form, dg:h1, dg:h2, dg:h3, dg:h4, dg:h5, dg:h6, dg:hr, dg:input, dg:li, dg:object, dg:ol, dg:p, dg:param, dg:pre, dg:script, dg:span, dg:textarea, dg:ul, dg:main, dg:figure, dg:figcaption, dg:header, dg:footer, dg:nav, dg:section, dg:article, dg:audio, dg:code, dg:source, dg:time, dg:blockquote, dg:cite, dg:q, dg:sup, dg:sub, dg:strong, dg:em, dg:mark, dg:video, dg:address, dg:del, dg:ins, dg:dfn, dg:kbd, dg:progress. wpref. tattrib, licence, wpref. Traîtement des balises html.
dg_contact.xsl tcont w_href Sortie des cases "contact" et "à propos de ce site".
dg_img.xsl dg:img. tattrib. Traîtement pour une image.
dg_table.xsl dg:table, dg:caption, dg:thead, dg:tbody, dg:tfoot, dg:tr, dg:th, dg:td. tattrib. Génération d’un tableau.
dg_lien.xsl dg:a. tattrib, w_href. Gestion des liens html.
dg_signets.xsl d:liens. titre, lienstit, litlien, sort_a, tsommaire. sort_a, titre, tsommaire, lienstit, litlien. Traîtement pour listes de liens.
dg_hl.xsl d:hl. url_prt. url_prt, compt_ch, sup_ret, xchemin, comptx, ote_ch, w_href. Template de traîtement de l’élément hl (sortie de l’URL complet dans la version imprimable).
dg_notes.xsl d:note. sornotes. tattrib. Notes de bas de pages.
dg_gal_index.xsl d:galerie, d:som_ix. soricone. extrnom, xchemin, soricone. Création de la page planche d’images.
dg_gal_img.xsl gal_img, licence. extrnom, licence, url_prt. Sortie des pages images individuelles.
dg_rss.xsl rss2:rss, rss2:channel, rss2:item, d:listrss. datrss, sorstring, sortitr, edtit, exlistrss, sorligtit. sortitr, sorstring, edtit, datrss, exlistrss, sorligtit, w_href. Sortie d’une page à partir d’un fichier RSS.
dg_tchemin.xsl tchemin, xchemin, extrnom, comptx, compt_ch, sup_ret, ote_ch. tchemin, xchemin, extrnom, comptx, compt_ch, sup_ret, ote_ch. Modules de traîtement des chemins d’accès.
dg_calend.xsl d:calend, d:cal_sec, d:cal_dat, d:cal_loc, d:cal_tit, d:cal_com. calendtit, cal_eve. calendtit, cal_eve, tattrib. Module spécifique “calendrier”.

Insertion de traîtements spécifique

Un répertoire XSL_spec est prévu à cette fin. Il contient obligatoirement le module dg8_spec.xsl.

Dans dg8_spec.xsl, ajouter une ligne pour chaque .xsl nouveau. Exemple : <xsl:include href="monmodule.xsl" />

Outils particuliers

Cf Memento XPATH + XSLT [http://www.dg77.net/tekno/xpath.htm] :

Procédure pour un nouveau fichier xml

  1. Ajouter une entrée dans root_index.xml
  2. Ajouter un fichier menu_[nom].xml si l’on en a spécifié un dans le root_index.xml (cf balise menu).
  3. Créer un .bat du type xgen_[nom].bat
  4. Ajouter l’entrée nouvelle dans xgen.bat

Programmation Web – côté serveur

Côté serveur

PHP

Du 1er juin 2005 au 4 février 2009, PHP fut utilisé pour la page Contact. Interruption en raison de la fin de l’hébergeur Club-Internet.

Programmation Web – côté client

Retour à l’affichage précédent

Cf spécifications supra. Code correspondant :

<div class="bouton">
  <a title="Retour/Back" onmouseover="self.status=document.referrer;return true" href="javascript:history.go(-1)">
    &lt;-
  </a>
</div>

Ce code est conforme mais inexploitable sans le support javascript (Unsuppported URL scheme pour le navigateur Lynx).

But : utiliser un lien tout en restant compatible avec un navigateur sans javascript, et conforme xhtml strict :

Balise ajoutée dans l’entête (partie « description » dans le source xml) :

<script src="../../script/jspop.js"></script>

Exemple (cliquer sur « Code pays ») :

Code correspondant :

<a href="../marche/rules/codespays.htm#deblist" onclick="popUp(this.href,'elastic',400,600);return false;" rel="external">Codes pays</a>

Suivre ce lien pour afficher le script, dans lequel la fonction “popUp” est définie.

TODO


Notes