You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

504 lines
21 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<!-- param pour l'id de l'acte -->
<xsl:param name="numero"/>
<!-- STRUCTURATION GLOBALE -->
<xsl:template match="/" >
<!-- bloc du paratexte et du texte
<xsl:apply-templates select="//sourceDesc/listWit"/>-->
<xsl:apply-templates select="//text/body/div"/>
<!-- bloc des notes -->
<div>
<!-- notes critiques -->
<div class="note-global">
<xsl:apply-templates select="//note[@type='bp']/p"/>
</div>
</div>
<!-- notes paléographiques -->
<div class="footnote">
<ol>
<xsl:apply-templates select="//text/body/div//note[@type='paleo']/p"/>
</ol>
</div>
</xsl:template>
<!-- RÈGLES GLOBALES DE MISE EN FORME -->
<xsl:template match="hi[@rend='sup']">
<!-- exposant -->
<xsl:element name="sup">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="hi[@rend='i']">
<!-- italique -->
<xsl:element name="em">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="hi[@rend='smallcaps']">
<!-- petites majuscules -->
<xsl:element name="mark">
<xsl:attribute name="style">
<xsl:text>font-variant: small-caps; background-color: inherit;</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="ref">
<!-- liens -->
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="@target"/>
</xsl:attribute>
<xsl:attribute name="target">
<xsl:text>_blank</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="head">
<!-- titre des actes -->
<xsl:element name="p">
<xsl:attribute name="class">
<xsl:text>text_etabli</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="biblStruct">
<!-- référence bibliographique structurée -->
<xsl:if test="parent::witness/@n='a'">
<!-- si c'est l'édition a. -->
<xsl:value-of select="parent::witness/@n"/>
<xsl:text>. </xsl:text>
</xsl:if>
<xsl:if test="parent::witness/@n='b'">
<!-- si c'est l'édition b. -->
<xsl:value-of select="parent::witness/@n"/>
<xsl:text>. </xsl:text>
</xsl:if>
<xsl:for-each select=".//author/persName">
<!-- identité du ou des auteurs -->
<xsl:if test="./addName">
<xsl:apply-templates select="./addName"/>
<xsl:text> </xsl:text>
</xsl:if>
<xsl:apply-templates select="./forename"/>
<xsl:if test="./surname">
<xsl:text> </xsl:text>
<xsl:apply-templates select="./surname"/>
</xsl:if>
<xsl:text>, </xsl:text>
</xsl:for-each>
<xsl:choose>
<!-- titre -->
<xsl:when test=".//monogr/title[@level='a']">
<!-- 1/ s'il s'agit d'un article -->
<xsl:text>&#171; </xsl:text>
<!-- titre de l'article entre guillemets français -->
<xsl:apply-templates select=".//monogr/title[@level='a']"/>
<xsl:text> &#187;, dans </xsl:text>
<!-- titre de la revue en italique -->
<xsl:element name="em">
<xsl:apply-templates select=".//monogr/title[@level='j']"/>
</xsl:element>
<xsl:if test=".//biblScope[@unit='part']">
<!-- si la revue est organisée en séries (@part) -->
<xsl:text>, </xsl:text>
<xsl:value-of select=".//biblScope[@unit='part']/@n"/>
</xsl:if>
<!-- s'il y a un numéro de la revue -->
<xsl:if test=".//biblScope[@unit='issue']">
<xsl:text>, n°</xsl:text>
<xsl:choose>
<!-- il s'agit d'un numéro unique -->
<xsl:when test=".//biblScope[@unit='issue']/@n">
<xsl:value-of select=".//biblScope[@unit='issue']/@n"/>
</xsl:when>
<xsl:otherwise>
<!-- le numéro n'est pas unique -->
<xsl:value-of select=".//biblScope[@unit='issue']/@from"/>
<xsl:text>-</xsl:text>
<xsl:value-of select=".//biblScope[@unit='issue']/@to"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<!-- 2/ il ne s'agit pas d'un article : c'est un titre de monographie -->
<xsl:element name="em">
<xsl:apply-templates select=".//monogr/title[@level='m']"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
<xsl:text>, </xsl:text>
<xsl:if test=".//imprint/biblScope[@unit='volume']">
<xsl:value-of select=".//imprint/biblScope[@unit='volume']/@n"/>
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test=".//respStmt/persName">
<!-- éditeur -->
<xsl:for-each select=".//respStmt/persName">
<xsl:apply-templates select="./forename"/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="./surname"/>
<xsl:if test="position()!= last()">, </xsl:if>
</xsl:for-each>
<xsl:text> (</xsl:text>
<xsl:apply-templates select=".//imprint/respStmt/resp"/>
<xsl:text>), </xsl:text>
</xsl:if>
<xsl:if test=".//pubPlace">
<!-- lieu de publication -->
<xsl:apply-templates select=".//pubPlace"/>
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test=".//publisher">
<!-- éditeur -->
<xsl:apply-templates select=".//publisher"/>
<xsl:text>, </xsl:text>
</xsl:if>
<!-- date -->
<xsl:value-of select=".//date/@when"/>
<xsl:text>, </xsl:text>
<xsl:if test=".//biblScope[@unit='page']">
<!-- pagination -->
<xsl:choose>
<xsl:when test=".//biblScope[@unit='page']/@n">
<!-- il y a une page -->
<xsl:text>p. </xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@n"/>
</xsl:when>
<xsl:otherwise>
<!-- il y a plusieurs pages -->
<xsl:text>pp. </xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@from"/>
<xsl:text>-</xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@to"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test=".//biblScope[@unit='entry']">
<!-- la localisation dans la page est précisée (numéro d'index, preuve, appendice et al.) -->
<xsl:text> , n°</xsl:text>
<xsl:value-of select=".//biblScope[@unit='entry']/@n"/>
<xsl:if test="./text()">
<xsl:text> </xsl:text>
<xsl:apply-templates select=".//biblScope[@unit='entry']"/>
</xsl:if>
</xsl:if>
<xsl:if test=".//ref">
<!-- il y a un lien vers une numérisation ou autre -->
<xsl:text> </xsl:text>
<xsl:apply-templates select=".//ref"/>
</xsl:if>
<xsl:if test="parent::witness">
<xsl:text>.</xsl:text>
</xsl:if>
</xsl:template>
<xsl:template match="bibl">
<!-- référence bibliographique non structurée -->
<xsl:element name="em">
<!-- titre -->
<xsl:value-of select="./title"/>
</xsl:element>
<xsl:if test="./biblScope[@unit='volume']">
<!-- numéro du volume s'il existe -->
<xsl:text>, </xsl:text>
<xsl:value-of select="./biblScope[@unit='volume']/@n"/>
</xsl:if>
<xsl:if test="./biblScope[@unit='page']">
<!-- pagination si elle précisée -->
<xsl:choose>
<!-- une page -->
<xsl:when test=".//biblScope[@unit='page']/@n">
<xsl:text>, p. </xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@n"/>
</xsl:when>
<xsl:otherwise>
<!-- plusieurs pages -->
<xsl:text>, pp. </xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@from"/>
<xsl:text>-</xsl:text>
<xsl:value-of select=".//biblScope[@unit='page']/@to"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="./biblScope[@unit='entry']">
<xsl:text>, n°</xsl:text>
<xsl:value-of select="./biblScope[@unit='entry']/@n"/>
</xsl:if>
<xsl:if test="parent::witness">
<xsl:text>.</xsl:text>
</xsl:if>
</xsl:template>
<!-- DATATION -->
<xsl:template match="docDate">
<xsl:element name="h1">
<xsl:attribute name="class">
<xsl:text>text-center</xsl:text>
</xsl:attribute>
<xsl:choose>
<!-- dateq de temps et de lieu -->
<xsl:when test="not(contains(placeName,'NS'))">
<xsl:apply-templates select="date"/>
<xsl:text>. — </xsl:text>
<xsl:apply-templates select="placeName"/>
<xsl:text>.</xsl:text>
</xsl:when>
<!-- date de temps uniquement -->
<xsl:otherwise>
<xsl:apply-templates select="date"/>
<xsl:text>.</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template match="date">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="docDate/placeName">
<xsl:apply-templates/>
</xsl:template>
<!-- pas de template pour le premier argument, qui est utilisé pour la page de présentation du corpus -->
<!-- REGESTE -->
<xsl:template match="argument">
<xsl:element name="div">
<xsl:attribute name="class">
<xsl:text>analyse</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
<xsl:text>
</xsl:text>
<xsl:apply-templates select="//sourceDesc/listWit"/>
</xsl:template>
<xsl:template match="argument/p">
<xsl:element name="p">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<!-- IMAGES -->
<xsl:template match="listWit">
<xsl:element name="div">
<xsl:attribute name="class">
<xsl:text>tradition</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
<xsl:apply-templates select="facsimile"/>
<!-- image de l'acte s'il y a un <facsimile> avec @n contenant l'id de l'acte -->
<xsl:if test="ancestor::TEI//facsimile">
<xsl:element name="div">
<xsl:element name="details">
<xsl:element name="summary">
<xsl:text>Cliquer pour afficher une image de l'acte.</xsl:text>
</xsl:element>
<!-- si un chemin est renseigné dans le @url de <graphic> -->
<xsl:if test="//facsimile/graphic/@url">
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="//facsimile/graphic/@url"/></xsl:attribute>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="height">auto</xsl:attribute>
</xsl:element>
</xsl:if>
<!-- s'il y a une description de l'image-->
<xsl:if test="//facsimile/graphic/desc">
<xsl:element name="p">
<xsl:value-of select="//facsimile/graphic/desc"/>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- TABLEAU DE LA TRADITION -->
<xsl:template match="//sourceDesc/listWit/witness">
<!-- Plusieurs cas : -->
<xsl:choose>
<!-- Quand il y a une analyse -->
<xsl:when test="@n='analyse'">
<xsl:element name="p">
<xsl:element name="mark">
<xsl:attribute name="style">
<xsl:text>font-variant: small-caps; background-color: inherit;</xsl:text>
</xsl:attribute>
<xsl:text>Analyse : </xsl:text>
</xsl:element>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<!-- Quand il y a une mention -->
<xsl:when test="@n='mention'">
<xsl:element name="p">
<xsl:element name="mark">
<xsl:attribute name="style">
<xsl:text>font-variant: small-caps; background-color: inherit;</xsl:text>
</xsl:attribute>
<xsl:text>Mention : </xsl:text>
</xsl:element>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<!-- Quand il y a un indiqué -->
<xsl:when test="@n='indique'">
<xsl:element name="p">
<xsl:element name="mark">
<xsl:attribute name="style">
<xsl:text>font-variant: small-caps; background-color: inherit;</xsl:text>
</xsl:attribute>
<xsl:text>Indiqué : </xsl:text>
</xsl:element>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<!-- Dans tous les cas -->
<xsl:otherwise>
<xsl:element name="p">
<xsl:apply-templates/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- APPELS DE NOTE DANS LE TEXTE -->
<xsl:template match="//note[@type='bp']">
<!-- notes critiques -->
<xsl:element name="sup">
<xsl:element name="a">
<!-- @href pour lier l'appel à l'id de la note en fonction de son numéro -->
<xsl:attribute name="href">
<xsl:text>#</xsl:text>
<xsl:number count="//note[@type='bp']" level="any" format="1"/>
</xsl:attribute>
<!-- numéro de la note -->
<xsl:number count="//note[@type='bp']" level="any" format="1"/>
</xsl:element>
</xsl:element>
</xsl:template>
<xsl:template match="note[@type='paleo']">
<!-- notes paléographiques -->
<xsl:element name="sup">
<xsl:attribute name="id">
<xsl:text>fnref:</xsl:text>
<xsl:number count="//text/body/div//note[@type='paleo']" level="any" format="a"/>
</xsl:attribute>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:text>#fn:</xsl:text>
<xsl:number count="//text/body/div//note[@type='paleo']" level="any" format="a"/>
</xsl:attribute>
<xsl:attribute name="rel">
<xsl:text>footnote</xsl:text>
</xsl:attribute>
<xsl:number count="//text/body/div//note[@type='paleo']" level="any" format="a"/>
</xsl:element>
</xsl:element>
</xsl:template>
<!-- TEXTE DE L'ACTE -->
<xsl:template match="div[@type='acte']">
<!-- corps de l'acte -->
<xsl:element name="div">
<xsl:attribute name="class">
<xsl:text>act</xsl:text>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="div[@type='acte']/p">
<xsl:element name="p">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="//div[@type='MHT']">
<!-- mention hors teneur (mht) -->
<xsl:element name="p">
<xsl:attribute name="class">
<xsl:text>mht</xsl:text>
</xsl:attribute>
<xsl:choose>
<!-- indication sur le positionnement de la mht -->
<xsl:when test="@subtype='gauche'">
<i style="font-size: small;">(À gauche :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='droite'">
<i style="font-size: small;">(À droite :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='replidroit'">
<i style="font-size: small;">(Sur le repli, à droite :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='repligauche'">
<i style="font-size: small;">(Sur le repli, à gauche :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='replicentre'">
<i style="font-size: small;">(Sur le repli, au centre :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='sousrepligauche'">
<i style="font-size: small;">(Sous le repli, à gauche :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='sousreplidroit'">
<i style="font-size: small;">(Sous le repli, à droite :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='sousreplicentre'">
<i style="font-size: small;">(Sous le repli, au centre :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='sousrepligauche'">
<i style="font-size: small;">(Sous le repli, à gauche :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:when test="@subtype='sousreplicentre'">
<i style="font-size: small;">(Sous le repli, au centre :)</i> <xsl:apply-templates/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<xsl:template match="div[@type='sign']">
<!-- signature -->
<xsl:element name="div">
<xsl:attribute name="class">
<xsl:text>signature</xsl:text>
</xsl:attribute>
<xsl:for-each select="child::p">
<xsl:element name="p">
<i style="font-size: small;">(Signé :) </i><xsl:apply-templates/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
<!-- NOTES CRITIQUES -->
<xsl:template match="//note[@type='bp']/p">
<xsl:element name="p">
<!-- @id, cible du @href de l'appel de note dans le texte -->
<xsl:attribute name="id">
<xsl:number count="//note[@type='bp']" level="any" format="1"/>
</xsl:attribute>
<!-- numéro de la note -->
<xsl:number count="//note[@type='bp']" level="any" format="1"/>
<xsl:text>. </xsl:text>
<!-- texte de la note -->
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<!-- NOTES PALÉOGRAPHIQUES -->
<xsl:template match="note[@type='paleo']/p">
<xsl:element name="li">
<xsl:attribute name="id">
<xsl:text>fn:</xsl:text>
<xsl:number count="//text/body/div//note[@type='paleo']" level="any" format="a"/>
</xsl:attribute>
<xsl:attribute name="class">
<xsl:text>footnote</xsl:text>
</xsl:attribute>
<xsl:element name="p">
<!-- numéro de la note -->
<xsl:number count="//text/body/div//note[@type='paleo']" level="any" format="a"/>
<xsl:text>. </xsl:text>
<!-- texte de la note -->
<xsl:apply-templates/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>