TEI » HTML (tei_html.xsl)
© 2010–2011, École nationale des chartes, licence CeCILL-C/LGPL- [VJ] Vincent Jolivet
- [FG] Frédéric Glorieux
Cette transformation XSLT 1.0 (compatible navigateurs, PHP, Python, Java…) transforme du TEI en HTML5. Les auteurs ne s'engagent pas à supporter les 600 éléments TEI. Cette feuille prend en charge TEI lite et les éléments TEI documentés dans les schémas de cette installation.
Alternative : les transformations de Sebastian Rahtz tei-c.org/Tools/Stylesheets/ sont officiellement ditribuées par le consortium TEI, cependant ce développement est en XSLT 2.0 (java requis).
- [t22] ? notes dans les groupes ? <xsl:template match="tei:text/tei:group"> <section> <xsl:call-template name="atts"/> <xsl:comment> <xsl:call-template name="path"/> </xsl:comment> <xsl:apply-templates/> <xsl:call-template name="notes"> <xsl:with-param name="texte" select=".//*[not()]"/> </xsl:call-template> </section> </xsl:template>
- [t81] @alt
- [tnote_appel], multi cibles
- [tnote_retour] retour à une note multiplement appelée
Métadonnées
teiHeader
source
- <xsl:template match="
tei:teiHeader
"> -
- <xsl:if test="
normalize-space(.) != ''
"> -
- <header>
-
<xsl:call-template name="
atts
"/><xsl:apply-templates select="tei:fileDesc | tei:encodingDesc | tei:profileDesc
"/> - </header>
- </xsl:if>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:fileDesc
"> -
- <section>
-
<xsl:call-template name="
atts
"/><!--Envoyer la page de titre
--><xsl:apply-templates select="tei:titleStmt
"/><!--Envoyer les informations éditoriales
--><xsl:apply-templates select="tei:publicationStmt
"/><!--Retenir le reste qui pourra être repris dans les blocs plus haut
--> - </section>
- </xsl:template>
source
- <xsl:template match="
tei:publicationStmt
"> -
- <section>
-
<xsl:call-template name="
atts
"/><!--1) ligne bibliographique
-->- <p>
- </p>
<!--3) source
--><xsl:apply-templates select="../tei:sourceDesc
"/><!--2) taille
--><xsl:apply-templates select="../tei:extent
"/><!--4) éditeur
--><xsl:apply-templates select="tei:publisher
"/><xsl:apply-templates select="tei:address
"/><!--5) licence
--><xsl:apply-templates select="tei:availability
"/> - </section>
- </xsl:template>
source
tei:encodingDesc
"/>source
- <xsl:template match="tei:projectDesc | tei:samplingDecl | tei:editorialDecl | tei:availability">
-
- <section>
-
<xsl:call-template name="
atts
"/>- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="string($label) != '' and string($label) != local-name()">
-
- <legend class="
{local-name()}
"> -
<xsl:value-of select="
$label
"/> - </legend>
- <legend class="
- </xsl:if>
- <xsl:variable name="
- </section>
- </xsl:template>
source
tei:charDecl | tei:langUsage | tei:catRef
"/>source
- <xsl:template match="
tei:sourceDesc
"> -
- <p>
-
<xsl:call-template name="
atts
"/>- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="
string($label) != ''
"> -
- <legend>
-
<xsl:value-of select="
$label
"/> - </legend>
- </xsl:if>
- <xsl:variable name="
- </p>
- </xsl:template>
source
- <xsl:template match="tei:fileDesc/tei:titleStmt/tei:funder | tei:fileDesc/tei:titleStmt/tei:edition | tei:fileDesc/tei:titleStmt/tei:extent">
-
- <div>
-
<xsl:call-template name="
atts
"/>- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="
string($label) != ''
"> -
- <legend>
- <xsl:value-of select="
$label
"/> - </legend>
- </xsl:if>
- <xsl:variable name="
- </div>
- </xsl:template>
source
source
- <xsl:template match="
tei:fileDesc/tei:titleStmt/tei:principal[1]
"> -
- <div>
-
<xsl:call-template name="
atts
"/>- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="
string($label) != ''
"> -
- <legend>
- <xsl:value-of select="
$label
"/> - </legend>
- </xsl:if>
- <xsl:for-each select="
following-sibling::tei:principal
"> -
- <xsl:choose>
-
- <xsl:otherwise>
-
<xsl:text/>
- <xsl:call-template name="
label
"> - </xsl:call-template>
<xsl:text/> - <xsl:call-template name="
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:variable name="
- </div>
- </xsl:template>
source
tei:fileDesc/tei:titleStmt/tei:editor
"/>source
- <xsl:template match="
tei:fileDesc/tei:titleStmt/tei:editor[1]
"> -
- <div>
-
- <xsl:choose>
-
- <xsl:when test="
../tei:principal
"> -
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:for-each select="
../tei:editor
"> -
- <xsl:choose>
-
- <xsl:when test="
position() = last()
"> -
<xsl:text/>
- <xsl:call-template name="
label
"> - </xsl:call-template>
<xsl:text/> - <xsl:call-template name="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:for-each>
- </div>
- </xsl:template>
source
- <xsl:template match="
tei:fileDesc/tei:titleStmt
"> -
- <header>
-
<xsl:call-template name="
atts
"/><xsl:apply-templates select="tei:title | tei:author | tei:editor | tei:funder | tei:meeting | tei:principal | tei:sponsor"/><!--Ramener une description du projet ?
--><xsl:apply-templates select="../../tei:encodingDesc/tei:projectDesc
"/><!--Ramener une description de l'édition
--><xsl:apply-templates select="../tei:editionStmt
"/><!--procéder les autres éléments
--><xsl:apply-templates select="tei:respStmt
"/><!--Histoire des modifications (si pas public, mettre display none en CSS)
--><xsl:apply-templates select="/*/tei:teiHeader/tei:revisionDesc
"/> - </header>
- </xsl:template>
source
- <xsl:template match="tei:addrLine | tei:docTitle | tei:docImprint | tei:docAuthor | tei:docEdition | tei:editionStmt | tei:keywords | tei:profileDesc | tei:textClass">
-
- <xsl:if test="
. != ''
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:if>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:teiHeader
" mode="title
"> - </xsl:template>
source
- <xsl:template match="
tei:fileDesc/tei:titleStmt
" mode="txt
"> - </xsl:template>
source
- <xsl:template match="
tei:publicationStmt | tei:titleStmt
" mode="title
"> -
<xsl:call-template name="
label
"/> - </xsl:template>
Blocs
Sections
source
- <xsl:template match="
tei:text
"> -
- <article>
-
<xsl:call-template name="
atts
"/><!--Actes, procéder les notes par textes
-->- <xsl:if test="
$notes
"> -
<xsl:call-template name="
notes
"/> - </xsl:if>
- <xsl:if test="
- </article>
- </xsl:template>
- $notes :
Sections avec notes, procéder le contenu de la section, puis les notes. La logique est surchargées pour le split (notes au bas de chaque page internet). Une version précédente de la logique cherchait à automatiser la distribution des notes par section. Ne pas réessayer, inutilement compliqué, et ne s'adapte pas à tous les cas possibles de division des pages. Ici, notes pour introduction générale, annexes, corps, et textes
source
- <xsl:template match="
tei:front
"> -
- <header>
-
<xsl:call-template name="
atts
"/>- <xsl:if test="
$notes
"> -
<xsl:call-template name="
notes
"/> - </xsl:if>
- <xsl:if test="
- </header>
- </xsl:template>
- $notes :
source
- <xsl:template match="
tei:back
"> -
- <footer>
-
<xsl:call-template name="
atts
"/>- <xsl:if test="
$notes
"> -
<xsl:call-template name="
notes
"/> - </xsl:if>
- <xsl:if test="
- </footer>
- </xsl:template>
- $notes :
source
- <xsl:template match="
tei:body
"> -
- <div>
-
<xsl:call-template name="
atts
"/>- <xsl:if test="
$notes
"> -
<xsl:call-template name="
notes
"/> - </xsl:if>
- <xsl:if test="
- </div>
- </xsl:template>
- $notes :
TODO ? notes dans les groupes ? <xsl:template match="tei:text/tei:group"> <section> <xsl:call-template name="atts"/> <xsl:comment> <xsl:call-template name="path"/> </xsl:comment> <xsl:apply-templates/> <xsl:call-template name="notes"> <xsl:with-param name="texte" select=".//*[not()]"/> </xsl:call-template> </section> </xsl:template>
source
- <xsl:template match="tei:group | tei:div | tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7 | tei:prologue | tei:epilogue">
-
- <section>
-
<xsl:call-template name="
atts
"/> - </section>
- </xsl:template>
source
- <xsl:template match="
tei:floatingText
"> -
- <aside>
-
<xsl:call-template name="
atts
"/> - </aside>
- </xsl:template>
source
- <xsl:template match="
tei:argument
"> -
- <xsl:if test="
. != ''
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:if>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:group/tei:text/tei:front
"> -
- <header>
-
<xsl:call-template name="
atts
"/><-- <xsl:choose> <xsl:when test="../@n"> <xsl:value-of select="../@n"/> </xsl:when> <xsl:when test="tei:titlePart[starts-with(@type, 'num')]"> <xsl:value-of select="tei:titlePart[starts-with(@type, 'num')]"/> </xsl:when> </xsl:choose> -->
<!--VJ : inscire la mention "D'après témoin"
--> - </header>
- </xsl:template>
source
- <xsl:template match="
/*
"> - </xsl:template>
source
tei:divGen
"/>Titres
source
- <xsl:template match="
tei:titleStmt/tei:title
"> -
- <h1>
-
<xsl:call-template name="
atts
"/> - </h1>
- </xsl:template>
source
- <xsl:template match="
tei:titlePage
"> -
- <header>
-
<xsl:call-template name="
atts
"/> - </header>
- </xsl:template>
source
- <xsl:template match="
tei:head
"> -
- <xsl:variable name="
name
"> -
- <xsl:choose>
-
<xsl:when test="
normalize-space(.) = ''
"/> - </xsl:choose>
- </xsl:variable>
- <xsl:if test="
$name != ''
"> -
- <xsl:element name="
{$name}
"> -
<xsl:call-template name="
atts
"/><-- Ce lien pour pour connaître l'id de partie pose pb à l'autotoc <a class="bookmark" style="display:none"> <xsl:attribute name="href"> <xsl:call-template name="href"/> </xsl:attribute> <xsl:text>¶</xsl:text> </a> -->
- </xsl:element>
- <xsl:element name="
- </xsl:if>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
tei:titlePart
"> -
- <h1>
-
<xsl:call-template name="
atts
"/> - </h1>
- </xsl:template>
Paragraphes
source
- <xsl:template match="tei:byline | tei:caption | tei:dateline | tei:desc | tei:imprimatur | tei:p | tei:signed | tei:salute | tei:trailer">
-
- <p>
-
<xsl:call-template name="
atts
"/> - </p>
- </xsl:template>
source
- <xsl:template match="
tei:cit | tei:quote | tei:epigraph
"> -
- <blockquote>
-
<xsl:call-template name="
atts
"/> - </blockquote>
- </xsl:template>
source
- <xsl:template match="
tei:cit/tei:quote
" priority="5
"> -
- <q>
-
<xsl:call-template name="
atts
"/> - </q>
- </xsl:template>
source
- <xsl:template match="
tei:address
"> -
- <address>
-
<xsl:call-template name="
atts
"/> - </address>
- </xsl:template>
source
- <xsl:template match="
tei:eg
"> -
<pre>
<xsl:call-template name="
</pre>atts
"/> <xsl:apply-templates/> - </xsl:template>
source
tei:eg/tei:lb
"/>Listes
source
- <xsl:template match="tei:list | tei:listWit | tei:listBibl | tei:recordHist">
-
- <xsl:variable name="
el
"> - </xsl:variable>
- <xsl:choose>
-
<!--
liste titrée à mettre dans un conteneur
-->- <xsl:when test="
tei:head
"> -
- <div class="
{local-name()}
"> -
<xsl:apply-templates select="
tei:head
"/>- <xsl:element name="
{$el}
"> -
<xsl:call-template name="
atts
"/><xsl:apply-templates select="*[local-name() != 'head']
"/> - </xsl:element>
- <xsl:element name="
- </div>
- <div class="
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:element name="
{$el}
"> -
<xsl:call-template name="
atts
"/> - </xsl:element>
- <xsl:element name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
tei:respStmt
"> -
<!--
Plus de 2 item du même nom, voir s'il y a un titre dans le fichier de messages
-->- <xsl:if test="../*[name() = $name][2] and count(../*[name() = $name][1]|.) = 1">
-
- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="
string($label) != ''
"> -
- <legend class="
{local-name()}
"> - <xsl:value-of select="
$label
"/> - </legend>
- <legend class="
- </xsl:if>
- <xsl:variable name="
- </xsl:if>
- <div>
-
<xsl:call-template name="
atts
"/>- <xsl:if test="
*/@from|*/@to
"> -
<xsl:value-of select="
*/@from
"/><xsl:value-of select="*/@to
"/> - </xsl:if>
- <xsl:for-each select="
*
"> -
<xsl:apply-templates select="
.
"/>- <xsl:choose>
-
- <xsl:when test="
position() = last()
"> -
<xsl:call-template name="
dot
"/> - </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:for-each>
- <xsl:if test="
- </div>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:resp
"> - </xsl:template>
source
- <xsl:template match="
tei:list[@type='index']
"> -
- <div>
-
<xsl:call-template name="
atts
"/><xsl:apply-templates select="tei:head
"/><!--s'il n'y a pas de division spéciale, barre de lettres
-->- <xsl:choose>
-
- <xsl:when test="
not(tei:list)
"> -
- <div class="
alpha
"> -
<xsl:call-template name="
alpha_href
"/> - </div>
- <div class="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- <ul class="
index
"> -
<xsl:apply-templates select="
*[local-name() != 'head']
"/> - </ul>
- </div>
- </xsl:template>
source
- <xsl:template name="
alpha_href
"> -
<!--
Préfixe de l'identifiant
-->- <xsl:choose>
-
<!--
ne pas oublier de stopper à temps
--><xsl:when test="$alpha =''
"/>- <xsl:otherwise>
-
<!--
tester si la lettre existe avant de l'écrire
-->- <xsl:if test="*[translate(substring(., 1, 1), $iso, $min) = $lettre]">
-
<xsl:if test="
$lettre != 'a'
"/><!--pas d'espace insécable
-->- <a href="#{$prefix}{$lettre}" target="
_self
"> -
<xsl:value-of select="
translate ( $lettre, $min, $iso)
"/> - </a>
- <a href="#{$prefix}{$lettre}" target="
- </xsl:if>
- <xsl:call-template name="
alpha_href
"> - </xsl:call-template>
- <xsl:if test="
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- $prefix : Préfixe de l'identifiant
- $alpha :
source
- <xsl:template match="
tei:list/tei:head
"> -
- <legend class="
list
"> - </legend>
- <legend class="
- </xsl:template>
source
- <xsl:template match="
tei:item
"> -
- <li>
-
<xsl:call-template name="
atts
"/><!--Si index, rajouter une ancre
--> - </li>
- </xsl:template>
source
- <xsl:template match="
tei:list[@type='gloss' or tei:label]
"> -
- <xsl:choose>
-
<!--
liste titrée à mettre dans un conteneur
-->- <xsl:when test="
tei:head
"> -
- <div class="
{local-name()}
"> -
<xsl:apply-templates select="
tei:head
"/>- <dl class="
dl
"> -
<xsl:call-template name="
atts
"/><xsl:apply-templates select="*[local-name() != 'head']
"/> - </dl>
- <dl class="
- </div>
- <div class="
- </xsl:when>
- <xsl:otherwise>
-
- <dl>
-
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <xsl:call-template name="
- </dl>
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
tei:list[@type='gloss' or tei:label]/tei:label
"> -
- <dt>
-
<xsl:call-template name="
atts
"/> - </dt>
- </xsl:template>
source
- <xsl:template match="
tei:list[@type='gloss' or tei:label]/tei:item
"> -
- <dd>
-
<xsl:call-template name="
atts
"/> - </dd>
- </xsl:template>
source
- <xsl:template match="
tei:revisionDesc
"> -
- <table>
-
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <caption>
-
<xsl:call-template name="
label
"/> - </caption>
- <xsl:call-template name="
- </table>
- </xsl:template>
source
- <xsl:template match="
tei:change
"> -
- <tr>
-
<xsl:call-template name="
atts
"/>- <td>
-
<xsl:value-of select="
@when
"/> - </td>
- <td>
-
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </td>
- <td>
- </td>
- </tr>
- </xsl:template>
Tables
source
- <xsl:template match="
tei:table
"> -
- <table>
-
<xsl:call-template name="
atts
"/> - </table>
- </xsl:template>
source
- <xsl:template match="
tei:table/tei:head
"> -
- <caption>
-
<xsl:call-template name="
atts
"/> - </caption>
- </xsl:template>
source
- <xsl:template match="
tei:row
"> -
- <tr>
-
<xsl:call-template name="
atts
"/> - </tr>
- </xsl:template>
source
- <xsl:template match="
tei:cell
"> -
- <xsl:variable name="
el
"> - </xsl:variable>
- <xsl:element name="
{$el}
"> -
<xsl:call-template name="
atts
"/>- <xsl:if test="
@rows > 1
"> -
- <xsl:attribute name="
rowspan
"> -
<xsl:value-of select="
@rows
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
- <xsl:if test="
@cols > 1
"> -
- <xsl:attribute name="
colspan
"> -
<xsl:value-of select="
@cols
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
- <xsl:if test="
- </xsl:element>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
tei:lg[tei:lg]
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:template>
source
- <xsl:template match="
tei:lg
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:template>
source
- <xsl:template match="
tei:l
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:template>
source
- <xsl:template match="
tei:l[not(text())]
"> -
<br/>
- </xsl:template>
Caractères
Balises de niveau mot, à l'intérieur d'un paragraphe.
HTML
source
- <xsl:template match="
tei:hi
"> -
- <xsl:choose>
-
<xsl:when test="
normalize-space(.) =''
"/><!--si @rend est un nom d'élément HTML
-->- <xsl:when test="contains( ' i b s u em strong tt big small strike sub sup ', concat(' ', @rend, ' '))">
-
- <xsl:element name="
{@rend}
"> -
- <xsl:if test="
@type
"> -
- <xsl:attribute name="
class
"> -
<xsl:value-of select="
@type
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
- <xsl:if test="
- </xsl:element>
- <xsl:element name="
- </xsl:when>
<!--surlignages venus de la transformation ODT
--><!--sinon appeler le span général
-->- <xsl:otherwise>
-
<xsl:call-template name="
span
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
tei:ident
"> -
- <b>
-
<xsl:call-template name="
atts
"/> - </b>
- </xsl:template>
source
- <xsl:template match="
tei:head/tei:ident
"> - </xsl:template>
source
- <xsl:template match="tei:head/tei:hi[@rend='u'] | tei:head/tei:title[@rend='u']">
- </xsl:template>
source
- <xsl:template match="
tei:gloss
"> -
- <dfn>
-
<xsl:call-template name="
atts
"/> - </dfn>
- </xsl:template>
source
- <xsl:template match="
tei:q | tei:p//tei:quote | tei:said
"> -
- <q>
-
<xsl:call-template name="
atts
"/> - </q>
- </xsl:template>
source
- <xsl:template match="
tei:code
"> -
- <code>
-
<xsl:call-template name="
atts
"/> - </code>
- </xsl:template>
source
- <xsl:template match="
tei:p/tei:eg
"> -
- <samp>
-
<xsl:call-template name="
atts
"/> - </samp>
- </xsl:template>
source
- <xsl:template match="
tei:num
"> -
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="
tei:label
"> -
- <label>
-
<xsl:call-template name="
atts
"/> - </label>
- </xsl:template>
source
- <xsl:template match="
tei:lb
"> -
<br/>
- </xsl:template>
source
- <xsl:template match="
tei:caes
"> - </xsl:template>
source
- <xsl:template match="
tei:cb
"> - </xsl:template>
source
- <xsl:template match="
tei:pb
"> - </xsl:template>
source
- <xsl:template match="
tei:fw
"> -
- <xsl:if test="
. != ''
"> -
- <small>
-
<xsl:call-template name="
atts
"/> - </small>
- </xsl:if>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="tei:distinct | tei:emph | tei:mentioned | tei:sic | tei:soCalled">
-
- <em>
-
<xsl:call-template name="
atts
"/> - </em>
- </xsl:template>
source
- <xsl:template match="
tei:phr
" name="span
"> -
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="tei:s | tei:seg | tei:imprint | tei:pubPlace | tei:glyph">
-
<!--
dates, mieux employer les attributs ?
--> - </xsl:template>
source
- <xsl:template match="
tei:date | tei:docDate | tei:origDate
"> -
- <time>
-
<xsl:call-template name="
atts
"/> - </time>
- </xsl:template>
source
- <xsl:template match="
tei:c
"> -
- <b>
-
<xsl:call-template name="
atts
"/> - </b>
- </xsl:template>
Liens
source
- <xsl:template match="
tei:ref
"> -
- <a>
-
<xsl:call-template name="
atts
"/>- <xsl:choose>
-
- <xsl:otherwise>
-
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:otherwise>
- </xsl:choose>
- </a>
- </xsl:template>
source
- <xsl:template match="
tei:email
"> -
- <xsl:variable name="
string
"> -
<xsl:value-of select="
substring-before(., '@')
"/><xsl:value-of select="substring-after(., '@')
"/> - </xsl:variable>
- <a>
-
<xsl:call-template name="
atts
"/><xsl:attribute name="onmouseover
">if(this.ok) return; this.innerHTML='<xsl:value-of select="$string
"/>'; this.href='mailto:<xsl:value-of select="$string
"/>'; this.ok=true; </xsl:attribute><xsl:call-template name="label
"/> - </a>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
tei:ptr
"> -
- <a>
-
<xsl:call-template name="
atts
"/><xsl:value-of select="@target
"/> - </a>
- </xsl:template>
source
- <xsl:template match="
tei:figure
"> -
- <figure>
- </figure>
- </xsl:template>


source
- <xsl:template match="
tei:figure/tei:head
"> -
- <figcaption>
- </figcaption>
- </xsl:template>
source
- <xsl:template match="
tei:graphic
"> -
- <img src="
{@url}
" alt="{normalize-space(.)}
"> -
- <xsl:if test="
@rend
"> -
- <xsl:attribute name="
align
"> -
<xsl:copy-of select="
@rend
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
- <xsl:if test="
- </img>
- <img src="
- </xsl:template>
source
- <xsl:template match="
tei:w
"> -
- <xsl:choose>
-
<!--
Particulier à MontFerrand, à sortir ?
-->- <xsl:when test="
$def
"> -
- <a>
-
<xsl:call-template name="
atts
"/>- <xsl:attribute name="
title
"> -
- <xsl:for-each select="
$def/ancestor-or-self::tei:entry[1]//tei:def
"> -
<xsl:value-of select="
normalize-space(.)
"/> - </xsl:for-each>
- <xsl:for-each select="
- </xsl:attribute>
- <xsl:attribute name="
- </a>
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="tei:bibl | tei:biblFull | tei:biblStruct | tei:msDesc | tei:msPart | tei:witness">
-
- <xsl:variable name="
el
"> -
- <xsl:choose>
-
<!--
Référence bibliograhique affichée comme bloc
--> - </xsl:choose>
- </xsl:variable>
- <xsl:element name="
{$el}
"> -
<xsl:call-template name="
atts
"/>- <xsl:choose>
-
- <xsl:when test="
self::tei:biblStruct
"> -
- <xsl:for-each select="
*
"> -
<xsl:apply-templates select="
.
"/> - </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:element>
- <xsl:variable name="
- </xsl:template>
Bibliographie
source
- <xsl:template match="
tei:monogr | tei:analytic
"> - </xsl:template>
source
- <xsl:template match="
tei:msDesc | tei:bibl
" mode="a
"> -
- <a class="
{local-name()}
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:variable name="
title
"> - </xsl:variable>
- <xsl:attribute name="
title
"> -
<xsl:value-of select="
normalize-space($title)
"/> - </xsl:attribute>
- <xsl:choose>
-
- <xsl:when test="
@xml:id
"> -
<xsl:call-template name="
witid
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
label
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:attribute name="
- </a>
- <a class="
- </xsl:template>
source
- <xsl:template name="
witid
"> -
- <xsl:choose>
-
<xsl:when test="
normalize-space($s)=''
"/>- <xsl:when test="
contains($s, '_') or contains($s, '.')
"> -
<xsl:value-of select="
.
"/> - </xsl:when>
<!--Si patron normalisé d'identifiant pour édition
-->- <xsl:when test="starts-with($s, 'ed') and translate(substring($s,3), '0123456789 ', '')=''">
-
<xsl:value-of select="
normalize-space(substring($s,3))
"/> - </xsl:when>
- <xsl:when test="translate(substring($s, 1, 1), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', '') =''">
-
<xsl:value-of select="
substring($s, 1, 1)
"/>- <xsl:call-template name="
witid
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:otherwise>
-
- <sup>
-
<xsl:value-of select="
$s
"/> - </sup>
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
- $s :
source
- <xsl:template match="
tei:title
"> -
- <cite>
-
<xsl:call-template name="
atts
"/> - </cite>
- </xsl:template>
source
- <xsl:template match="
tei:p//tei:cit
"> -
- <span>
-
<xsl:call-template name="
atts
"/>- <xsl:for-each select="
*
"> -
<xsl:apply-templates select="
.
"/> - </xsl:for-each>
- <xsl:for-each select="
- </span>
- </xsl:template>
source
- <xsl:template match="
tei:title[../tei:idno[@type='URI']]
"> -
- <a href="{../tei:idno[@type='URI']}">
-
<xsl:call-template name="
atts
"/> - </a>
- </xsl:template>
source
source
- <xsl:template match="
tei:idno[@type]
"> -
- <xsl:call-template name="
label
"> - </xsl:call-template>
<xsl:value-of select=".
"/> - <xsl:call-template name="
- </xsl:template>
source
- <xsl:template match="
tei:idno | tei:altIdentifier
"> -
- <xsl:choose>
-
- <xsl:when test="
starts-with('http', .)
"> -
- <a>
-
<xsl:call-template name="
atts
"/>- <xsl:attribute name="
href
"> -
<xsl:value-of select="
.
"/> - </xsl:attribute>
- <xsl:attribute name="
- </a>
- </xsl:when>
- <xsl:otherwise>
-
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="tei:author | tei:biblScope | tei:collation | tei:collection | tei:dim | tei:editor | tei:edition | tei:extent | tei:funder | tei:publisher | tei:biblFull/tei:titleStmt/tei:title | tei:stamp">
-
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="tei:accMat | tei:additional | tei:additions | tei:adminInfo | tei:binding | tei:bindingDesc | tei:condition | tei:history | tei:objectDesc | tei:origin | tei:provenance | tei:physDesc | tei:source | tei:support | tei:supportDesc | tei:surrogates | tei:biblFull/tei:titleStmt">
-
- <xsl:if test="
. != ''
"> -
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:if>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:handDesc
"> -
- <ul>
-
- <xsl:for-each select="
*
"> - </xsl:for-each>
- <xsl:for-each select="
- </ul>
- </xsl:template>
source
- <xsl:template match="
tei:dimensions
"> -
- <span>
-
<xsl:call-template name="
atts
"/>- <xsl:variable name="
label
"> -
- <xsl:call-template name="
label
"> -
- <xsl:with-param name="
id
"> -
<xsl:value-of select="
@type
"/> - </xsl:with-param>
- <xsl:with-param name="
- </xsl:call-template>
- <xsl:call-template name="
- </xsl:variable>
- <xsl:if test="
$label != ''
"> -
<xsl:value-of select="
translate(substring($label, 1, 1), $mins, $caps)
"/><xsl:value-of select="substring($label, 2)
"/> - </xsl:if>
- <xsl:for-each select="
*
"> -
<xsl:apply-templates select="
.
"/>- <xsl:choose>
-
<xsl:when test="
position() =last()
"/> - </xsl:choose>
- </xsl:for-each>
- <xsl:if test="
@unit
"> -
<xsl:text/><xsl:value-of select="
@unit
"/> - </xsl:if>
- <xsl:variable name="
- </span>
- </xsl:template>
source
- <xsl:template match="
tei:layout
"> -
- <div>
-
<xsl:call-template name="
atts
"/>- <xsl:choose>
-
- <xsl:when test="
@ruledLines
"> -
<xsl:value-of select="
@ruledLines
"/><xsl:text/>- <xsl:call-template name="
label
"> - </xsl:call-template>
<xsl:value-of select="@writtenLines
"/>- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:when test="
@writtenLines
"> -
<xsl:value-of select="
@writtenLines
"/><xsl:text/>- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
text
"> - </xsl:variable>
<xsl:copy-of select="$text
"/> - </div>
- </xsl:template>
source
- <xsl:template match="
tei:height | tei:width | tei:layoutDesc
"> - </xsl:template>
source
- <xsl:template match="tei:institution | tei:locus | tei:repository | tei:settlement">
-
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="
tei:msIdentifier
"> -
- <span>
-
<xsl:call-template name="
atts
"/>- <xsl:for-each select="
*
"> -
<xsl:apply-templates select="
.
"/> - </xsl:for-each>
- <xsl:for-each select="
- </span>
- </xsl:template>
source
- <xsl:template match="
tei:witness[@ana='edited']
" mode="according
"> -
- <div class="
according
"> -
<xsl:value-of select="
@n
"/> - </div>
- <div class="
- </xsl:template>
source
- <xsl:template match="
tei:witness
" mode="a
"> -
- <a class="
wit
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:attribute name="
title
"> -
<xsl:value-of select="
normalize-space(.)
"/> - </xsl:attribute>
- <xsl:attribute name="
- </a>
- <a class="
- </xsl:template>
source
- <xsl:template match="
tei:listWit
" mode="a
"> -
- <a class="
wit
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:for-each select="
tei:witness
"> - </xsl:for-each>
- <xsl:attribute name="
- </a>
- <a class="
- </xsl:template>
source
- <xsl:template match="
tei:witness
" mode="label
"> -
- <xsl:choose>
-
- <xsl:when test="
tei:label
"> -
<xsl:apply-templates select="
tei:label/node()
"/> - </xsl:when>
- <xsl:when test="
@n
"> -
<xsl:value-of select="
@n
"/> - </xsl:when>
- <xsl:when test="
@xml:id
"> -
<xsl:value-of select="
@xml:id
"/> - </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
tei:term
"> -
- <dfn>
-
<xsl:call-template name="
atts
"/> - </dfn>
- </xsl:template>
Indexables
source
- <xsl:template match="
tei:index
"> - </xsl:template>
source
- <xsl:template match="tei:addName | tei:affiliation | tei:country | tei:foreign | tei:forename | tei:geogName | tei:name | tei:origPlace | tei:orgName | tei:persName | tei:placeName | tei:repository | tei:roleName | tei:rs | tei:settlement | tei:surname">
-
- <xsl:choose>
-
<!--
Un identifiant, lien vers l'entrée d'index
-->- <xsl:when test="
@ref and substring(@ref,1,1)='#'
"> -
- <a>
-
- <xsl:for-each select="
key('id', substring(@ref, 2))[1]
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:attribute name="
title
"> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:for-each>
<xsl:call-template name="atts
"/> - <xsl:for-each select="
- </a>
- </xsl:when>
- <xsl:otherwise>
-
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
Notes
Notes de bas de page
source
- <xsl:template name="
notes
"> -
<!--
Les enfants dont on peut explorer les notes
-->- <xsl:variable name="
notes
"> -
- <xsl:if test="
$app
"> -
- <xsl:variable name="
apparatus
"> -
- <xsl:for-each select="
$text // tei:app
"> -
- <xsl:variable name="
html
"> -
<xsl:call-template name="
fn
"/> - </xsl:variable>
- <xsl:if test="
$html != ''
"> -
<xsl:call-template name="
note_retour
"/><xsl:copy-of select="$html
"/><!--regarder si la ligne est déjà ponctuée avant d'ajouter un point
-->- <xsl:choose>
-
<!--
Déja ponctué
--> - </xsl:choose>
- </xsl:if>
- <xsl:variable name="
- </xsl:for-each>
- <xsl:for-each select="
- </xsl:variable>
- <xsl:if test="
$apparatus != ''
"> -
- <p class="
apparatus
"> -
<xsl:copy-of select="
$apparatus
"/> - </p>
- <p class="
- </xsl:if>
- <xsl:variable name="
- </xsl:if>
<!--notes avec numérotation dans le texte, trier par type
-->- <xsl:for-each select="
$text //tei:*[@rend='note']
"> -
<xsl:sort select="
local-name()
"/><xsl:call-template name="fn
"/> - </xsl:for-each>
<!--notes numérotées par attribut @n, trier, attention à lettres et chiffres
-->- <xsl:for-each select="
$text //tei:note[@n]
"> -
<xsl:call-template name="
fn
"/> - </xsl:for-each>
<!--notes à numéroter automatiquement
-->- <xsl:for-each select="
$text // tei:note[not(@n)]
"> -
<xsl:call-template name="
fn
"/> - </xsl:for-each>
<!--Référence bibliographique de citation numérotée, enfant direct, dans un paragraphe, mais pas dans un div
-->- <xsl:for-each select="
$text //tei:cit[@n]
"> -
<xsl:call-template name="
fn
"/> - </xsl:for-each>
- <xsl:if test="
- </xsl:variable>
- <xsl:if test="
$notes != ''
"> -
- <div class="
notes
"> -
<hr width="
15%
" align="left
"/><xsl:copy-of select="$notes
"/> - </div>
- <div class="
- </xsl:if>
- <xsl:variable name="
- </xsl:template>
- $text : Les enfants dont on peut explorer les notes
Pour afficher des notes en fin de section.
Ce template est plus long que le texte lui-même.
source
- <xsl:template match="
tei:div[@type='notes']
"> -
- <div class="
notes
"> -
<hr width="
15%
" align="left
"/> - </div>
- <div class="
- </xsl:template>
source
- <xsl:template match="
tei:note | tei:*[@rend='note']
"> -
<xsl:call-template name="
note_appel
"/> - </xsl:template>
source
- <xsl:template match="
tei:ref[@type='note']
"> -
<xsl:call-template name="
note_appel
"/> - </xsl:template>
source
- <xsl:template name="
note_appel
"> -
- <xsl:variable name="
n
"> -
<xsl:call-template name="
n
"/> - </xsl:variable>
- <xsl:variable name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:variable>
<!--TODO, multi cibles
-->- <xsl:variable name="
target
"> -
- <xsl:choose>
-
- <xsl:when test="
@target
"> -
<xsl:value-of select="
substring-before(concat(@target, ' '), ' ')
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
id
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:variable>
- <a class="
refnote
" href="{$target}" id="{$id}
"> -
- <xsl:if test="
self::tei:note
"> -
- <xsl:variable name="
title
"> - </xsl:variable>
- <xsl:attribute name="
title
"> -
<xsl:value-of select="
normalize-space($title)
"/> - </xsl:attribute>
- <xsl:variable name="
- </xsl:if>
<xsl:value-of select="$n
"/> - <xsl:if test="
- </a>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template name="
note_texte
"> -
<xsl:text/>
- <div class="
note
"> -
<!--
identifiant de la note
-->- <xsl:attribute name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:attribute>
- <xsl:choose>
-
<!--
si la note est une suite de paragraphes, intégrer l'appel de note dans le premier paragraphe
-->- <xsl:when test="
* and not(*[local-name() != 'p'])
"> - <!--
not(text()[. != '']) and
-->- <xsl:for-each select="
*
"> -
- <p>
-
- <xsl:choose>
-
- <xsl:when test="
position() = 1
"> -
- <xsl:for-each select="
..
"> -
<xsl:call-template name="
note_retour
"/> - </xsl:for-each>
<xsl:text/> - <xsl:for-each select="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </p>
- </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
note_retour
"/><xsl:text/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:attribute name="
- </div>
- <div class="
- </xsl:template>
source
- <xsl:template name="
note_retour
"> -
- <a class="
note
"> -
- <xsl:attribute name="
href
"> -
- <xsl:choose>
-
- <xsl:when test="
@target
"> -
<xsl:value-of select="
substring-before(concat(@target, ' '), ' ')
"/> - </xsl:when>
- <xsl:otherwise>
-
<!--
identifiant de l'ancre
-->- <xsl:call-template name="
id
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:attribute>
- <xsl:attribute name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:attribute>
<xsl:call-template name="n
"/> - <xsl:attribute name="
- </a>
- <a class="
- </xsl:template>
source
- <xsl:template match="
node()
" mode="fn
" name="fn
"> -
- <xsl:choose>
-
<!--
ne pas sortir en bas de page les notes blocs
--><xsl:when test="parent::tei:div or parent::tei:front or parent::tei:app"/>- <xsl:when test="
self::tei:note
"> -
<xsl:call-template name="
note_texte
"/> - </xsl:when>
<xsl:when test="self::tei:app[@rend='table']
"/><!--Variante, en note de bas de page
-->- <xsl:when test="
self::tei:app
"> -
- <span>
-
<xsl:call-template name="
atts
"/><xsl:apply-templates select="tei:rdg | tei:note | tei:witDetail
"/> - </span>
- </xsl:when>
<!--Note normalisée pour ajout
-->- <xsl:when test="
self::tei:supplied
"> -
<-- Pas besoin de rappel pour note en contexte <xsl:choose> <xsl:when test="local-name(..)='w'"> <xsl:apply-templates select=".." mode="title"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates mode="title"/> </xsl:otherwise> </xsl:choose> -->
- <xsl:if test="
@source
"> -
<xsl:text/>
- <i>
-
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:if>
- <xsl:if test="
@reason
"> -
<xsl:text/>
- <i>
-
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:if>
- <xsl:if test="
- </xsl:when>
<!--Note normalisée pour correction
-->- <xsl:when test="
self::tei:choice
"> -
<-- pas de rappel de la forme corrigée <xsl:apply-templates select="tei:corr/node() | tei:expan/node() | tei:reg/node()"/> <xsl:text> </xsl:text> -->
- <xsl:choose>
-
- <xsl:when test="
tei:corr/@source
"> -
- <i>
-
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
<xsl:apply-templates select="tei:sic/node() | tei:abbr/node() | tei:orig/node()
"/> - </xsl:when>
<!--chroniques latines, citations numérotées
-->- <xsl:when test="
self::tei:cit[@n]
"> -
<xsl:text/>
- <div>
-
<xsl:call-template name="
atts
"/><xsl:call-template name="note_retour
"/><xsl:text/><xsl:apply-templates select="tei:bibl
"/> - </div>
- </xsl:when>
<!--entité nommée avec référence note
--> - <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
tei:p//tei:cit[@n]
"> -
- <span>
-
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <xsl:for-each select="
*
"> -
- <xsl:choose>
-
<xsl:when test="
self::tei:bibl
"/>- <xsl:otherwise>
-
<xsl:text/><xsl:apply-templates select="
.
"/> - </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:variable name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:variable>
- <a class="
refnote
" href="#{$id}" id="_{$id}
"> -
<!--
xsl:attribute name="onclick">if(this.cloc) {this.parentNode.className='cit_n'; this.cloc=null; } else { this.cloc=true; this.parentNode.className='cit_n_bibl'}; return true;</xsl:attribute
--><xsl:value-of select="@n
"/> - </a>
- <span class="
listBibl
"> -
<xsl:apply-templates select="
tei:bibl
"/> - </span>
- <xsl:call-template name="
- </span>
- </xsl:template>
source
- <xsl:template match="
tei:div/tei:note | tei:front/tei:note
"> -
- <xsl:choose>
-
- <xsl:when test="
not(tei:p|tei:div)
"> -
- <p>
-
<xsl:call-template name="
atts
"/> - </p>
- </xsl:when>
- <xsl:otherwise>
-
- <div>
-
<xsl:call-template name="
atts
"/> - </div>
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
tei:div[@type='notes']/tei:note
" priority="5
"> -
<xsl:call-template name="
note_texte
"/> - </xsl:template>
Apparat critique
source
- <xsl:template match="
tei:app
"> -
- <xsl:variable name="
el
"> - </xsl:variable>
- <xsl:element name="
{$el}
"> -
- <xsl:attribute name="
id
"> -
- <xsl:call-template name="
id
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:attribute>
<xsl:attribute name="onclick
">if(this.cloc) {this.className='app'; this.cloc=null; } else { this.cloc=true; this.className='apprdg'}; return true;</xsl:attribute><!--ajouts et omissions
--><xsl:apply-templates select="tei:lem
"/><xsl:call-template name="note_appel
"/>- <span class="
rdgList
"> -
<xsl:text/><xsl:apply-templates select="
tei:rdg | tei:witDetail | tei:note
"/><xsl:text/> - </span>
- <xsl:attribute name="
- </xsl:element>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
tei:lem
"> -
<!--
généralement, un espace avant, sauf si apostrophe
-->- <xsl:if test="translate (substring($prev, string-length($prev)), concat($apos, '’'), '') != ''">
-
<xsl:text/>
- </xsl:if>
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- <xsl:if test="
- </xsl:template>
source
- <xsl:template match="
tei:rdg | tei:witDetail
"> -
- <xsl:choose>
-
<!--
même leçon que le précédent
--> - </xsl:choose>
- <span>
-
<xsl:call-template name="
atts
"/><!--si même leçon que la précédente, pas la pein de la copier
-->- <xsl:choose>
-
<xsl:when test="
. = preceding-sibling::tei:rdg
"/> - </xsl:choose>
<xsl:call-template name="anchors
"/>- <xsl:choose>
-
<!--
Mot clé, chercher un intitulé
-->- <xsl:when test="
@cause and normalize-space(@cause) != ''
"> -
<xsl:text/>
- <i>
-
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:when>
<!--texte libre
-->- <xsl:when test="@hand|@place and normalize-space(@hand|@place) != ''">
-
<xsl:text/>
- <i>
-
<xsl:value-of select="
@hand|@place
"/> - </i>
- </xsl:when>
<!--suivant identique, lui laisser l'intitulé automatique
--><xsl:when test=". = following-sibling::tei:rdg
"/><!--Rien en principal, c'est une addition
-->- <xsl:when test="
../lem = ''
"> -
<xsl:text/>
- <i>
-
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:when>
<!--Rien à ajouter, c'est une omission
-->- <xsl:when test="
. = ''
"> -
<xsl:text/>
- <i>
-
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </i>
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </span>
- </xsl:template>
source
- <xsl:template match="
tei:abbr
"> -
- <abbr>
-
<xsl:call-template name="
atts
"/> - </abbr>
- </xsl:template>
source
- <xsl:template match="
tei:expan
"> - </xsl:template>
source
- <xsl:template match="
tei:ex
"> -
- <ins>
-
<xsl:call-template name="
atts
"/> - </ins>
- </xsl:template>
source
- <xsl:template match="
tei:choice/tei:supplied
"> -
- <ins>
-
- <xsl:choose>
-
- <xsl:when test="
@source
"> -
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <small class="
tip
"> -
<xsl:call-template name="
fn
"/> - </small>
- <xsl:call-template name="
- </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
atts
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </ins>
- </xsl:template>
source
- <xsl:template match="
tei:supplied
"> - </xsl:template>
source
- <xsl:template match="
@source
" mode="title
"> -
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:template>
source
- <xsl:template match="
@reason
" mode="title
"> -
<xsl:value-of select="
.
"/> - </xsl:template>
source
- <xsl:template match="
tei:add
"> -
- <ins>
-
<xsl:call-template name="
atts
"/> - </ins>
- </xsl:template>
source
- <xsl:template match="
tei:del
"> -
- <del>
-
<xsl:call-template name="
atts
"/>- <xsl:if test="
@ana
"> -
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:if>
- <xsl:if test="
- </del>
- </xsl:template>
source
- <xsl:template match="
tei:choice
"> -
- <span>
-
- <xsl:choose>
-
- <xsl:when test="
*/@source
"> -
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <small class="
tip
"> -
<xsl:call-template name="
fn
"/> - </small>
- <xsl:call-template name="
- </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
atts
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
<xsl:apply-templates select="*
"/> - </span>
- </xsl:template>
source
- <xsl:template match="tei:choice/tei:corr | tei:choice/tei:reg | tei:choice[tei:abbr]/tei:expan">
- </xsl:template>
source
- <xsl:template match="tei:choice/tei:sic | tei:choice/tei:abbr | tei:choice/tei:orig">
-
- <del>
-
<xsl:call-template name="
atts
"/><!--Espace avant un mot ? attention si l'alternative est au milieu d'un mot
--> - </del>
- </xsl:template>
source
- <xsl:template match="
tei:interp
"> -
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="
tei:unclear
"> - </xsl:template>
source
- <xsl:template match="
tei:gap
"> -
- <span class="
gap
"> -
- <xsl:attribute name="
title
"> -
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:if test="
@extent
"> -
<xsl:value-of select="
@extent
"/><xsl:text/>- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:if>
- <xsl:call-template name="
- </xsl:attribute>
- <xsl:choose>
-
- <xsl:when test="
@extent and not(text())
"> -
<xsl:value-of select="substring('........................................................................................................', 1, @extent)"/>
- </xsl:when>
- <xsl:when test="
@reason
"> -
- <xsl:call-template name="
label
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- <xsl:attribute name="
- </span>
- <span class="
- </xsl:template>
source
- <xsl:template match="
tei:app/tei:note
"> - </xsl:template>
source
- <xsl:template match="
tei:damage
"> -
- <span>
-
<xsl:call-template name="
atts
"/> - </span>
- </xsl:template>
source
- <xsl:template match="
tei:space
"> - </xsl:template>
source
- <xsl:template match="
tei:app[@rend='table']
"> -
- <table>
-
<xsl:call-template name="
atts
"/><!--afficher l'intitulé de witness
-->- <xsl:for-each select="
*[. != '']
"> -
- <xsl:variable name="
pos
"> -
<xsl:number/>
- </xsl:variable>
- <th width="
{floor(100 div count(../tei:rdg|../tei:lem))} %
"> -
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </th>
- <xsl:variable name="
- </xsl:for-each>
- <tr>
-
- <xsl:for-each select="
*[. != '']
"> -
- <td valign="
top
"> -
- <xsl:choose>
-
- <xsl:when test="
position()=1
"> -
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:call-template name="
atts
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </td>
- <td valign="
- </xsl:for-each>
- <xsl:for-each select="
- </tr>
- <xsl:for-each select="
- </table>
- </xsl:template>
source
- <xsl:template name="
anchors
"> -
<!--
nom de l'attribut sur lequel boucler (permet aussi d'adapter le comportement)
--><!--valeur initiale d'attribut à reprendre
--><!--le n° de témoin
-->- <xsl:choose>
-
<!--
plus rien à afficher
--><xsl:when test="normalize-space($anchors) = ''
"/><!--code qui n'est pas une ancre (serait-ce un lien ?)
-->- <xsl:when test="
not(starts-with($anchors, '#'))
"> -
<xsl:text/>
- <i class="
{$att}
"> -
<xsl:value-of select="
$id
"/> - </i>
- <i class="
- </xsl:when>
<!--l'ancre répond, faire afficher un lien
--><!--ancre absente dans le document
-->- <xsl:otherwise>
-
<xsl:text/>
- <i class="
{$att}
"> -
<xsl:value-of select="
substring-after($id, '#')
"/> - </i>
- <i class="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:if test="
$suivant != ''
"> -
<xsl:text/>
- <xsl:call-template name="
anchors
"> - </xsl:call-template>
- <xsl:call-template name="
- </xsl:if>
- </xsl:template>
- $att : nom de l'attribut sur lequel boucler (permet aussi d'adapter le comportement)
- $anchors : valeur initiale d'attribut à reprendre
Modes
Un mode permet de parcourir l'arbre du document source afin d'en extraire d'autres informations que le parcours par défaut. Dans le traitement de documents écrits, les modes sont souvent utilisés pour extraire une table des matières, des index, ou les notes qui courrent dans le texte. Nous utilisons aussi les modes pour des vues alternatives sur certains noeuds, par exemple un identifiant, un titre court (label), ou un lien. Cette syntaxe permet d'employer toute la souplesse de l'héritage et la surcharge en XSLT. Il est apparu que certains processeurs XSLT (essentiellemen xsltproc) ont pu être peu performants sur ces écritures, il en reste parfois des “modes” implémentés sous forme de templates nommés, qui énumère des conditions sous forme d'une chaîne d'alternatives (choose/when+).
Atributs
Un traitement centralisé des attributs TEI permet d'assurer la régularité de certains attributs HTML, notamment les règles de construction d'identifants, ou de classe CSS.
source
- <xsl:template name="
atts
"> -
<!--
permet d'ajouter une classe CSS spécifique à la suite des automatiques
--><xsl:param name="class
"/><!--comportement par défaut d'attribution d'une classe CSS
-->- <xsl:call-template name="
class
"> - </xsl:call-template>
<!--identification obligatoire pour certains éléments
-->- <xsl:choose>
-
- <xsl:when test="
@id
"> -
- <xsl:attribute name="
id
"> -
<xsl:value-of select="
@id
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:when>
- <xsl:when test="
@xml:id
"> -
- <xsl:attribute name="
id
"> -
<xsl:value-of select="
@xml:id
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:when>
- <xsl:when test="self::tei:div or self::tei:div0 or self::tei:div1 or self::tei:div2 or self::tei:div3 or self::tei:div4 or self::tei:div5 or self::tei:div6 or self::tei:div7 or self::tei:group or self::tei:text or contains($els-unique, concat(' ', local-name(), ' '))">
-
- <xsl:attribute name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:when>
- <xsl:when test="
generate-id(..) = generate-id(/*/tei:text)
"> -
- <xsl:attribute name="
id
"> -
<xsl:call-template name="
id
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
<!--Procéder les autres attributs
--><xsl:apply-templates select="@*
"/> - <xsl:call-template name="
- </xsl:template>
- $class : permet d'ajouter une classe CSS spécifique à la suite des automatiques
@*, template généralement appelé à l'ouverture de tout élément HTML permettant de régler différents comportements par défaut. PERF
source
- <xsl:template name="
class
"> -
<xsl:param name="
class
"/><!--si @rend est utilisé comme forme régulière, ne pas l'utiliser comme nom de classe
-->- <xsl:variable name="
value
"> -
<!--
nom de l'élément lorsqu'il n'a pas d'équivalent direct en HTML
-->- <xsl:if test="not(contains( ' abbr add cell code del eg emph item list p q ref row table ' , concat(' ', local-name(), ' ')))">
-
<xsl:value-of select="
local-name()
"/> - </xsl:if>
<xsl:text/><xsl:value-of select="@type
"/><xsl:text/><xsl:value-of select="@role
"/><xsl:text/><xsl:value-of select="@ana
"/><xsl:text/><xsl:value-of select="@place
"/><!--la langue comme classe
--><xsl:text/><xsl:value-of select="@xml:lang
"/><!--valeur passée en paramètre
--><xsl:text/><xsl:value-of select="$class
"/><xsl:text/><xsl:value-of select="@rend
"/> - <xsl:if test="
- </xsl:variable>
- <xsl:if test="
$norm != ''
"> -
- <xsl:attribute name="
class
"> -
<xsl:value-of select="
$norm
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
- <xsl:variable name="
- </xsl:template>
- $class :
source
source
- <xsl:template match="
@ref | @target | @lemmaRef
" name="ref
"> -
- <xsl:choose>
-
<!--
Que faire avec witDetail/@target ?
--><xsl:when test="../@wit
"/><!--cache mail
-->- <xsl:when test="
contains($path, '@')
"> -
<xsl:attribute name="
href
"/>- <xsl:attribute name="
onmouseover
"> -
<xsl:value-of select="
substring-before($path, '@')
"/><xsl:value-of select="substring-after($path, '@')
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:when>
<!--lien interne à une ancre du fichier XML, déléguer au split
-->- <xsl:when test="
starts-with($path, '#')
"> -
<!--
perf mode href ?
-->- <xsl:for-each select="
$target[1]
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:attribute name="
href
"> -
<xsl:value-of select="
$path
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
- $path :
source
source
- <xsl:template match="
tei:*
" mode="href
" name="href
"> -
- <xsl:choose>
-
- <xsl:when test="
@xml:id
"> -
<xsl:value-of select="
@xml:id
"/> - </xsl:when>
- <xsl:when test="
@id
"> -
<xsl:value-of select="
@id
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
id
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
@xml:lang | @xml:id | @id
"> -
- <xsl:attribute name="
{local-name(.)}
"> -
<xsl:value-of select="
.
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:template>
source
- <xsl:template match="
@xml:base
"> -
<xsl:copy-of select="
.
"/> - </xsl:template>
source
- <xsl:template match="@*[ namespace-uri(.) = 'http://www.w3.org/1999/xhtml']">
-
- <xsl:attribute name="
{local-name(.)}
"> -
<xsl:value-of select="
.
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:template>
source
- <xsl:template match="
html:*
"> -
- <xsl:element name="
{local-name()}
"> -
<xsl:copy-of select="
@*
"/> - </xsl:element>
- <xsl:element name="
- </xsl:template>
mode="n" (numéro)
Beaucoup de composants d'un texte peuvent être identifiés par un numéro notamment les différents types de notes (apparat critique, glose historique, philologique…), ou les sections hiérarchiques. Un tel numéro peut etre très utile pour
source
- <xsl:template match="
node()
" mode="n
" name="n
"> -
<!--
PERF
-->- <xsl:choose>
-
- <xsl:when test="
@n
"> -
<xsl:value-of select="
@n
"/> - </xsl:when>
<!--numérotation hiérarchique des sections
-->- <xsl:when test="self::tei:div0 or self::tei:div1 or self::tei:div2 or self::tei:div3 or self::tei:div4 or self::tei:div5 or self::tei:div6 or self::tei:div7">
-
<xsl:number count="tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7" level="
multiple
" format="1.1
"/> - </xsl:when>
- <xsl:when test="
number($id)
"> -
<xsl:value-of select="
$id
"/> - </xsl:when>
<!--textes non identifiés (ou numérotés)
--><!--Split, à tester
-->- <xsl:when test="
ancestor::*[key('split', generate-id())]
"> -
- <xsl:choose>
-
<!--
PERF tei:note[not(@n) and not(ancestor::tei:app)]
-->- <xsl:when test="
self::tei:note
"> -
<xsl:number count="
tei:note[not(@n) and not(ancestor::tei:app)]
" level="any
" from="*[key('split', generate-id())]
"/> - </xsl:when>
- <xsl:when test="
- </xsl:choose>
- </xsl:when>
<!--Numérotation automatique des notes de commentaire dans un groupe de texte
--><!--Numérotation automatique des notes d'apparat dans un groupe de textes
-->- <xsl:when test="
self::tei:app
"> -
<xsl:number count="
tei:app[not(@n)]
" format="a
" level="any
" from="tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7 | tei:div | tei:front | tei:back | tei:text"/> - </xsl:when>
<!--VJ: ttes le notes sauf les notes libres d'apparat critique (app)
-->- <xsl:when test="
self::tei:note
"> -
<xsl:number count="tei:note[not(@n) and local-name(parent::node()) != 'app']" level="
any
" from="tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7 | tei:div | tei:front | tei:back | tei:text"/> - </xsl:when>
<!--Renvoi à une note
-->- <xsl:when test="
self::tei:ref[@type='note']
"> -
- <xsl:for-each select="
key('id', substring-after(@target, '#'))[1]
"> -
<xsl:call-template name="
n
"/> - </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
<!--Par défaut, un élément est numéroté en ordre séquentiel dans le document, en distinguant cependant texte et paratexte
-->- <xsl:otherwise>
-
<xsl:number level="
any
" from="/*/tei:text/tei:body | /*/tei:text/tei:front | /*/tei:text/tei:back"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
mode="id" (identifiant)
Mode permettant d'associer un identifiant unique dans le contexte d'un document, notamment pour établir cible et source de liens.
source
- <xsl:template match="
*
" mode="id
" name="id
"> -
<xsl:param name="
prefix
"/><xsl:param name="suffix
"/><xsl:value-of select="$prefix
"/>- <xsl:choose>
-
- <xsl:when test="
@xml:id
"> -
<xsl:value-of select="
@xml:id
"/> - </xsl:when>
- <xsl:when test="
@id
"> -
<xsl:value-of select="
@id
"/> - </xsl:when>
<!--hiérarchie simple de div
-->- <xsl:when test="
self::tei:div and not(ancestor::tei:group)
"> -
- <xsl:if test="
$bookId != ''
"> -
<xsl:value-of select="
$bookId
"/> - </xsl:if>
- <xsl:if test="
- </xsl:when>
<!--Recherche d'un index
--><xsl:when test="/tei:TEI/tei:text/tei:front and count(.|/tei:TEI/tei:text/tei:front)=1">index</xsl:when><xsl:when test="not(/tei:TEI/tei:text/tei:front) and count(.|/tei:TEI/tei:text/tei:group|/tei:TEI/tei:text/tei:body)=1">index</xsl:when><!--éléments hauts
-->- <xsl:when test="
count(.. | /*) = 1
"> -
- <xsl:if test="
$bookId != ''
"> -
<xsl:value-of select="
$bookId
"/> - </xsl:if>
<xsl:value-of select="local-name()
"/> - <xsl:if test="
- </xsl:when>
<!--groupe de textes
-->- <xsl:when test="
self::tei:group
"> -
- <xsl:if test="
$bookId != ''
"> -
<xsl:value-of select="
$bookId
"/> - </xsl:if>
<xsl:value-of select="local-name()
"/> - <xsl:if test="
- </xsl:when>
- <xsl:when test="
true()
"> -
- <xsl:if test="
$bookId != ''
"> -
<xsl:value-of select="
$bookId
"/> - </xsl:if>
<xsl:value-of select="local-name()
"/><xsl:call-template name="n
"/> - <xsl:if test="
- </xsl:when>
<!--numérotation des notes, préfixées par la section
-->- <xsl:when test="self::tei:note or self::tei:app or self::tei:cit[@n]">
-
- <xsl:choose>
-
- <xsl:when test="
ancestor::*[@xml:id]
"> -
<xsl:value-of select="
ancestor::*[@xml:id][1]/@xml:id
"/> - </xsl:when>
- <xsl:when test="
ancestor::tei:text[parent::tei:group]
"> -
- <xsl:for-each select="
ancestor::tei:text[1]
"> -
<xsl:call-template name="
n
"/> - </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
- <xsl:when test="
ancestor::*[key('split', generate-id())]
"> -
- <xsl:for-each select="
ancestor::*[key('split', generate-id())][1]
"> -
<xsl:call-template name="
id
"/> - </xsl:for-each>
- <xsl:for-each select="
- </xsl:when>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
n
"> -
<xsl:call-template name="
n
"/> - </xsl:variable>
<xsl:value-of select="translate($n, '()-', '')
"/> - </xsl:when>
<-- Où ? <xsl:when test="@n and ancestor::*[@xml:id][local-name() != local-name(/*)]"> <xsl:value-of select="ancestor::*[@xml:id][1]/@xml:id"/> <xsl:text>-</xsl:text> <xsl:value-of select="@n"/> </xsl:when> -->
<!--lien vers une ancre
-->- <xsl:when test="starts-with(@target, '#') and not(contains(@target, ' '))">
-
<xsl:value-of select="
substring(@target, 2)
"/> - </xsl:when>
<!--éléments uniques identifiables par leur nom
-->- <xsl:when test="contains($els-unique, concat(' ', local-name(), ' '))">
-
- <xsl:if test="
$bookId != ''
"> -
<xsl:value-of select="
$bookId
"/> - </xsl:if>
<xsl:value-of select="local-name()
"/> - <xsl:if test="
- </xsl:when>
<!--Mauvaise solution par défaut
-->- <xsl:otherwise>
-
<xsl:value-of select="
generate-id()
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
<xsl:value-of select="$suffix
"/> - </xsl:template>
- $prefix :
- $suffix :
Identifiant, @xml:id automatique si pas d'attribut. Paramètres de préfixe et de suffixe servent parfois, par exemple pour distinguer l'identifiant d'une note, ou de son appel. PERF
mode="a" (lien html)
Générer un lien html <a href="href" title="title">label</a> pour un élément, notamment pour une table des matières, mais aussi pour le liage dans l'apparat critique. Ce mode fait usage des modes :
- “label” : titre court pour l'intitulé du lien
- “title” : titre long pour une bulle surgissante
- “href” : lien URI relatif fonctionnant dans le contexte de la publication (en un ou plusieurs fichiers)
source
- <xsl:template match="
node()
" mode="a
"> - </xsl:template>
source
- <xsl:template match="tei:group | tei:text | tei:front | tei:body | tei:back | tei:div | tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7" mode="
a
"> -
<xsl:param name="
class
"/>- <a>
-
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:if test="
$class
"> -
- <xsl:attribute name="
class
"> -
<xsl:value-of select="
$class
"/> - </xsl:attribute>
- <xsl:attribute name="
- </xsl:if>
<!--titre long
-->- <xsl:variable name="
title
"> - </xsl:variable>
<!--titre court
-->- <xsl:variable name="
label
"> - </xsl:variable>
- <xsl:choose>
-
- <xsl:when test="
normalize-space($label)=''
"> -
<xsl:copy-of select="
$title
"/> - </xsl:when>
- <xsl:when test="
normalize-space($title)=''
"> -
<xsl:copy-of select="
$label
"/> - </xsl:when>
- <xsl:when test="
$title = $label
"> -
<xsl:copy-of select="
$label
"/> - </xsl:when>
- <xsl:otherwise>
-
- <xsl:attribute name="
title
"> -
<xsl:value-of select="
normalize-space($title)
"/> - </xsl:attribute>
<xsl:copy-of select="$label
"/> - <xsl:attribute name="
- </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
<!--compte d'items
--> - <xsl:attribute name="
- </a>
- </xsl:template>
- $class :
source
- <xsl:template match="
tei:principal
" mode="a
"> -
- <a class="
resp
"> -
- <xsl:attribute name="
href
"> -
<xsl:call-template name="
href
"/> - </xsl:attribute>
- <xsl:attribute name="
title
"> -
<xsl:value-of select="
normalize-space(.)
"/> - </xsl:attribute>
<xsl:value-of select="@xml:id | @id
"/> - <xsl:attribute name="
- </a>
- <a class="
- </xsl:template>
source
- <xsl:template match="
tei:name[@xml:id]
" mode="a
"> -
- <a href="#{@xml:id}">
-
- <xsl:variable name="
text
"> -
<xsl:apply-templates select="
text()
"/> - </xsl:variable>
- <xsl:choose>
-
- <xsl:when test="
tei:addName|tei:forename|tei:surname
"> -
<xsl:apply-templates select="
tei:addName|tei:forename|tei:surname
"/> - </xsl:when>
- <xsl:when test="
normalize-space($text) != ''
"> -
<xsl:value-of select="
normalize-space($text)
"/> - </xsl:when>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
- </a>
- </xsl:template>
mode="title" (titre long)
Ce mode permet de traverser un arbre jusqu'à trouver un élément satisfaisant pour le titrer (souvent
). Une fois cet elément trouvé, le contenu est procédé en mode texte afin de passer les notes, résoudre les césures, ou les alternatives éditoriales.source
- <xsl:template match="
*
" mode="title
" priority="-1
"> -
- <xsl:variable name="
label
"> -
<xsl:call-template name="
label
"/> - </xsl:variable>
- <xsl:if test="
$label != local-name()
"> -
<xsl:value-of select="
$label
"/> - </xsl:if>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="tei:back | tei:body | tei:div | tei:div0 | tei:div1 | tei:div2 | tei:div3 | tei:div4 | tei:div5 | tei:div6 | tei:div7 | tei:front | tei:group | tei:TEI | tei:text | tei:titlePage" name="
title
" mode="title
"> -
<!--
Numérotation construite (?)
-->- <xsl:choose>
-
<!--
la date est comme un titre (ex, acte)
--><!--Après front, supposé plus affichable qu'un teiHeader
--><!--Groupement de sections dont le titre est porté par la première ??
--><!--ex: body/div0
--><-- <xsl:when test="tei:div[1]/tei:head"> <xsl:apply-templates select="tei:div[1]" mode="title"/> </xsl:when> -->
- <xsl:when test="
@n
"> -
<xsl:value-of select="
@n
"/> - </xsl:when>
- <xsl:when test="
@type
"> -
<xsl:value-of select="
@type
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:call-template name="
n
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- </xsl:template>
source
- <xsl:template match="
*
" mode="title
"> - </xsl:template>
source
- <xsl:template match="
tei:emph | tei:hi | tei:name | tei:num
" mode="title
"> -
<xsl:apply-templates select="
.
"/> - </xsl:template>
source
- <xsl:template match="
tei:head | tei:docTitle | tei:docDate | tei:title
" mode="title
"> -
<xsl:apply-templates mode="
title
"/> - </xsl:template>
source
- <xsl:template match="
tei:titlePart
" mode="title
"> -
<xsl:apply-templates mode="
title
"/> - </xsl:template>
source
- <xsl:template name="
titleBranch
"> -
- <xsl:variable name="
titleBranch
"> -
- <xsl:for-each select="
ancestor-or-self::*
"> -
- <xsl:variable name="
branch
"> - </xsl:variable>
- <xsl:choose>
-
<!--
ramasser le teiHeader (?)
--><xsl:when test="self::tei:TEI
"/><!--titre fabriqué, passer
--><xsl:when test="contains($branchNorm, '[')
"/><!--déjà ponctué, ne rien faire
-->- <xsl:when test="contains(';.,', substring($branchNorm, string-length($branchNorm)) )">
-
<xsl:value-of select="
$branchNorm
"/><xsl:text/> - </xsl:when>
- <xsl:when test="
position() = last()
"> -
<xsl:value-of select="
$branchNorm
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:value-of select="
$branchNorm
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
- </xsl:for-each>
- <xsl:for-each select="
- </xsl:variable>
- <xsl:choose>
-
- <xsl:when test="
normalize-space($titleBranch) = ''
"> -
<xsl:value-of select="
$corpusTitle
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:value-of select="
normalize-space($titleBranch)
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
- </xsl:template>
source
- <xsl:template match="
*
" mode="label
"> - </xsl:template>
source
- <xsl:template match="
tei:date
" mode="label
"> -
- <xsl:variable name="
notBefore
"> -
<xsl:value-of select="
substring(@notBefore, 1, 4)
"/> - </xsl:variable>
- <xsl:variable name="
notAfter
"> -
<xsl:value-of select="
substring(@notAfter, 1, 4)
"/> - </xsl:variable>
- <xsl:variable name="
when
"> -
<xsl:value-of select="
substring(@when, 1, 4)
"/> - </xsl:variable>
- <xsl:choose>
-
- <xsl:when test="
$when != ''
"> -
<xsl:value-of select="
number($when)
"/> - </xsl:when>
- <xsl:when test="
$notAfter = $notBefore and $notAfter != ''
"> -
<xsl:value-of select="
number($notAfter)
"/> - </xsl:when>
- <xsl:when test="
@notBefore and @notAfter
"> -
<xsl:value-of select="
number($notBefore)
"/><xsl:value-of select="number($notAfter)
"/> - </xsl:when>
- <xsl:when test="
@notBefore
"> -
<xsl:value-of select="
number($notBefore)
"/> - </xsl:when>
- <xsl:when test="
@notAfter
"> -
<xsl:value-of select="
number($notAfter)
"/> - </xsl:when>
- <xsl:otherwise>
-
<xsl:value-of select="
.
"/> - </xsl:otherwise>
- <xsl:when test="
- </xsl:choose>
- <xsl:variable name="
- </xsl:template>
mode="ul" (arbre de matières)
Le mode table des matières génère une liste hiérarchique (html : ul/li+/ul*)
Dégager une ligne biliographique d'un élément, avec des enregistrements bibliographique structurés.
Ex : L'édit de Nantes et ses antécédents (1562-1598), dir. Bernard Barbiche, 2e éd., 2009 (Editions en ligne de l'Ecole des chartes, 5), http://elec.enc.sorbonne.fr/editsdepacification.
source
source
/* | /*/tei:text
" mode="ul
">ul
"/>source
tei:group/tei:text
" mode="ul
">ul
"/>source
ul
"> un truc pour pouvoir maintenir ouvert des niveaux de table des matières
--> profondeur limite
--> Profondeur dépassée, arrêter
-->$depth <":" 1
"/> Pas d'enfants, arrêter
-->ul
"/> enfants
-->$class
">class
">$class
"/><-- passer le premier item s'il n'a pas de titre alors que le parent en a un
not(tei:head|tei:docTitle|tei:front|tei:titlePage|tei:titlePart) and tei:div[1]/tei:head
contains(' head docTitle front titlePage titlePart ', concat(' ', local-name(preceding-sibling::tei:*[1]), ' '))
and not(tei:head|tei:docTitle|tei:front|tei:titlePage|tei:titlePart)
-->
Garder les enfants en mémoire avant d'affecter le bon bouton à l'item
-->ul
">.
" mode="ul
">class
"/>normalize-space($ul)=''
"/>$ul
"/>
sectionnement, traversersource
tei:fileDesc
" mode="bibl
"> titre, requis
-->tei:titleStmt/tei:principal
"> direction, requis
-->tei:titleStmt/tei:principal
">.
"/> édition optionnel
-->tei:editionStmt/@n
">tei:editionStmt/@n
"/>date
"> date, requis
-->tei:publicationStmt/tei:date
"/> Collection, optionnel
-->$date != '' and tei:publicationStmt/tei:idno
">$date
"/> URI de référence, requis
-->tei:publicationStmt/tei:idno
"/>mode="bibl" (ligne bibliographique)
source
tei:seriesStmt
" mode="bibl
">atts
"/>*[not(@type='URI')]
">.
"/>position() = last()
"/>source
tei:title
" mode="bibl
">atts
"/>
Ne pas procéder revisionDesc ici
-->