Frises
pour introduire la durée Mise à jour mai 2024
Fil des révisions
  • mai 2024
    Mise à jour de la page avec le texte venant de la page Source
  • avril 2021
    Création de la page

Ces frises sont une création originale pour présenter un récit d'histoire familiale, qui raconte sans romancer, qui documente avec précision, qui se limite strictement à une même lignée.

La lignée, partagée pour tout ou partie avec le lecteur, c'est « ceux dont je suis issu », lignée dont je précise le sens en paraphrasant Lewis Carol, peu importe ce qu'ils ont fait du moment qu'ils ont fait ce que je suis aujourd'hui.

La frise dessine le temps sans imposer ni dates ni chronologie, elle fait la part belle au texte sans lequel il n'y a pas de récit, elle multiplie les parcours de lecture avec les blocs imbriqués qui se démasquent où se ferment.

Et enfin, qui encourage le thématique, cette frise est réalisée par sélection de lignes à l'intérieur des frises par familles. Une même ligne peut être utilisée plusieurs fois et dire des choses différentes en fonction du contexte.

La frise présente plusieurs complexité à traiter :

Syntaxe

<frisedesc titres="1700-2020" famille="Sommaire" pas="défaut à 100">
   <!-- titres, pour la plage à associer à la frise, vba signale si elle est trop courte -->
   <!-- famille, par celle de famille de niv0, est nécessaire pour pouvoir être inclus comme frise gigogne -->
   <!-- pas, pour avoir un autre pas que le siècle et chiffres romains -->
   <ligne>
      <nom plage="" geneanet="sommaire"></nom>
      <!-- nom, valeur du champ n dans l’url à destination de geneanet -->
      <nom plage="" couleur="épouse"></nom>
      <!-- couleur  [épou]se/[épou]x, [collat]éral, famille-menu, ou toute couleur admise par HTML -->
      <com>Texte à afficher en fin de ligne</com>
      <com title="texte en fin de ligne">texte dans le collapse</com>
      <!-- ok, cette syntaxe est vraiment du bricolage pour obtenir l’équivalent d’un tag collapse qui n’existait pas à l’époque-->
   </ligne>
   <ligne>
      <nom plage="1744-1871-" couleur="famille-menu" male="6" inclure-xpath="/liste/frisedesc[@famille=’Prat’]/descendant-or-self::ligne" inclure-nom="Prat"></nom>
      <nom plage="1744-1871-" couleur="ascendants" inclure-xpath="/liste/frisedesc[@famille=’Auriol Langautier’ and @villefranche]/descendant-or-self::ligne[@occupation=’marchand de pastel’ or @drappier]" inclure-nom="Guillou"></nom>
      <!-- dans la frise avec un tag famille = Auriol Langautier, toutes les lignes avec un attribut occupation = marchand de pastel -->
      <!-- male pour afficher les icones de personnes pour donner un nombre de garçons comme dans marchand drappier -->
   </ligne>
</frisedesc>

Liste des frises

Afin de permettre la création de listes gigognes, le VBA maintient dans ses variables la liste des frises qu’il a vu passer. Lors de chaque création de liste, il vérifie que la liste qu’il traite existe bien dans la liste et il peut aussi supprimer celles qu’il ne peut plus accéder.

Cette gestion de cache et fiable et ne pose pas de problèmes particuliers.

Avant de traiter une liste gigogne, le VBA constitue une structure XML avec les contenus de toutes les frises identifiées dans le tag frises. Il peut ensuite faire la sélection en exécutant le code XPATH obtenu dans l’attribut include-xpath.


<frises>
   <frise ref="Rouis\Accueil\F0_180814-2220_02.html"></frise>
   <frise ref="Paloque\Accueil\E11a_IntroNull_00.html"></frise>
   <frise ref="Demarest\Accueil\FMt_180923-1745_02.html"></frise>
</frises>

Exemple

La frise Cabanat a été simplifiée dans le cadre de cet exemple.

xviiie
xixe
xxe
Valentin
Marie Coderch
Carrière aux Haras nationaux où il fut apprécié et terminera brigadier de dépôts d’étalons.
Coderch – Branche Marie
Joseph Coderch
Thérèse Delclos
François Coderch
Juste Combes
Pareur à Prats-de-Mollo
Joseph Coderch
Magdeleine Dunyach
Propriétaire - Fabricants de draps
Rose Coderch
Prosp. Louis Tailleur
Jeune sœur de François et tante de Marie pour expliquer le double lien entre Tailleur et Coderch.
François Coderch
Thérèse Boixeda
Fabricant de draps à Prats-de-Mollo, son épouse Thérèse, propriétaire à l'état civil, obtiendra en 1860 la séparation de bien avec son mari.
Raymond et Juste
 Les Coderch de Prats

Directeur d'école normale puis professeur au Lycée de Montpellier

François
 Cousin de Prosper

Dentiste, refusé pour raisons de santé pour servir dans la zone du front, il s'engagera comme infirmier. Il sera finalement affecté comme dentiste mais à Perpignan.

Joseph et Louise
 Les Coderch d'Onzain

Joseph commence une carrière dans l'armée en 1868. Par la suite, l'école des sous-officiers d'infanterie lui permettra d'être nommé sous-lieutenant en 1880 puis capitaine en 1891. Légion d'honneur en 1890.
Installés à Onzain à côté de Blois, le ménage sera très accueillant avec Prosper pendant tout le conflit. Après Jean, ils ont eu deux filles, Marie-Louise et Madeleine.

Jean
 Cousin de Prosper

Officier (capitaine) lui aussi, sera fait prisonnier en août 1915 et terminera la guerre en Allemagne où il sera détenu dans des conditions difficiles en raison des privations de nourriture. Sa santé en restera altérée.

Marie Coderch
Valentin Cabanat
Tout ce que nous savons d'elle se résume à une photo et à l'affection que Prosper lui portait. Elle terminera ses jours dans la maison Tailleur du ménage de sa fille Thérèse et de François Tailleur.
Valentin et Elise
 Cousin de Prosper

Officier artilleur, servira comme aérostier (3 citations et Légion d’Honneur en 1922), démobilisé, deviendra professeur d’agriculture, à Semur en Côte d’Or puis en 1930 à Castres.

Roger et Simone
 Font-Romeu

Ingénieur à la SNCF, ils feront construire un chalet à Font-Romeu et cousineront avec Lilette et Bernard.

Code source XML

<frisedesc titres="1700-2020" famille="Cabanat">
   <ligne>
      <nom plage="1834-1910" couleur="Tailleur">Valentin</nom>
      <nom plage="1720-1840-" couleur="ascendants" geneanet="cabanat" inclure-xpath="/liste/frisedesc[@famille=’Coderch-1’]/descendant-or-self::ligne" inclure-nom="Coderch – Branche Marie"><a id="x966" href="../Coderch/Accueil.htm" class="internal">Coderch</a></nom>
      <nom plage="-1926" couleur="épouse">Marie Coderch</nom>
      <com>Carrière aux Haras nationaux où il fut apprécié et terminera <a href="https://gallica.bnf.fr/ark:/12148/bpt6k62670705/f3.item.r=cabanat" target="_blank" class="library">brigadier</a> de <a href="https://gallica.bnf.fr/ark:/12148/bpt6k64542919/f13.item.r=cabanat" target="_blank" class="library">dépôts d’étalons</a>.</com>
   </ligne>
   <ligne>
      <nom plage="1891-1950" couleur="collatéral"><a id="x1EFB" href="ValentinNeveu.htm" class="internal">Valentin</a> et Elise</nom>
      <com title="Cousin de Prosper">Officier artilleur, servira comme aérostier (3 citations et Légion d’Honneur en 1922), démobilisé, deviendra professeur d’agriculture, à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k6448082m/f27.item" target="_blank" class="library">Semur </a> en Côte d’Or puis en 1930 à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k65423732/f4.item" target="_blank" class="library">Castres</a>.</com>
      <nom plage="1921-1970" couleur="collatéral">Roger et Simone</nom>
      <com title="Font-Romeu">Ingénieur à la SNCF, ils feront construire un chalet à Font-Romeu et <em>cousineront</em> avec Lilette et Bernard.</com>
   </ligne>
</frisedesc>

XML intermédiaire produit par VBA

<xdoc file="Sommaire\XMLdocuments\Y0h_220306-1353_4" img="null;" key="row-class:blog;">
   <fixed>
      <frisedesc titres="1700-2020" famille="Sommaire">
         <siecles>
            <siecle class="siecle" style="width:31.25%;"><span class="romain">xviii</span><sup>e</sup></siecle>
            <siecle class="siecle" style="width:31.25%;"><span class="romain">xix</span><sup>e</sup></siecle>
            <siecle class="siecle" style="width:31.25%;"><span class="romain">xx</span><sup>e</sup></siecle>
            <siecle class="siecle" style="width:6.25%;">…</siecle>
         </siecles>
         <ligne>
            <nom plage="1834-1910" couleur="Tailleur" type="nom" title="Valentin : 1834 - 1910 (76 ans)" style="background-color: #99ccff;  width:23.75%; margin-left: 41.875%;" class="nom nextline text-on-right">Valentin</nom>
            <nom plage="1720-1840-" geneanet="cabanat" inclure-xpath="/liste/frisedesc[@famille=’Coderch-1’]/descendant-or-self::ligne" inclure-nom="Coderch – Branche Marie" data-target="Y0h_220306-1353_4_1" aria-expanded="true" couleur="ascendants" type="nom" title="Coderch : 1720 - 1840 -  (120 ans)" style="background-color: seashell;  width:37.5%; margin-left: 6.25%;" class="nom nextline ascendants"><a id="x966" href="../Coderch/Accueil.htm" class="internal">Coderch</a></nom>
            <nom plage="-1926" couleur="épouse" type="nom" title="Marie Coderch : 1841 - 1926 (85 ans)" style="background-color: cornsilk;  width:26.562%;" class="nom text-on-right">Marie Coderch</nom>
            <com>Carrière aux Haras nationaux où il fut apprécié et terminera <a href="https://gallica.bnf.fr/ark:/12148/bpt6k62670705/f3.item.r=cabanat" target="_blank" class="library">brigadier</a> de <a href="https://gallica.bnf.fr/ark:/12148/bpt6k64542919/f13.item.r=cabanat" target="_blank" class="library">dépôts d’étalons</a>.</com>
            <collapse famille="Coderch-1" type="collapse" id="Y0h_220306-1353_4_1" style=" margin-left: 7%;">
               <!-- Coderch – Branche Marie enlevé pour simplifier la lecture -->
            </collapse>
         </ligne>
         <ligne>
            <nom plage="1891-1950" couleur="collatéral" type="nom" title="Valentin et Elise : 1891 - 1950 (59 ans)" style="background-color: lightgray;  width:18.438%; margin-left: 59.688%;" class="nom nextline text-on-right"><a id="x1EFB" href="ValentinNeveu.htm" class="internal">Valentin</a> et Elise</nom>
            <com title="Cousin de Prosper" type="collapsedCom" style="margin-left: 59.688%;" id="collapse_5">Officier artilleur, servira comme aérostier (3 citations et Légion d’Honneur en 1922), démobilisé, deviendra professeur d’agriculture, à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k6448082m/f27.item" target="_blank" class="library">Semur </a> en Côte d’Or puis en 1930 à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k65423732/f4.item" target="_blank" class="library">Castres</a>.</com>
            <nom plage="1921-1970" couleur="collatéral" type="nom" title="Roger et Simone : 1921 - 1970 (49 ans)" style="background-color: lightgray;  width:15.312%; margin-left: 69.062%;" class="nom nextline text-on-right">Roger et Simone</nom>
            <com title="Font-Romeu" type="collapsedCom" style="margin-left: 69.062%;" id="collapse_6">Ingénieur à la SNCF, ils feront construire un chalet à Font-Romeu et <em>cousineront</em> avec Lilette et Bernard.</com>
         </ligne>
      </frisedesc>
   </fixed>
   <float></float>
</xdoc>

Code XSLT de transformation

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="//frisedesc">
      <div class="frise">
         <xsl:text>
         </xsl:text>
         <div class="siecles lead">
            <xsl:for-each select="siecles/siecle">
               <div>
                  <xsl:attribute name="class">
                     <xsl:value-of select="@class"/>
                  </xsl:attribute>
                  <xsl:attribute name="style">
                     <xsl:value-of select="@style"/>
                  </xsl:attribute>
                  <xsl:copy-of select="node()"/>
               </div>
            </xsl:for-each>
         </div>
         <xsl:text>
         </xsl:text>
         <xsl:call-template name="lignes"/>
      </div><xsl:text>
      </xsl:text>
   </xsl:template>
   <!-- ______________________________________________________________ligne_________________________________ -->
   <xsl:template name="lignes">
      <xsl:for-each select="ligne">
         <div class="ligne">
            <xsl:if test="@class">
               <xsl:attribute name="class">
                  <xsl:text>ligne</xsl:text><xsl:value-of select="@class"/>
               </xsl:attribute>
            </xsl:if>
            <xsl:for-each select="*">
               <xsl:choose>
                  <xsl:when test="@type=’nom’">
                     <xsl:call-template name="nom"/>
                  </xsl:when>
                  <xsl:when test="@type=’collapse’">
                     <xsl:call-template name="collapse"/>
                  </xsl:when>
                  <xsl:when test="@type=’collapsedCom’">
                     <xsl:call-template name="collapsedCom"/>
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:copy-of select="node()"/>
                  </xsl:otherwise>
               </xsl:choose>
            </xsl:for-each>
         </div><xsl:text>
         </xsl:text>
         <div class="clearfix"></div><xsl:text>
         </xsl:text>
      </xsl:for-each>
   </xsl:template>
   <!-- __________________________________________________________________nom_____________________________ -->
   <xsl:template name="nom">
      <xsl:variable name="aglyphicon">
         <xsl:if test="@glyphicon">
            <i class="material-icons" style="font-size:12px;">
               <xsl:choose>
                  <xsl:when test="@glyphicon=’lock’">
                     <xsl:text>lock_outline</xsl:text>
                  </xsl:when>
                  <xsl:when test="@glyphicon=’pencil’">
                     <xsl:text>create</xsl:text>
                  </xsl:when>
                  <xsl:when test="@glyphicon=’wrench’">
                     <xsl:text>build</xsl:text>
                  </xsl:when>
                  <xsl:otherwise>
                     <xsl:text>build</xsl:text>
                  </xsl:otherwise>
               </xsl:choose>
            </i>
         </xsl:if>
      </xsl:variable>
      <div class="nom">
         <xsl:attribute name="class">
            <xsl:value-of select="@class"/>
         </xsl:attribute>
         <xsl:attribute name="style">
            <xsl:value-of select="@style"/>
         </xsl:attribute>
         <xsl:attribute name="title">
            <xsl:value-of select="@title"/>
         </xsl:attribute>
         <xsl:if test="@data-target">
            <xsl:text> </xsl:text>
            <a href="#" type="button" data-bs-toggle="collapse" aria-expanded="false">
               <!-- le href pour forcer le style lien de bootstrap -->
               <xsl:attribute name="title">
                  <xsl:value-of select="@titre-inclure"/>
               </xsl:attribute>
               <xsl:attribute name="data-bs-target">
                  <xsl:value-of select="concat(’#’,@data-target)"/>
               </xsl:attribute>
               <xsl:attribute name="aria-controls">
                  <xsl:value-of select="@data-target"/>
               </xsl:attribute>
               <i class="material-icons mi-unfold-more">unfold_more</i>
            </a>
            <xsl:text>
            </xsl:text>
         </xsl:if>
         <xsl:if test="@geneanet">
            <xsl:variable name="gnom" select="@geneanet"/>
            <xsl:text>
            </xsl:text>
            <a class="tree" href="https://gw.geneanet.org/langau_w?lang=fr&m=S&n={$gnom}&p=" title="Arbre de la famille {$gnom}" target="_blank"></a>
            <xsl:text>
            </xsl:text>
         </xsl:if>
         <xsl:if test="@male">
            <xsl:variable name="male" select="@male"/>
            <span class="pr-2">
               <xsl:call-template name="repeat">
                  <xsl:with-param name="count" select="$male"/>
               </xsl:call-template>
            </span>
         </xsl:if>
         <xsl:copy-of select="node()"/><xsl:text>
         </xsl:text>
      </div><xsl:text>
      </xsl:text>
   </xsl:template>
   <xsl:template name="repeat">
      <!-- pour ajouter l’icone male autant de fois que demandé en mode récursif -->
      <xsl:param name="count" select="0"/>
      <xsl:if test="$count">
         <span class="mdi mdi-human-male"></span>
         <xsl:call-template name="repeat">
            <xsl:with-param name="count" select="$count - 1"/>
         </xsl:call-template>
      </xsl:if>
   </xsl:template>
   <!-- ____________________________________________________________________collapse___________________________ -->
   <xsl:template name="collapse">
      <xsl:variable name="sty" select="@style"/>
      <xsl:text>
      </xsl:text>
      <div class="collapse colored">
         <xsl:attribute name="id">
            <xsl:value-of select="@id"/>
         </xsl:attribute>
         <xsl:text>
         </xsl:text>
         <xsl:call-template name="lignes"/>
      </div>
      <xsl:text>
      </xsl:text>
   </xsl:template>
   <xsl:template name="collapsedCom">
      <xsl:attribute name="title">
         <xsl:value-of select="@title"/>
      </xsl:attribute>
      <xsl:text> </xsl:text>
      <xsl:value-of select="@title"/>
      <a data-bs-toggle="collapse" role="button" aria-expanded="false">
         <xsl:attribute name="href">
            <xsl:value-of select="concat(’#’,@id)"/>
         </xsl:attribute>
         <xsl:attribute name="aria-controls">
            <xsl:value-of select="@id"/>
         </xsl:attribute>
         <i class="material-icons mi-unfold-more">read_more</i>
      </a>
      <xsl:text>
      </xsl:text>
      <div class="clearfix"></div>
      <div class="collapse carte card-body mt-2 mb-2">
         <xsl:attribute name="id">
            <xsl:value-of select="@id"/>
         </xsl:attribute>
         <xsl:attribute name="style">
            <xsl:value-of select="@style"/>
         </xsl:attribute>
         <xsl:copy-of select="node()"/>
      </div>
      <xsl:text>
      </xsl:text>
   </xsl:template>
</xsl:stylesheet>

Code HTML final

<div class="frise">
   <div class="siecles lead"><div class="siecle" style="width:31.25%;"><span class="romain">xviii</span><sup>e</sup></div><div class="siecle" style="width:31.25%;"><span class="romain">xix</span><sup>e</sup></div><div class="siecle" style="width:31.25%;"><span class="romain">xx</span><sup>e</sup></div><div class="siecle" style="width:6.25%;">…</div></div>
   <div class="ligne">
      <div class="nom nextline text-on-right" style="background-color: #99ccff;  width:23.75%; margin-left: 41.875%;" title="Valentin : 1834 - 1910 (76 ans)">Valentin</div>
      <div class="nom nextline ascendants" style="background-color: seashell;  width:37.5%; margin-left: 6.25%;" title="Coderch : 1720 - 1840 -  (120 ans)">
         <a href="#" type="button" data-bs-toggle="collapse" aria-expanded="false" title="" data-bs-target="#Y0h_220306-1353_4_1" aria-controls="Y0h_220306-1353_4_1"><i class="material-icons mi-unfold-more">unfold_more</i></a>
         <a class="tree" href="https://gw.geneanet.org/langau_w?lang=fr&m=S&n=cabanat&p=" title="Arbre de la famille cabanat" target="_blank"></a>
         <a id="x966" href="../Coderch/Accueil.htm" class="internal">Coderch</a>
      </div>
      <div class="nom text-on-right" style="background-color: cornsilk;  width:26.562%;" title="Marie Coderch : 1841 - 1926 (85 ans)">Marie Coderch</div>
      Carrière aux Haras nationaux où il fut apprécié et terminera <a href="https://gallica.bnf.fr/ark:/12148/bpt6k62670705/f3.item.r=cabanat" target="_blank" class="library">brigadier</a> de <a href="https://gallica.bnf.fr/ark:/12148/bpt6k64542919/f13.item.r=cabanat" target="_blank" class="library">dépôts d’étalons</a>.
   </div>
   <!-- Coderch - Branche Marie enlevé pour simplifier la lecture -->
   <div class="clearfix"></div>
   <div class="ligne"><div class="nom nextline text-on-right" style="background-color: lightgray;  width:18.438%; margin-left: 59.688%;" title="Valentin et Elise : 1891 - 1950 (59 ans)"><a id="x1EFB" href="ValentinNeveu.htm" class="internal">Valentin</a> et Elise</div>
   Cousin de Prosper<a data-bs-toggle="collapse" role="button" aria-expanded="false" href="#collapse_5" aria-controls="collapse_5"><i class="material-icons mi-unfold-more">read_more</i></a>
      <div class="clearfix"></div><div class="collapse carte card-body mt-2 mb-2" id="collapse_5" style="margin-left: 59.688%;">Officier artilleur, servira comme aérostier (3 citations et Légion d’Honneur en 1922), démobilisé, deviendra professeur d’agriculture, à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k6448082m/f27.item" target="_blank" class="library">Semur </a> en Côte d’Or puis en 1930 à <a href="https://gallica.bnf.fr/ark:/12148/bpt6k65423732/f4.item" target="_blank" class="library">Castres</a>.</div>
      <div class="nom nextline text-on-right" style="background-color: lightgray;  width:15.312%; margin-left: 69.062%;" title="Roger et Simone : 1921 - 1970 (49 ans)">Roger et Simone</div>
      Font-Romeu<a data-bs-toggle="collapse" role="button" aria-expanded="false" href="#collapse_6" aria-controls="collapse_6"><i class="material-icons mi-unfold-more">read_more</i></a>
      <div class="clearfix"></div><div class="collapse carte card-body mt-2 mb-2" id="collapse_6" style="margin-left: 69.062%;">Ingénieur à la SNCF, ils feront construire un chalet à Font-Romeu et <em>cousineront</em> avec Lilette et Bernard.</div>
   </div>
   <div class="clearfix"></div>
</div>