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 :

  1. Créer un fichier toc.xq dans le dossier [projet-]editions/[edition]/xq.
  2. Y rédiger une requête Xquery prenant en compte 3 paramètres :

    • $baseURI : valeur de la variable de configuration baseURI
    • $dbPath : valeur de la variable de configuration dbPath permettant le requêtage de la base de données
    • $project : identifiant de l’édition.

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 &amp; 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

  1. Créer un fichier [projet-]editions/[edition]/xq/document_toc.xq
  2. Y rédiger une requête Xquery prenant en compte 4 paramètres :
    • $baseURI : valeur de la variable de configuration baseURI,
    • $dbPath : valeur de la variable de configuration dbPath,
    • $project : identifiant de l’édition,
    • $doc : nom du document courant pour lequel est construite la table des matières.

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.