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 :
la création de la ligne de titres avec les siècles en chiffres romains
le calcul des pourcentages pour la longueur des barres
les emboitements gigogne (ici pour ouvrir la famille Coderch) qui est réalisé en allant chercher le code de la frise Coderch.
le choix de la couleur pour la barre
<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>
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>
La frise Cabanat a été simplifiée dans le cadre de cet exemple.
Directeur d'école normale puis professeur au Lycée de Montpellier
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 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.
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.
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.
Ingénieur à la SNCF, ils feront construire un chalet à Font-Romeu et cousineront avec Lilette et Bernard.
<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>
<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>
<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>
<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>