Commit bd1d16d4 authored by Marie Bisson's avatar Marie Bisson
Browse files

merge du travail de Julia avec les précédentes versions

parents d3e38cef ab657116
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -4,51 +4,49 @@

Le fichier *configuration/configuration.xml* inclut les fichiers de configuration des différentes éditions gérées par MaX.


````xml
<!-- 
  Exemple de fichier de configuration de MaX incluant 2 éditions : 
    demo_lorem et mon_edition
-->
<!-- Exemple de fichier de configuration de MaX incluant 2 éditions : 
    demo_lorem et mon-edition -->

<?xml version="1.0"?>
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
  <baseURI/>
  <editions>
    <xi:include href="../editions/demo_lorem/demo_lorem_config_inc.xml"/>
    <xi:include href="../editions/mon_edition/mon_edition_config_inc.xml"/>
    <xi:include href="../editions/mon-edition/mon-edition_config_inc.xml"/>
    [...]
  </editions>
</configuration>

````

Chaque nouvelle edition implémentée avec l’outils *max.sh* ajoute un élément ``<xi:include>``.
Chaque nouvelle édition implémentée avec l’outil *max.sh* ajoute un élément ``<xi:include>``.

Quand une édition déjà préparée est récupérée, cette ligne peut être ajoutée manuellement.

## Configuration d’une édition


L’édition *mon-edition* sera configurée dans le fichier *editions/mon-edition/mon-edition_config_inc.xml*.

```

````
<!-- Exemple de fichier de configuration par défaut, sans option, ni surcharge, ni plugin-->

<edition xml:id="mon-edition" dbpath="moneditiondb" env="tei" prettyName="Mon Édition">
</edition>
```
````

* ``@xml:id`` : identifiant de l’édition. Toutes les URLs de consultation commencent par cet identifiant ;
* ``@dbpath`` : nom de la base de données contenant les sources consultables ;
* ``@env``    : grammaire XML de l’édition ;
* ``@prettyName`` : titre de l’édition qui pourra être récupéré sous forme de variable et affiché à divers endroit du site.
* ``@xml:id`` : identifiant de l’édition. Toutes les URL de consultation commencent par cet identifiant,
* ``@dbpath`` : nom de la base de données contenant les sources XML consultables,
* ``@env`` : grammaire XML de l’édition,
* ``@prettyName`` : titre de l’édition qui pourra être récupéré sous forme de variable et affiché à divers endroits du site.


Ce fichier contiendra si nécessaire, la [configuration des options de lecture](../text/#options-de-lecture), l’activation et le paramètrage de [l’alignement](../text/#alignement) et des [plugins](../plugins).

## La variable baseURI

Pour un site déployé sur une URL autre que la racine de l’hôte, la variable *baseURI* doit être renseignée dans le fichier *configuration/configuration.xml*. Par exemple, pour un site publié à l’adresse https://site.domain.ext/app/ (voir aussi [Mise en Production](../production)):
Pour un site déployé sur une URL autre que la racine de l’hôte*, la variable *baseURI** doit être renseignée dans le fichier *configuration/configuration.xml*. Par exemple, pour un site publié à l’adresse https://site.domain.ext/app/ (voir aussi [Mise en production](../production)) :

```
<?xml version="1.0"?>
+2 −2
Original line number Diff line number Diff line
# Docker
# Docker*

* L'image ne peut être créée que si une édition existe (la création d'une image à partir d'un MaX vide est impossible, et inutile !).

* Création de l'image de l'édition (exemple avec l'édition de démonstration) puis lancement du container accessible sur le port 9999 (base XML du projet stockée dans */opt/basex/data/max_demo_lorem* :
* Création de l'image de l'édition (exemple avec l'édition de démonstration) puis lancement du container* accessible sur le port 9999 (base XML du projet stockée dans */opt/basex/data/max_demo_lorem* :

Création de l'édition de démonstration

+12 −11
Original line number Diff line number Diff line
# Fonctionnement 

## Fonctionnalités et URLs associées
## Fonctionnalités et adresses URL associées

Lors de la consultation d’une page d’une édition, MaX se base sur l’URL interrogée. C’est cette URL qui va permettre de déclencher un ensemble de traitements (de l’affichage d’une page html simple, au requêtage de la base de données XML pour générer une nouvelle page html *via* une transformation xsl).
Lors de la consultation d’une page d’une édition, MaX se base sur l’URL interrogée. C’est cette URL qui va permettre de déclencher un ensemble de traitements (de l’affichage d’une page HTML simple, au requêtage de la base de données XML pour générer une nouvelle page HTML *via* une transformation XSL).

L’URL contient systématiquement l’identifiant de l'édition consultée. Cet identifiant, en plus d’autres paramètres optionnels, permettent de construire le document adéquat, en s’appuyant également sur le fichier de configuration de l’édition (pour les options d’affichage ou l’utilisation des plugins par exemple).

L’URL contient systématiquement l’identifiant de l’édition consultée. Cet identifiant, plus d’autres paramètres optionnels permettent de construire le document adéquat, en s’appuyant également sur le fichier de configuration de l’édition (pour les options d’affichage, ou l’utilisation des plugins par exemple).

Les principales URL de consultation sont les suivantes :

* Page d’accueil d’une édition ([plus d’info](../home_page))
* Page d’accueil d’une édition ([plus d’info](../home_page)) :

    `http://[host]:[port]/[edition]/accueil.html`

* Sommaire d’une édition (liste des documents XML consultables) ([plus d’info](../toc/#sommaire-dune-edition))
* Sommaire d’une édition (liste des documents XML consultables) ([plus d’info](../toc/#sommaire-dune-edition)) :

    `http://[host]:[port]/[edition]/sommaire.html`

* Sommaire d’un document d’une édition ([plus d’info](../toc/#sommaire-dun-document)) 
* Sommaire d’un document d’une édition ([plus d’info](../toc/#sommaire-dun-document)) :

    `http://[host]:[port]/[edition]/sommaire/[document].html` 

* Consultation d’un document d’une édition ([plus d’info](../text)) 
* Consultation d’un document d’une édition ([plus d’info](../text)) :
    `http://[host]:[port]/[edition]/doc/[document].html` 

* Consultation d’une partie identifiée (xml:id) d’une édition ([plus d’info](../text)) 
* Consultation d’un fragment identifié (xml:id) d’une édition ([plus d’info](../text)) :
  
    `http://[host]:[port]/[edition]/[document].xml/[id].html` 

* Consultation d’un contenu html statique ([plus d’info](../static_pages)) 
* Consultation d’un contenu html statique* ([plus d’info](../static_pages)) :

    `http://[host]:[port]/[edition]/[page].html` 

@@ -35,10 +36,10 @@ Les principales URL de consultation sont les suivantes :

Lors de la consultation d’un sommaire, d’un document ou d’un fragment, MaX effectue les opérations suivantes :

1. Requêtage XQUERY pour la récupération des données (liste de document, document complet, fragment identifié, etc.).
1. Requêtage XQUERY pour la récupération des données (liste de documents, document complet, fragment identifié, etc.).
2. Transformation de ces données en un contenu HTML par application de templates XSLT.
3. Création d'une page HTML complète (à partir d'un template HTML) contenant les données transformées, les blocs de navigation, menu, etc. ainsi que les imports CSS et Javascript nécessaires.
4. Exécution des éventuels plugins au sein du navigateur
4. Exécution des éventuels plugins au sein du navigateur.

<div class="mermaid">
graph LR;
+33 −24
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@

## Le dossier projet-MaX

L’application MaX s’organise selon l’arborescence suivante.
L’application MaX s’organise selon l’arborescence suivante :

<div class="mermaid">
graph LR;
@@ -50,40 +50,46 @@ classDef default color:#274868, fill:#fff, stroke:#274868;
    J("max.xq")
</div>

* **configuration** : contient le/les fichiers de configuration ;
* **documentation** : contient la documentation de MaX ;
* **editions** : contient les *éditions* hébergées par l’instance de MaX. Chaque édition a son propre dossier dans lequel sont stockées ses ressources propres : HTML, XSLT, CSS, Javascript, XQuery, etc. Voir [Creation d’une edition](../script/#creation) ;
* **node_modules** : contient les dépendances node.js installées. Ce dossier n’est créé qu’à l’initialisation de MaX (voir étape 6 de la [procédures d’installation](../install/#procedure)) ou lors d’un `npm install` ;
* **plugins** : contient les *plugins*. Chaque *plugin* dispose de son propre dossier de ressources : fichiers Javascript, XQuery, XSL, ... Voir la partie [Plugins](../plugins) ;
* **rxq** : contient l’ensemble des modules RestXQ ;
* **tools** : contient les outils de déploiement : édition de démonstration, nouvelle édition, activation et désactivation de plugins
* **configuration** : contient le/les fichiers de configuration,
* **documentation** : contient la documentation de MaX,
* **editions** : contient les *éditions* hébergées par l’instance de MaX. Chaque édition a son propre dossier dans lequel sont stockées ses ressources propres : HTML, XSLT, CSS, Javascript, XQuery, etc. Voir [Creation d’une edition](../script/#creation),
* **node_modules** : contient les dépendances node.js installées. Ce dossier n’est créé qu’à l’initialisation de MaX (voir étape 6 de la [procédures d’installation](../install/#procedure)) ou lors d’un `npm install`,
* **plugins** : contient les *plugins*. Chaque *plugin* dispose de son propre dossier de ressources : fichiers Javascript, XQuery, XSL, ... Voir la partie [Plugins](../plugins),
* **rxq** : contient l’ensemble des modules RestXQ,
* **tools** : contient les outils de déploiement : édition de démonstration, nouvelle édition, activation et désactivation de plugins,
* **ui** : 
    * **css** : contient les feuilles de style natives de MaX,
    * **i18n** : ressources d’internationalisation,
    * **images** : images de MaX (logo et icônes de navigation),
    * **js** : sources javascript de MaX,
    * **images** : images de MaX : logo et icônes de navigation,
    * **js** : sources Javascript de MaX,
    * **lib** : librairies externes,
    * **templates** : templates HTML,
    * **xsl** : feuilles de transformations XSL natives de MaX,
    * **templates** : templates HTML*,
    * **xsl** : feuilles de transformations XSL natives de MaX.
    
        => On retrouve la même organisation (dossier **ui**) de ces sous-dossiers pour la configuration d’une édition particulière (cf. ci-dessous [Le dossier projet-editions](#le-dossier-projet-editions))

        
* **package.json**: fichiers des dépendances javascript ;
* **max.xq** : « contrôleur » RestXQ de l’application MaX.
|Nota Bene Julia|
|---------------|
|Je ne comprends pas très bien cette phrase. Une idée pour éclaircir ? |
|MB : on a modifié un peu (ag/sp/moi): est-ce lus clair ?|

* **package.json** : fichiers des dépendances Javascript,
* **max.xq** : « contrôleur »* RestXQ de MaX.


Le moteur d’affichage XML est construit pour permettre l’exposition de n’importe quel vocabulaire XML.
Néanmoins, deux vocabulaires ont fait l’objet de développements particuliers : ead et tei. Dans les dossiers **rxq**, **ui/css**, **ui/js**, **ui/templates**, **ui/xsl**, l’utilisateur peut trouver des dossiers ou fichiers spécifiques pour ces deux vocabulaires.

Le dossier *projet*-MaX constitue le « cœur applicatif » (*core*) de Max. La configuration spécifique de chaque édition se fera donc dans le dossier *projet*-editions.
Le dossier *projet*-MaX constitue le cœur applicatif (*core*) de MaX. La configuration spécifique de chaque édition se fera donc à l'extérieur du *core* dans le dossier *projet*-editions.


Il est ainsi fortement conseillé de ne modifier que ces deux dossiers. :
Il est ainsi fortement conseillé de ne modifier que ces deux dossiers :

- [editions](../script) ;
- [editions](../script),
- [plugins](../plugins).

## Le dossier projet-editions
## Le dossier *projet*-editions

<div class="mermaid">
graph LR;
@@ -122,11 +128,14 @@ classDef default color:#274868, fill:#fff, stroke:#274868;
    D2["footer.frag.html"]
</div>


* **mon-edition_config_inc.xml** : le fichier de configuration de l’édition qui permet de : 
  * préciser le nom de la base de données, le vocabulaire utilisé, le prettyName (titre de l’édition récupéré sous forme de variable et affiché à divers endroit du site)., 
  * activer les plugins, etc. ;
* **fragments** : contient les pages statiques ;
* **menu.xml** : le fichier pour configurer le menu ;
* **ui** : contient les dossiers pour les css, les xsl, le template html, les images, les polices, etc. ;
  * préciser le nom de la base de données, le vocabulaire utilisé, le prettyName (titre de l’édition récupéré sous forme de variable et affiché à divers endroit du site), 
  * activer les plugins, etc.,
* **fragments** : contient les pages statiques,
* **menu.xml** : le fichier pour configurer le menu,
* **ui** : contient les dossiers pour les css, les xsl, le template html, les images, les polices, etc.,
* **xq** : contient les fichiers de requêtes spécifiques à l’édition.

|Nota Bene Julia|
|----------|
|Dans les fragments, on a que "accueil.frag.html" et "footer.frag.html"] par défaut ? J'ai aussi about.frag.html, contacts.frag.html et projet.frag.html (mais c'est peut-être un ajout manuel effectué après)|
+47 −1
Original line number Diff line number Diff line
# Glossaire

## B

**baseURI (ou variable baseURI)** : partie de l'URL d'un site qui est avant tous les chemins (routes, voir *infra*.) qui sont dans MaX, propres à une édition particulière. Exemple dans https://www.unicaen.fr/puc/sources//castel/accueil, il s'agit de https://www.unicaen.fr/puc/sources/

route : 
**Breadcrumb (Fil d’Ariane)** : dans l'interface de MaX, aide à la navigation sous forme de menu arborescent. Le breadcrumb permet au lecteur de localiser les documents (les pages web du site) et de se situer par rapport à ces documents.

## C

**container (ou conteneur)** : un conteneur permet de distribuer une ou plusieurs application(s) avec tous les éléments dont elle(s) a/ont besoin pour fonctionner : fichiers source, environnement d'exécution, librairies, outils et fichiers. Ces éléments sont prêts à être déployé sur un serveur et son système d'exploitation.

**contenu html statique (ou page statique)** : page web dont le contenu n'est pas généré dynamiquement. Dans Max, cela signifie que ce contenu n'est pas reconstitué depuis pas de la base BaseX.
 
**contrôleur RestXQ** : fait la correspondance entre l'URL demandée et le code exécuté.

## D

**Dépendances** : certains plugins de MaX ont des dépendances vers des librairies Javascript. On utilise indépendamment les termes de "dépendances" ou de "librairies" pour renvoyer à des logiciels externes MaX et dont il a besoin pour faire fonctionner certaines fonctionnalités.

**Docker** : conteneur d'applications (voir supra container).

## I

**instance** : exécution d'un programme. Une "instance de MaX" est déployée pour chaque *projet*.

## L

**lien symbolique** : fichier qui pointe vers un autre fichier dans un système de fichier. Cela permet de faire référence à un autre fichier pour éviter d'éditer les mêmes fichiers à plusieurs endroits ou pour éviter d'avoir à déplacer des fichiers. Dans l'organisation des dossiers et fichiers proposés, on retrouve par exemple un lien symbolique qui pointe vers dans le sous-dossier éditions du dossier projet-MaX. Voir [Organisation des dossiers et des fichiers](../files/)).

## P

**port** : notion qui concerne les applications réseaux. Chaque port a un numéro qui correspond à une application. Les numéros de port de 0 à 1 023 correspondent aux ports "bien-connus", utilisés pour les services réseaux les plus courants.
BaseX a besoin de plusieurs ports pour fonctionner.

**prettyName** : par opoposition au nom du projet, nom exprimé par une suite lisible de caractères dans lequel les signes diachritiques sont autorisés. Dans MaX, le prettyName renvoit au titre de l’édition qui sera affiché à divers endroits du site.

## R

**racine de l’hôte** : La racine de l'hôte c'est le "/" de fin dans une URL. Exemple : "http://xxx.net/".

**reverse-proxy** : machine qui se fait passer pour une autre et qui transmet des requêtes entre le serveur et le client. Dans le cas de MaX, en production, il s'agit d'Apache.

**[route]** : partie de l'URL. Chemin que l'on met au niveau du contrôleur RestXQ.

## S

**serveur http (de BaseX)** : Logiciel qui prend des requêtes HTTP et qui renvoient des réponses HTTP. Dans le cas de MaX, c'est Jetty.

## T
**template** : gabarit ou patron. On parle de templates HTML, XSLT ou encore CSS pour modéliser des documents indépendamment de la valeur des données.
 No newline at end of file
Loading