Comment créer un langage XML et son éditeur en 5 minutes

Introduction

Cette documentation explique comment créer un fichier de configuration pour Jaxe incluant la définition des menus d'insertion des éléments XML, la méthode d'affichage des éléments, et le langage XML. Il donne aussi un exemple de feuille de style XSLT. L'exemple donné a permis de créer ce fichier que vous êtes en train de lire.

Création du fichier de configuration de Jaxe

Les fichiers de configuration se situent dans le dossier config de Jaxe, et leur nom se termine en _Jaxe_cfg.xml. Par exemple, le fichier de configuration des fichiers de configuration (dont l'élément racine est JAXECFG), se nomme JAXECFG_Jaxe_cfg.xml. On commence donc par lancer Jaxe, choisir le bouton "Nouveau" et sélectionner "JAXECFG - Fichier de configuration de Jaxe".

Il existe deux options possibles pour la création d'un fichier de configuration de Jaxe:

On utilisera ici la syntaxe simplifiée, qui se contente de définir les éléments, leurs attributs, les sous-éléments, et quels éléments peuvent contenir du texte. Si on utilisait un schéma XML, il ne faudrait par contre pas donner de règle sur le langage XML dans le fichier de configuration.

Pour commencer la construction du fichier de configuration, on insère un descriptif qui sera affiché dans le dialogue de création des nouveaux documents.

JAXECFG>
    DESCRIPTION>Démo pour les fichiers de config<DESCRIPTION
<JAXECFG

On définit ensuite l'élément racine du langage, DOCUMENTATION. Chaque nouveau document intégrera cet élément dès le départ.

JAXECFG>
    DESCRIPTION>Démo pour les fichiers de config<DESCRIPTION
    RACINE>
        BALISE 'DOCUMENTATION'>
        <BALISE
    <RACINE
<JAXECFG

Création des menus

On définit ensuite les menus d'insertion des éléments. Tous les éléments du langage XML doivent avoir un menu correspondant. Pour notre langage de documentation, on utilisera les menus "Organisation", "Liste" et "Texte".

MENU 'Organisation'>
<MENU 'Organisation'

MENU 'Liste'>
<MENU 'Liste'

MENU 'Texte'>
<MENU 'Texte'

Définition des éléments du langage

Commençons par l'élément TITRE. Comme on l'insérera avec le menu "Organisation", on va le définir ici. On choisi les attributs nom='TITRE', titre='Titre' (qui sera utilisé pour le menu), et type='string'. L'attribut type correspond au type d'élément Jaxe, c'est à dire la façon d'afficher et d'éditer l'élément. Ici, avec 'string', Jaxe l'affichera comme une simple chaîne de caractères avec des balises de début et de fin. Les types d'éléments sont détaillés dans la documentation sur la syntaxe.

On pourra trouver TITRE par exemple sous l'élément racine, DOCUMENTATION. Pour spécifier cela, on ajoute un élément SOUSBALISE sous DOCUMENTATION, avec l'attribut nom='TITRE'.

Comme on veut avoir du texte dans les titres, on ajoute cette information avec l'élément TEXTE dans la définition de l'élément.

RACINE>
    BALISE 'DOCUMENTATION'>
        SOUSBALISE 'TITRE'
    <BALISE
<RACINE

MENU 'Organisation'>
    BALISE 'TITRE'>
        TEXTE
    <BALISE 'TITRE'
<MENU 'Organisation'

Plus d'options d'affichage

Des attributs type très utilisés sont division, zone et string. division affiche un élément sous la forme de deux grandes barres horizontales dans le texte, ce qui est pratique pour bien séparer de grandes zones dans le texte. On l'utilisera dans l'exemple pour l'élément SECTION. zone affiche un élément en sautant aussi des lignes, mais en prenant moins de place. On l'utilisera pour les éléments PARAGRAPHE et EXEMPLE, que l'on trouve sous SECTION. Enfin, string affiche aussi l'élément avec ELEMENT> et <ELEMENT, mais sans sauter de ligne. On s'en servira ici pour tous les autres éléments.

Il est possible de rendre l'édition dans Jaxe plus agréable en spécifiant par exemple des styles. Pour un titre, on aimerais avoir un affichage en gras, ce qui s'obtient avec un paramètre. Il suffit d'ajouter PARAMETRE sous BALISE 'TITRE', avec les attributs nom='style' et valeur='GRAS'. La liste complète des paramètres possibles est donnée dans la documentation sur la syntaxe.

BALISE 'TITRE'>
    PARAMETRE 'style'
    TEXTE
<BALISE 'TITRE'

Ensembles d'éléments

Plutôt que de remettre plusieurs fois les mêmes SOUSBALISE, on peut les rassembler en ensembles et utiliser ensuite SOUSBALISE ensemble='nomensemble' à chaque fois que l'on veut mettre un ensemble de SOUSBALISE. Par exemple, on veut ici utiliser les éléments EMPHASE, CODE et LIEN dans le texte. Il suffit de créer un ensemble sous JAXECFG, et ensuite d'utiliser à chaque fois que l'on utiliser du texte avec tous ces éléments SOUSBALISE ensemble='texte' au lieu d'utiliser simplement TEXTE.

    ENSEMBLE 'texte'>
        TEXTE
        SOUSBALISE 'EMPHASE'
        SOUSBALISE 'CODE'
        SOUSBALISE 'LIEN'
    <ENSEMBLE 'texte'

<JAXECFG

Fichier de l'exemple

Voici le fichier de configuration complet: DOC_Jaxe_cfg.xml.

Si l'on avait utilisé un fichier de schéma XML séparé du fichier de configuration Jaxe, il aurait fallu donner le chemin vers le fichier avec l'élément FICHIERSCHEMA. On aurait aussi défini les menus, mais on n'aurait par contre pas utilisé les éléments de définition du langage : SOUSBALISE, ATTRIBUT, VALEUR, TEXTE, ENSEMBLE.

Voici le même exemple, en utilisant un fichier de schéma XML séparé du fichier de configuration Jaxe, en séparant le langage de la façon dont il est présenté dans Jaxe: DOC2_Jaxe_cfg.xml - DOC2.xsd.

Création de la feuille de style

Il ne reste plus qu'à définir un affichage pour les documents créés avec ce nouveau langage XML. Jaxe utilise pour cela des feuilles de style XSLT qui transforment les documents XML en HTML.

On crée un document XSLT en choisissant le menu "Nouveau" et en choisissant "stylesheet - XSLT". Les fichiers XSLT mélangent plusieurs langages XML dans un document. On voit donc ici des menus pour XSLT et des menus pour XHTML.

Il faut commencer par préciser la version de XSLT que l'on utilise en mettant la valeur "1.0" à l'attribut version de la racine. On précise ensuite quelle sortie on veut obtenir pour la transformation. Par exemple, pour obtenir du XHTML, on utilise xsl:output avec les attributs doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" encoding="ISO-8859-1" indent="yes" method="xml".

De manière générale, il suffit ensuite d'indiquer pour chaque élément un équivalent HTML. Par exemple, pour que CODE soit affiché comme avec tt en HTML, on écrit:

    <xsl:template match="CODE">
        <tt><xsl:apply-templates/></tt>
    </xsl:template>

Une fois créé, le fichier XSL doit être indiqué dans le fichier de configuration, au début. Il doit aussi être placé dans le dossier config de Jaxe.

JAXECFG>
    FICHIERXSL 'DOC.xsl'>
    <FICHIERXSL 'DOC.xsl'

Top chrono!

Finalement, il ne reste plus qu'à choisir le menu "Ouvrir la configuration..." et choisir notre fichier de configuration, DOC_Jaxe_cfg.xml, pour créer un nouveau document avec. On peut aussi placer le fichier de configuration dans le dossier config de Jaxe afin qu'il apparaisse dans la liste quand on crée un nouveau document avec le menu "Nouveau".