Sommaires
Sommaire d’une édition
Le sommaire d’une édition est disponible à l’URL http://[host]:[port]/[edition]/sommaire.html
Par exemple :
http://localhost:17002/mon-edition/sommaire.html
Par défaut, la page de sommaire liste les documents présents dans la collection, par ordre alphabétique, en affichant :
- pour la TEI, les éléments :
/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt
- pour l’EAD, les éléments :
/ead:ead/ead:eadheader/ead:filedesc/ead:titlestmt
Les requêtes XQuery correspondantes se trouvent dans le fichier [projet-]MaX/rxq/toc.xqm
Le résultat de la requête est ensuite transformé par la xsl [projet-]MaX/ui/xsl/core/toc.xsl
Dans le cas où les fichiers XML sont organisés en dossiers et sous-dossiers, l’arborescence est restituée dans le sommaire. Voir l’édition de démonstration EAD.
Surcharge du comportement
Il est possible de :
- modifier la XQuery afin de modifier les entrées listées dans le sommaire (ou leur ordre de tri),
- modifier la XSL transformant cette liste des entrées au format HTML.
Modification de la XQuery
Pour modifier la Xquery, il convient de :
- Créer un fichier toc.xq dans le dossier [projet-]editions/[edition]/xq.
-
Y rédiger une requête Xquery prenant en compte 3 paramètres :
Exemple de squelette d’une telle XQuery, qui permet de classer des fichiers XML par ordre de numérotation :
declare variable $baseURI external;
declare variable $dbPath external;
declare variable $project external;
declare variable $doc external;
<div id="toc">
<ul>
{
for $doc in collection($dbPath)/*:TEI
let $titre := $doc/*:teiHeader/*:fileDesc/*:titleStmt/*:title
let $num := number($doc//*:titlePart)
order by $num
return
<li data-href="{concat('doc/',tokenize(base-uri($titre),'/')[last()])}">{$titre}</li>
}
</ul>
</div>
Afin d’être compatible avec la XSL de la table des matières par défaut de MaX (fichier [projet-]MaX/ui/xsl/core/toc.xsl), cette XQuery doit générer
un élément <ul>
composé d’éléments <li>
(eux-mêmes composés d’éléments <ul>
s’il y a besoin de listes imbriquées). Les valeurs des liens devront être renseignées en valeur de l’attribut data-href de l’élément <li>
.
Exemple de listing (généré par la XQuery par défaut de MaX) compatible avec [projet-]MaX/ui/xsl/core/toc.xsl :
declare variable $baseURI external;
declare variable $dbPath external;
declare variable $project external;
<div>
<ul>
<li data-depth="0" data-href="/demo_lorem/sommaire/demo_align_fr.xml">
<title xmlns="http://www.tei-c.org/ns/1.0">Lipsum aligné - Version française / traduction latine.</title>
</li>
<li data-depth="0" data-href="/demo_lorem/sommaire/demo_align_lat.xml">
<title xmlns="http://www.tei-c.org/ns/1.0">Lipsum - Version Latine.</title>
</li>
<li data-depth="0" data-href="/demo_lorem/sommaire/demo_lorem.xml">
<title xmlns="http://www.tei-c.org/ns/1.0">Lorem Ipsum <lb></lb>In <hi rend="small-caps">MaX</hi> - Corrections, notes & sauts de page</title>
</li>
<li data-depth="0" data-href="/demo_lorem/sommaire/demo_lorem_2.xml">
<title xmlns="http://www.tei-c.org/ns/1.0">Lorem Ipsum In MaX - Tome 2. Apparat critique</title>
</li>
<li data-depth="0" data-href="/demo_lorem/sommaire/demo_lorem_3.xml">
<title xmlns="http://www.tei-c.org/ns/1.0">Lorem Ipsum in MaX - Tome 3. Images et Équations</title>
</li>
</ul>
</div>
Modification de la XSL
Pour modifier la XSL par défaut, il faut créer un fichier toc.xsl dans le dossier [projet-]editions/[edition]/ui/xsl/core.
Cette XSL permet de transformer le résultat de la XQuery par défaut, ou celle qui la surcharge, ([projet-]editions/[edition]/xq/toc.xq) en HTML.
En l’absence d’un tel fichier, MaX exécutera [projet-]MaX/ui/xsl/core/toc.xsl.
Sommaire d’un document
Le sommaire d’un document est disponible en consultant l’URL :
http://[host]:[port]/[edition]/sommaire/[document].html
Par exemple :
http://localhost:17002/mon-edition/sommaire/document.html
Par défaut, MaX parcourt le document XML, mentionné dans l’URL, et affiche :
- pour la TEI : les éléments
<head>
des éléments<div>
identifiés (avec un attribut@xml:id
) contenant un attribut@type
; - pour l’EAD : les balises
<unittitle>
et<unitid>
des composants (éléments<archdesc>
et<c>
) identifiés.
Les requêtes XQuery correspondantes sont stockées dans :
- pour la TEI : [projet-]MaX/rxq/tei/document_toc.xq,
- pour l’EAD : [projet-]MaX/rxq/ead/document_toc.xq.
Le résultat de cette requête est ensuite transformé par la xsl :
- pour la TEI : [projet-]MaX/ui/xsl/tei/document_toc.xsl
- pour l’EAD : [projet-]MaX/ui/xsl/ead/document_toc.xsl
Titre du document
Par défaut, le titre du document est :
- pour la TEI :
/tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt
- pour l’EAD :
/ead:ead/ead:eadheader/ead:filedesc/ead:titlestmt
Une fonction Xquery permet d’afficher le titre du document :
max.util:getDocTitle($dbName, $docPath, $xmlFormat)
<!-- exemple d’utilisation -->
let $title:= max.util:getDocTitle(max.config:getProjectDBPath($project),
$docName,
max.config:getXMLFormat($project))
Surcharge du comportement
Tout comme le sommaire d’une édition, il est possible de :
- modifier la XQuery afin de modifier les éléments sélectionnés pour le sommaire,
- modifier la XSL transformant ces éléments au format HTML.
Modification de la XQuery
- Créer un fichier [projet-]editions/[edition]/xq/document_toc.xq
- Y rédiger une requête Xquery prenant en compte 4 paramètres :
Exemple de squelette d’une telle XQuery :
declare variable $baseURI external;
declare variable $dbPath external;
declare variable $project external;
declare variable $doc external;
(: xquery listant les items du sommaire du document $doc:)
<ul>
{
for $entry in doc($dbPath || '/' || $doc)// ...
return
<li id="..." data-href="..."><head>...</head></li>
}
</ul>
Afin d’être compatible avec la feuille de transformation XSL appliquée par défaut au résultat de cette XQuery, celle-ci doit :
- retourner le sommaire dans un élement
<ul>
, - construire des sous-éléments
<li>
pour chaque entrée en spécifiant l’url des liens dans un attribut@data-href
, - construire un sous-élement
<head>
pour chaque<li>
, contenant le libellé de l’entrée.
Modification de la XSL
La XSL par défaut peut également être surchargée :
Il faut alors créer un fichier document_toc.xsl, dans le dossier [projet-]editions/[edition]/ui/xsl/[tei ou ead].
Cette XSL permet de transformer le résultat de la XQuery (XQuery par défaut ou surcharge présente dans [projet-]editions/[edition]/xq/document_toc.xq ) en HTML.
Cette XSL reçoit en entrée :
- le titre du document courant dans une variable $docTitle,
- les variables de configuration $baseuri et $project.
En l’absence d’un tel fichier, MaX exécutera [projet-]MaX/ui/xsl/[tei ou ead]/document_toc.xsl.