# Le langage XPAGES

Auteur: Damien Guillaume

- Introduction
- La structure des documents
- Informations
- Eléments de bloc
- Eléments mélangés au texte
- Exercices
- Référence du langage

# Introduction

XPAGES permet de créer rapidement et facilement des sites web. Le principe sur lequel repose XPAGES est la séparation du contenu et de la forme : avec XPAGES, on spécifie un contenu (texte, images, animations), et on le structure en donnant un sens à chaque partie. A l'édition, on ne préoccupe absolument pas de la façon dont le contenu sera affiché plus tard, ce qui permet de gagner du temps et de ne pas mélanger le sens avec la forme. La façon dont le contenu sera affiché est spécifié séparément, par des feuilles de style. Il est ainsi possible de changer l'affichage indépendamment de l'édition.

XPAGES est un langage XML, c'est à dire un ensemble d'éléments et de règles permettant de structurer un texte. Des feuilles de style associées permettent de transformer automatiquement des documents XPAGES en fichiers HTML pour qu'ils puissent être consultés sur le web. Les documents XPAGES peuvent être édités avec Jaxe et WebJaxe grâce à un fichier de configuration décrivant une interface d'édition.

XPAGES est un langage très simple, et facile à apprendre : il ne comporte que 59 éléments (46 sans les exercices), à comparer par exemple aux 91 éléments de HTML, aux 390 éléments de DocBook, ou aux 526 éléments de OpenDocument.

# La structure des documents

Les documents XPAGES comportent un élément racine, `XPAGES`, qui est utilisé dans tous les documents comme élément de premier niveau. Sous cet élément, on trouve les éléments `INFORMATIONS`, `PAGE`, `REFXPAGES` et `XPAGES`.

- `INFORMATIONS` est un bloc de métadonnées, c'est à dire des informations sur le document. Il est décrit plus loin.
- `PAGE` correspond à une page web, et comporte un titre et un label permettant de faire des liens vers la page.
- `REFXPAGES` correspond à un référence (via le label) vers un autre document XPAGES, qui doit être inclus à l'endroit de l'élément. Ceci permet de créer un site avec plusieurs niveaux : on peut par exemple créer un site avec une page d'introduction, et plusieurs ensembles de pages. Pour cela on crée un document XPAGES pour le site, contenant la page d'introduction et des références `REFXPAGES` vers les ensembles de pages qui constituront le site.
- `XPAGES` sous `XPAGES` permet d'ajouter un niveau à l'arborescence, comme avec REFXPAGES, mais sans créer de nouveau document.

A l'intérieur d'une page, il est possible de créer des sections avec l'élément `SECTION`. Cet élément comporte un titre, un rôle qui spécifie le sens de la section et peut permettre un affichage différent en fonction, et une importance qui permet de mettre en valeur la section si celle-ci est importante.

Le texte est ajouté à l'intérieur de paragraphes, avec l'élément `PARAGRAPHE`. Il est facile d'insérer un nouveau paragraphe avec le raccourci-clavier commande-P ou contrôle-P dans Jaxe.

Il possible de créer plusieurs contributions, chacune comprenant un fichier XML XPAGES et les fichiers attachés (images, applets Java, ...). Chaque contribution doit alors correspondre à un dossier dont le nom est égal au label donné dans le bloc `INFORMATIONS` du fichier XML. Ce dossier contient le fichier XML et les fichiers associés.

# Informations

Le bloc d'informations renseigne sur le document, et permet aussi de choisir un habillage pour les pages qui seront générées. Il est obligatoire, et se place au début du document. Il comporte les éléments suivants :

- `LABEL` : un nom permettant de référencer ensuite le document avec l'élément `REFXPAGES`, pour l'inclure dans un ensemble plus grand. Le label est obligatoire, et doit correspondre au nom du fichier XML sans l'extension ".xml". Dans WebJaxe, le label doit être le nom de la contribution.
- `TITRE` : le titre du document (obligatoire).
- `AUTEUR` : un auteur du document. Il est bien sûr possible d'en spécifier plusieurs, en mettant plusieurs éléments `AUTEUR`.
- `DATECRE` : la date de création du document, sous la forme `JJ/MM/AAAA`.
- `DATEMAJ` : la date de mise à jour du document, sous la forme `JJ/MM/AAAA`.
- `LOGO` : chemin vers un fichier d'image avec un logo à utiliser pour l'affichage du site. L'image doit être dans un format standard du web (JPEG, PNG ou GIF). Il est possible d'ajouter un lien à utiliser si l'on clique sur le logo.
- `INTERFACE` : choix d'un habillage pour les pages qui seront générées pour le document.
- `RUBRIQUES` : permet de choisir si on veut afficher des boutons en haut des pages pour naviguer vers les sous-ensembles référencées avec `REFXPAGES`.
- `LANGUE` : le code de la langue du document (`fr` pour Français).

# Eléments de bloc

Les éléments de bloc sont les éléments XML que l'on peut insérer directement à l'intérieur d'un élément `PAGE`. Ils permettent de structurer le document, mais ne sont pas mélangés à du texte : il est ainsi impossible d'insérer du texte directement sous `PAGE`, le texte devant être placé à l'intérieur d'un élément de bloc.

XPAGES comporte les éléments de bloc suivants :

- `SECTION` : permet d'identifier une zone à l'intérieur d'une page, en lui donnant un titre, un rôle sémantique et une importance. Le rôle est facultatif, mais est important pour donner du sens aux différentes parties du document. Il peut aussi être utilisé plus tard pour afficher les sections ayant un même rôle d'une même façon, pour les différencier visuellement.
- `PARAGRAPHE` : un paragraphe est une suite de phrases. Pour "sauter une ligne" (cette idée correspondant plus à la forme qu'au contenu, elle est mise entre guillemets), il faut créer un nouveau paragraphe.
- `LISTE` : une liste d'éléments (`ITEM`). Les éléments de la liste peuvent contenir du texte, mais aussi des paragraphes ou des sous-listes.
- `TABLEAU` : un tableau constitué d'un certain nombre de lignes et de colonnes. Il est possible de spécifier une ligne de titres (la première ligne du tableau). On peut aussi fusionner des cellules, et spécifier un alignement à l'intérieur des cellules.
- `ENVIMAGE` : une zone regroupant les informations liées à une image, et le fichier de l'image. En plus de l'image, on peut spécifier le crédit (l'origine de l'image, obligatoire de nos jours), et la légende. Il est également possible de spécifier un lien sur l'image, pour qu'un clic dessus redirige vers une autre partie du site ou une page externe.
- `APPLET` : une applet Java, par exemple pour des simulations interactives.
- `FLASH` : un objet Flash, qui peut comme une applet Java être utilisé pour ajouter de l'interactivité au site.
- `COMMENTAIRE` : un commentaire de l'auteur qui ne sera pas affiché sur le site. Très utile pour indiquer par exemple des parties à développer ou corriger au moment de la rédaction.
- `CODE` : un bloc de code informatique, donc le formattage doit être préservé.
- `EXERCICE` : un exercice (voir plus loin).
- `QCM` : un QCM (voir plus loin).
- `BIBLIOGRAPHIE` : une liste de références bibliographiques et webographiques.

# Eléments mélangés au texte

Certains éléments de XPAGES peuvent être mélangés avec du texte, par exemple à l'intérieur d'un paragraphe. Ce sont les éléments suivants :

- `LIENPAGE` : lien vers une page du même site. Pour identifier la page vers laquelle on veut pointer, il faut renseigner le label de la contribution, et le label de la page. Si on n'indique que le label de la page, il est supposée qu'elle est dans la même contribution. Si on n'indique que le label de la contribution, le lien pointe vers la première page de cette contribution.
- `LIENWEB` : lien vers une page web externe au site. L'adresse (URL) donnée doit donc commencer par "`http://`".
- `FICHIER` : fichier d'image ou d'animation. Normalement utilisé à l'intérieur d'un élément `ENVIMAGE`, ce qui permet notamment de spécifier une légende, mais peut également être utilisé dans le texte (par exemple pour inclure un symbole qu'il ne serait pas possible de créer avec une équation).
- `SYMBOLE` : lettre grecque ou symbole mathématique.
- `EQUATION` : équation basée sur la syntaxe de l'éditeur d'équations de Jaxe.
- `EQUATEX` : équation basée sur la syntaxe TeX.
- `GLOSSAIRE` : mot qui renvoit au glossaire. On spécifie le mot affiché avec l'attribut `mot`, et la définition de ce mot à l'intérieur des balises `GLOSSAIRE`.
- `EM` : emphase (permet de mettre en valeur un ou plusieurs mots).
- `SUP` : texte en exposant
- `SUB` : texte en indice
- `CODE` : code informatique (généralement affiché avec une police dont toutes les lettres ont la même taille)
- `NBSP` : espace insécable

# Exercices

XPAGES peut être utilisé pour de nombreuses applications, mais il est en particulier pratique pour créer un cours en ligne, et a été créé dans ce contexte. Pour ces raisons, le langage contient des éléments spécifiques à la définition d'exercices, même si ces éléments ne seront pas forcément utiles en-dehors du contexte des cours en ligne.

Il existe deux types d'exercices : les exercices de type question-réponse, et les QCM. Dans les deux cas, un exercice peut avoir un titre (attribut `titre`), un énoncé (élement `ENONCE`), une indication de la difficulté (élément `DIFFICULTE`), une indication du temps nécessaire (élément `TEMPS`), et des questions (élements `QUESTION` et `QUESTIONQCM`).

Chaque question peut avoir un énoncé et une ou plusieurs aides (élement `AIDE`). Les questions des exercices de type question-réponses ont une solution (élément `SOLUTION`) et un nombre de points qui peuvent être accordés si la réponse est correcte (élément `POINTS`). Les questions de QCM ont des réponses possibles (élément `REPONSEQCM`), chaque réponse pouvant être bonne ou pas (attribut `bonne`), avec à chaque fois le texte de la réponse (élément `TEXTEREP`) et un commentaire qui sera affiché si l'utilisateur choisit cette réponse, par exemple pour lui expliquer en quoi la réponse est fausse (élément `COMMENTAIREREP`).

Dans Jaxe, les réponses des exercices d'évaluations ne sont pas ajoutées aux fichiers HTML quand on génère le "site public". Elles ne sont ajoutées que lorsque l'on génère le "site de production". Dans WebJaxe, c'est toujours le site de production qui est généré; il faut donc exporter la contribution et l'ouvrir dans Jaxe pour générer le site public. On peut ainsi, à partir des mêmes fichiers XML, générer un site pour les étudiants, et un site pour les tuteurs d'une formation à distance.

# Référence du langage

Le document suivant présente l'ensemble des éléments du langage XPAGES, avec un index et un arbre des éléments. Il a été généré automatiquement à partir du schéma XML de XPAGES.