Skip to content

Instantly share code, notes, and snippets.

@cynddl
Last active December 16, 2015 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cynddl/5352696 to your computer and use it in GitHub Desktop.
Save cynddl/5352696 to your computer and use it in GitHub Desktop.
XLST – table ref
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY deg "&#176;" >
<!ENTITY laquo "&#171;" ><!-- guillemets ouvrants -->
<!ENTITY raquo "&#187;" ><!-- guillements fermants -->
<!ENTITY nbsp "&#160;" ><!-- espace insécable -->
<!ENTITY para "&#182;" ><!-- signe paragraphe (P double barre verticale inversé) -->
<!ENTITY iquest "&#191;" ><!-- point d'interrogation à l'envers -->
<!ENTITY sec "&#167;" ><!-- alinéa VERIFIER LE NOM HTML -->
<!ENTITY bull "&#8226;" ><!-- bullet -->
<!ENTITY larr "&#8592;" ><!-- flèche gauche -->
<!ENTITY uarr "&#8593;" ><!-- flèche vers le haut -->
<!ENTITY guillOF "&#171;&#160;" > <!-- Guillemets ouvrants et espace insécable -->
<!ENTITY guillFF "&#160;&#187;" ><!-- -->
]>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="text" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:preserve-space elements="note"/>
<xsl:template match="/">
<xsl:apply-templates select="TEI/text/body/div/listBibl"/>
</xsl:template>
<!-- Enveloppement de l'entrée bibliographique, des citations et des éléments associés -->
<!-- Accroche pour fournir l'identifiant d'un élément bibliographique -->
<xsl:template name="avant-bibl"/>
<!-- Ici, on engendre les lignes du CSV -->
<xsl:template match="bibl">
<xsl:call-template name="avant-bibl"/>
<xsl:value-of select="./@xml:id"/>@<xsl:apply-templates select="*[not(name()='note')]"/><xsl:text>&#xa;</xsl:text>
</xsl:template>
<!-- Eléments de l'entrée bibliographique -->
<xsl:template match="author">
<xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="forename">
<xsl:value-of select="."/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="persName">
<xsl:if test="position() > 1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="title[@level='m']">
<i><xsl:apply-templates/></i><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="title[@level='s']">
<xsl:text>Collection </xsl:text><xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="title[@level='a']">
<xsl:text>&guillOF;</xsl:text><xsl:apply-templates/><xsl:text>&guillFF; </xsl:text>
</xsl:template>
<xsl:template match="title[@level='j']">
<i><xsl:apply-templates/></i><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="biblScope[@type='chap']">
<xsl:text>ch.&nbsp;</xsl:text><xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<!-- -->
<xsl:template match="biblScope[@type='month']">
<xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="biblScope[@type='number']">
<xsl:text>n&deg;</xsl:text><xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="biblScope[@type='pp']">
<xsl:text>p.&nbsp;</xsl:text><xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="biblScope[@type='vol']">
<xsl:text>vol.&nbsp;</xsl:text><xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="publisher | date | series | pubPlace | edition">
<xsl:apply-templates/><xsl:text> </xsl:text>
</xsl:template>
<!-- Citations et autour des citations : note -->
<xsl:template match="note">
<br/><xsl:apply-templates/>
</xsl:template>
<!-- Autour des citations (péri-citations) : titraille, remarques BH, etc. -->
<!-- Accroche pour pouvoir fournir l'identifiant d'un élément autour d'une péri-citation
NB : si l'élément est vide ou si on enchâsse un élément xsl:text vide,
un passage à la ligne est engendré, si bien que la transduction de l'élément ab
est sur deux lignes.
-->
<xsl:template name="avant-ab"><xsl:text> </xsl:text></xsl:template>
<!-- Factorisation de la production du lien vers la péri-citation -->
<xsl:template name="lien-ab">
<xsl:element name="a">
<xsl:attribute name="name">
<xsl:value-of select="./@xml:id"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:text>#</xsl:text>
<xsl:value-of select="substring-before(./@xml:id,'_')"/>
</xsl:attribute>
<xsl:text>&uarr;</xsl:text>
</xsl:element>
</xsl:template>
<xsl:template match="ab[@type='dateLecture']">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>Lu en </xsl:text><xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="ab[@type='resumeBH']">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Résumé BH] </xsl:text><xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="ab[@type='remarqueBH']">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Remarque BH] </xsl:text><xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="ab[@type='commentaireBH']">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Commentaire BH] </xsl:text><xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="ab[@type='autre']">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Varia] </xsl:text><xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="ab">
<xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:apply-templates/><br/>
</xsl:template>
<xsl:template match="ab[@type='titreSection']">
<h3><xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:apply-templates/><xsl:text> </xsl:text></h3>
</xsl:template>
<!-- Ancienne version
<xsl:template match="ab[@type='sousTitreSection']">
<h4><xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:apply-templates/><xsl:text> </xsl:text></h4>
</xsl:template>
-->
<xsl:template match="ab[@type='titreSousSection']">
<h4><xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:apply-templates/><xsl:text> </xsl:text></h4>
</xsl:template>
<!-- Mention Titre BH : mettre en plus petit -->
<xsl:template match="ab[@type='titreBH']">
<h3><xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Titre BH] </xsl:text><xsl:apply-templates/><xsl:text> </xsl:text></h3>
</xsl:template>
<!-- Mention Sous-titre BH : mettre en plus petit -->
<xsl:template match="ab[@type='sousTitreBH']">
<h4><xsl:call-template name="avant-ab"/><xsl:call-template name="lien-ab"/><xsl:text>[Sous-titre BH] </xsl:text><xsl:apply-templates/><xsl:text> </xsl:text></h4>
</xsl:template>
<!-- Citations -->
<!-- Accroche pour pouvoir fournir l'identifiant d'une citation -->
<xsl:template name="avant-cit"/>
<xsl:template match="cit">
<xsl:call-template name="avant-cit"/>
<xsl:element name="a">
<xsl:attribute name="name">
<xsl:value-of select="quote/@xml:id"/>
</xsl:attribute>
</xsl:element>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ref">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./@target"/>
</xsl:attribute>
<xsl:text>&uarr;</xsl:text>
</xsl:element>
<xsl:text> </xsl:text>
<xsl:value-of select="."/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="quote">
<xsl:apply-templates/><br/>
</xsl:template>
<!-- Mise en forme du texte -->
<xsl:template match="hi">
<xsl:text>&lt;b></xsl:text><xsl:apply-templates/><xsl:text>&lt;/b></xsl:text>
</xsl:template>
<xsl:template match="emph">
<xsl:text>&lt;i></xsl:text><xsl:value-of select="."/><xsl:text>&lt;/i></xsl:text>
</xsl:template>
<xsl:template match="lb">
<br/>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment