Vous cherchez un éditeur XML adaptable à votre langage XML ? Jaxe est la solution. La dernière version intègre les fonctionnalités suivantes:
Ce que Jaxe ne fait pas (voilà une rubrique que l'on ne trouve pas sur des sites commerciaux, mais qui pourrait vous faire gagner du temps!) :
Un système (Mac, UNIX, Windows ou autre) avec une version de récente de Java (au moins 1.5). Pour tester la version de java de votre système, vous pouvez taper "java -version" sous la ligne de commande.
Jaxe peut s'utiliser en tant qu'administrateur, pour définir un fichier de configuration pour un langage XML donné, ou comme utilisateur final avec les fichiers de configuration de l'administrateur. Les développeurs peuvent aussi ajouter des composants Swing pour les éléments, et utiliser Jaxe à l'intérieur d'autres applications.
Dans cette copie d'écran, on peut voir un dialogue d'édition d'attributs, le panneau d'insertion des éléments, et la zone de texte comportant plusieurs affichages possibles pour les éléments.
Le deuxième exemple montre Jaxe intégré à l'intérieur d'une autre application Java, avec des affichages personnalisés pour les éléments.
La fonctionnalité permettant de se tenir informé des nouvelles versions a disparu de sourceforge. Il n'est plus possible d'être mis au courant par un mail d'une nouvelle version de Jaxe. On peut à la place utiliser un fil RSS.
Jaxe progresse avec les apports de chacun. Si vous avez amélioré Jaxe (par exemple en créant un fichier de propriétés pour une langue donnée, ou avec un plugin pour éditer certains types de données), n'hésitez pas à rendre disponible vos fichiers.
Ce site a été créé avec Jaxe et XPAGES.
XML est une syntaxe, mais c'est surtout une philosophie dans l'écriture de documents qui consiste à expliciter le sens des informations par opposition à la forme. On écrira par exemple:
<TITRE>XML</TITRE>
au lieu de:
<GRAS><ITALIQUE><CENTRE>XML</CENTRE></ITALIQUE></GRAS>
Ce principe permet à la fois des traitements automatiques (par exemple l'extraction de tous les titres pour construire une table des matières), et la possibilité de définir plusieurs affichages pour un même contenu (par exemple un affichage sur le web et un autre sur papier).
Comme le contenu est bien séparé de la forme, les éditeurs XML comme Jaxe ne sont pas WYSIWYG ("What you see is what you get"). Pour ceux habitués aux traitements de texte comme Word, il faut faire attention à ne pas utiliser de styles comme gras ou italique quand il est possible d'indiquer le sens du texte à la place. Il ne faut pas non plus se fier à l'aperçu, étant donné qu'il peut y avoir plusieurs affichages possibles. Attention donc à utiliser des éléments correspondant à des paragraphes ou des sections plutôt que des éléments "saut de ligne", étant donné que l'espacement entre les paragraphes dépend de l'affichage et peut être un peu plus ou un peu moins qu'une ligne.
Un langage XML est défini de façon formelle, de manière à permettre la vérification automatique de la syntaxe. Cette description formelle comprend les noms des éléments du langage, les imbrications possibles entre les éléments, l'ordre autorisé des éléments, et leurs attributs (les attributs étant optionnels ou obligatoires).
Jaxe facilite la création des documents XML en utilisant les règles du langage pour proposer des éléments à insérer là où c'est possible. Cela permet de créer des documents valides (c'est à dire se conformant aux règles du langage) beaucoup plus facilement qu'avec un simple éditeur de texte. Cette introduction est générale pour tous les langages qui peuvent être utilisés, mais chaque utilisateur final doit apprendre un ou plusieurs langages XML particuliers, qui ne sont pas détaillés ici.
En plus des fichiers décrivant les langages XML (les schémas), Jaxe utilise des fichiers de configuration qui définissent la barre de menus et la façon d'afficher les éléments du langage. Ces fichiers se trouvent dans le répertoire config, et leur nom se termine en _config.xml.
Jaxe nécessite Java 1.5 ou une version ultérieure pour fonctionner. Pour savoir quelle version de Java est installée, il suffit de taper java -version sous la ligne de commande.
Jaxe se lance différemment suivant le système d'exploitation. Sur MacOS, il suffit de double-cliquer sur l'application, qui doit se trouver dans le répertoire Jaxe. Sur Windows, on lance Jaxe avec l'exécutable Jaxe.exe ou avec le script run.bat, et sur UNIX avec le script run.sh. Ces scripts peuvent être modifiés pour définir un fichier de configuration à utiliser par défaut.
Sur Windows on peut lancer le script assocXMLJaxe.bat pour associer l'extension ".xml" à Jaxe. Cela permet d'ouvrir les fichiers XML directement en double-cliquant dessus. Ce script ne fonctionne que si on a les droits pour modifier les associations de fichiers, et il faut donc être administrateur.
Sur MacOS X on peut choisir Jaxe plutôt qu'un autre programme pour ouvrir un fichier XML par un double-clic en choisissant le menu "Lire les informations" d'un fichier XML, en choisissant Jaxe dans "Ouvrir avec", et en cliquant sur "Tout modifier" pour que tous les fichiers XML s'ouvrent avec.
Il est aussi possible de lancer Jaxe avec les scripts jaxe.bat et jaxe.sh, en ajoutant le nom d'un fichier à ouvrir, par exemple en tapant ./jaxe.sh essai.xml.
Jaxe charge les fichiers XML en mémoire, et cela peut être difficile quand ils ont beaucoup de grandes images. Il est possible d'augmenter la mémoire allouée à Jaxe, suivant le système:
Jaxe utilise par défaut la langue du système, sachant que dans Jaxe 3.4 les seules langues définies sont le français, l'anglais, l'allemand, le portugais brésilien, le russe et l'espagnol. Si le système utilise une autre langue, Jaxe se lance en français. Pour changer la langue utilisée, on peut ajouter l'option -Duser.language=xx après la commande java dans les scripts, ou comme valeur de la clé VMOptions sur MacOS X. xx est un code correspondant à la langue, par exemple en pour l'anglais.
Au lancement, Jaxe ouvre un nouveau document XML avec la configuration par défaut s'il n'existe qu'un seul fichier de configuration. Sinon, il propose de choisir un fichier de configuration correspondant à un langage XML.
Pour vérifier que le langage XML utilisé dans un document ouvert est bien celui que l'on veut utiliser, il suffit de regarder les menus: la barre de menus des éléments se trouve en-dessous de la barre des menus de Jaxe (qui est en haut de l'écran sur MacOS). Si le langage n'est pas le bon, on peut créer un nouveau document XML avec le menu "Nouveau" qui propose un choix de fichiers de configuration quand il y en a plusieurs d'installés. Quand un fichier XML déjà créé est ouvert, il utilise automatiquement le fichier de configuration correspondant à son langage (s'il existe).
Jaxe inclut des exemples de fichiers de configuration pour XHTML strict, Docbook, Docbook simplifié, XPAGES, et un langage pour faire des présentations. Votre administrateur a normalement préparé un autre fichier de configuration pour le langage XML que vous allez utiliser.
Jaxe permet d'afficher les éléments XML de multiples façons, et il est même possible de créer de nouveaux affichages. La façon dont les éléments sont affichés est définie dans le fichier de configuration Jaxe du langage utilisé. Certains affichages d'éléments sont cependant plus populaires que d'autres. Un affichage classique consiste en une balise de début, suivie du contenu de l'élément, et se terminant par une balise de fin. Par exemple, une date s'affiche comme cela :
Avec cet affichage d'élément, quand un élément a des attributs, des boutons s'affichent sur les balises pour permettre leur modification dans un dialogue. Si les icônes de validation sont activées dans les préférences, les balises contiennent aussi une icône indiquant si l'élément est valide ou pas (un élément peut par exemple être invalide s'il manque des sous-éléments obligatoires à l'intérieur). Ces icônes ne sont cependant pas indispensables, étant donné que les balises changent aussi de couleur quand un élément n'est pas valide.
D'autres types d'affichage sont par exemple des listes, des tables, des images (pour représenter des éléments pointant vers des fichiers d'images), ou des formulaires.
A l'ouverture d'un fichier de configuration, Jaxe prépare un nouveau document, et insère automatiquement l'élément racine (dans le cas où les documents n'ont qu'un élément racine), en affichant un dialogue pour ses attributs s'il a des attributs. La barre des menus correspond aux éléments du langage, et on peut l'utiliser pour insérer des éléments. Une autre façon d'insérer des éléments est le panneau d'insertion, qui apparaît à gauche de la zone avec le document XML. Il liste les éléments qui peuvent être insérés dans le texte à l'endroit où se trouve le curseur. Cette liste peut aussi s'obtenir avec le menu contextuel, qui s'affiche avec un control-clic sur Mac ou avec un clic droit avec des souris à plusieurs boutons. On peut aussi l'afficher en tapant cmd-D (sur Mac) ou ctrl-D (Linux/Windows), ce qui permet de ne pas quitter ses mains du clavier.
Il est possible d'insérer un élément autour d'un texte ou d'un ensemble d'éléments déjà entrés. Il suffit de sélectionner cet ensemble, et d'insérer le nouvel élément comme on le ferait normalement.
Pour supprimer un élément, il suffit de mettre le curseur après l'une des balises (ou un autre élément graphique si l'élément n'est pas affiché avec des balises de début et de fin) et d'utiliser la touche d'effacement. Attention, cela supprime tout l'élément, avec tout ce qu'il y a dedans ! En cas de catastrophe, ne pas oublier que le menu annuler est là pour ça.
Certains éléments peuvent avoir des attributs. L'insertion d'un nouvel élément avec des attributs provoque l'affichage d'un dialogue permettant de choisir leurs valeurs. Pour les changer plus tard, il suffit de cliquer sur le bouton d'attributs de la balise de départ, ou de mettre le curseur à l'intérieur de l'élément et de regarder le panneau Attributs. Les attributs optionnels ont leur nom en vert, alors que les attributs obligatoires s'affichent en rouge.
Il existe dans de nombreux langages XML des éléments correspondant à des images. Il est alors possible de coller une image dans Jaxe, qui se charge de créer automatiquement le fichier de l'image correspondant à côté du fichier XML, et de créer un élément XML correspondant à l'image, avec la référence vers le fichier nouvellement créé. Le dialogue de modification des attributs possède deux boutons supplémentaires, Sélectionner un fichier... et Copier un fichier.... Cela permet de choisir un fichier pour l'image, et si le bouton Copier a été choisi de recopier le fichier de l'image à côté du fichier XML. Il faut en général éviter les références absolues vers les fichiers, comme /Users/toto/x.gif, et utiliser des chemins relatifs au dossier contenant le fichier XML. Par exemple, il est bien de créer un répertoire pour chaque fichier XML, et de créer un répertoire à l'intérieur pour contenir les images référencées par le fichier XML. La référence vers le fichier de l'image devient alors images/x.gif.
Jaxe possède un petit éditeur d'équations, qui permet d'insérer et de modifier facilement des équations. Il s'ouvre avec des éléments correspondant à des équations. L'éditeur comprend deux zone: celle du bas, où on tape l'équation sous forme de texte, et celle du haut, où s'affiche la représentation graphique de l'équation au fur et à mesure. Par exemple, si on tape racine(2)/3, l'image de l'équation s'affiche : . La syntaxe de l'éditeur est détaillé sur la page suivante.
Jaxe permet de rechercher et remplacer des mots dans le texte avec le menu Rechercher du menu Edition. Il est possible de faire des recherches avancées en utilisant la syntaxe XPath pour sélectionner des éléments XML en utilisant leur nom et les valeurs des attributs. Il n'est pas nécessaire de connaître XPath pour utiliser cette fonctionnalité, puisqu'un dialogue permet de construire des requêtes simples. On peut par exemple facilement rechercher un élément SECTION ayant un attribut titre donné.
Jaxe inclut Jazzy, un correcteur orthographique. Avant de l'utiliser, vérifiez que vous avez bien téléchargé un dictionnaire et qu'il est bien placé dans le répertoire dicos. Le dictionnaire de français se compose de deux fichiers, francais.dico et francais.phon. Sélectionnez ensuite un dictionnaire à partir des préférences de Jaxe, en choisissant le fichier .dico. Il suffit alors de choisir le menu Orthographe... dans le menu Edition.
Il est possible d'afficher le code source du fichier XML tel qu'il sera enregistré, avec le menu Source XML. La fenêtre qui s'affiche alors n'est pas éditable pour éviter des problèmes de mise à jour.
Jaxe permet d'éviter de faire des fichiers XML invalides, mais il se peut que l'on prépare un fichier qui n'est pas encore valide (parce-qu'un élément obligatoire n'a pas encore été ajouté, auquel cas l'élément parent doit s'afficher en orange, ce qui indique le problème mais ne le résout pas), ou que l'on ouvre un fichier créé autrement qu'avec Jaxe et qui n'est pas valide. Dans ce cas, on peut lancer une validation, qui est effectuée à partir du schéma XML (la validation n'est pas utile si la syntaxe simplifiée a été utilisée pour définir le langage). Cela se fait avec le menu Validation. S'il y a des erreurs, leur liste s'affiche, et un clic sur une erreur permet de voir où elle se trouve dans la fenêtre XML.
Un aperçu HTML peut être créé si une feuille de style a été créée pour le langage utilisé. L'aperçu est généré avec le menu Fenêtre HTML. Il est affiché avec Jaxe, mais pas forcément très bien si CSS est utilisé (Java Swing ne sait afficher pour l'instant que du HTML 3 !). Il peut donc être nécessaire d'ouvrir le fichier HTML avec un navigateur, ce qui se fait facilement avec un bouton de la fenêtre HTML après que le navigateur ait été défini dans les préférences de Jaxe. Dans la dernière version de Jaxe, l'aperçu s'ouvre directement dans le navigateur web choisi dans les préférences.
Un éditeur d'équation a été spécialement conçu pour Jaxe, afin d'ajouter et de modifier facilement des équations. Il fonctionne avec une zone de texte, où l'on entre une équation avec une syntaxe particulière, et l'image correspondant à l'équation s'affiche en temps réel au-dessus.
Avant de passer à la syntaxe, voici quelques règles à suivre pour entrer des équations :
Contrairement à la plupart des éditeurs d'équations, cet éditeur interprète le sens mathématique de l'équation. Il contruit ensuite l'image à partir de là. Cela permet d'obtenir un résultat graphique uniforme pour toutes les équations. Par contre, il n'est pas possible de spécifier de contrainte d'affichage, par exemple pour obtenir un espace supplémentaire entre deux caractères : l'utilisateur donne le sens de l'équation, et c'est l'éditeur qui se charge de trouver le meilleur affichage.
opérateurs '+' et '-'
Opérateur '*', affiché seulement quand deux nombres sont multipliés.
Exemple: 2*3*sin(1,5*pi) s'affiche :
Opérateur '/' (affiché sous forme de fraction) et fonctions 'slash' et 'fraction'.
Exemple: slash(a;b)/c s'affiche :
Le séparateur des arguments est le point virgule pour dinstinguer ce caractère de la virgule, utilisée pour les décimales: nomfonction(arg1;arg2;...)
Exemple: f(x;y) s'affiche :
Opérateur '^'.
Exemple: x^y s'affiche :
Opérateur '_'.
Exemple: x_(ab) s'affiche :
Fonction 'subsup' avec le premier terme, et les éléments à mettre en indice et en exposant.
Exemple: subsup(A;1;2) s'affiche :
Fonction 'racine' ou 'sqrt'.
Exemple: racine(x/2) s'affiche :
Fonction 'racine' avec le degré de la racine en deuxième argument.
Exemple: racine(x;3) s'affiche :
Fonction 'abs'.
Exemple: abs(x^3) s'affiche :
Fonction 'exp'.
Exemple: exp(x^2) s'affiche :
Fonction 'intégrale', avec 4 arguments: la fonction à intégrer, la variable d'intégration, la borne minimum et la borne maximum.
Exemple: intégrale(f(x);x;0;infini) s'affiche :
Fonctions 'somme' et 'produit', avec 3 arguments: la fonction à sommer, la borne minimum et la borne maximum.
Exemple: somme(ln(k)/k;k=1;10) s'affiche :
Fonction 'matrice', avec les lignes en argument sous forme de fonction 'ligne'.
Exemple: matrice(ligne(1;2;3);ligne(4;5;6)) s'affiche :
Variables avec le nom de la lettre, avec une majusucle au premier caractère du nom pour obtenir une lettre grecque majuscule.
Exemple: alpha*Delta*thetasym*upsih*piv s'affiche :
Variable avec le nom du caractère spécial.
soleil|étoile|terre|planck|infini|angström|petitl|chapeau|barre|astérisque|grandg|...
Exemple: M_soleil/M_terre=3,329*10^5 s'affiche :
Code spécial. Il vaut mieux éviter les espaces, mais quand l'opérateur est un mot, un espace peut améliorer la lisibilité de l'équation (sans changer l'affichage).
!=|~=|<=|>=|<<|>>|->|quelquesoit|ilexiste|drond|nabla|prop|croix|plusoumoins|cap|cup
Exemple: quelquesoit a ilexiste b<<c~=d>=e!=f s'affiche :
Fonction 'accent' avec la lettre et l'accent à ajouter par-dessus.
Exemple: accent(AB;->)+accent(ABC;chapeau)+accent(x;barre) s'affiche :
Fonction 'dtemps' avec la variable et le nombre de points à mettre au-dessus.
Exemple: dtemps(theta;2) s'affiche :
Fonction 'vecteur' avec le nom du vecteur.
Exemple: vecteur(u_theta) s'affiche :
Fonction 'pscalaire' avec les deux vecteurs en paramètre.
Exemple: pscalaire(vecteur(AB);vecteur(CD)) s'affiche :
Fonction 'norme' avec le vecteur en paramètre.
Exemple: norme(vecteur(AB)) s'affiche :
Certaines fonctions s'affichent sans parenthèses quand elle n'ont qu'un argument avec une variable.
Exemple: sin(a)*sin(b) s'affiche :
Fonction 'système', avec les lignes en argument.
Exemple: système(x+y=2;x-2*y=3) s'affiche :
Fonction 'unité', avec l'unité en deuxième argument.
Exemple: grandg=unité(6,67259*10^(-11);m^3*kg^(-1)*s^(-2)) s'affiche :
Notez que les unités s'affichent avec un style de caractères normal, alors qu'une variable comme s'affiche en italique.
Fonction 'factorielle'.
Exemple: factorielle(x) s'affiche :
Fonction 'moyenne'.
Exemple: moyenne(M_B) s'affiche :
On peut choisir les fenêtres visibles à gauche de la zone d'édition XML qui sont visibles par défaut.
Il s'agit du navigateur lancé quand on clique sur le bouton "Navigateur" dans la fenêtre de l'aperçu HTML. Quand on choisit "Définir" ou quand on clique sur le bouton "Navigateur" pour la permière fois, un dialogue s'ouvre demandant de localiser le programme du navigateur sur le disque dur. Il se trouve par exemple généralement dans le dossier "Applications" sur MacOS X, ou dans le dossier "Program Files" sur Windows.
Cette option permet de conserver tous les espaces du document XML édité, et en particulier les indentations des éléments XML. Par défaut, Jaxe efface automatiquement les espaces servant d'indentation, ce qui n'est pas gênant quand un document est toujours édité avec Jaxe (parce-que les indentations sont remises pour l'édition), mais peut poser problème quand un document peut aussi être édité avec un autre éditeur XML.
Permet l'affichage d'une icône sur les balises pour indiquer si l'élément est valide ou pas. Un élément peut ne pas être valide quand il requiert par exemple un certain nombre de sous-éléments et qu'ils n'ont pas tous été insérés.
Cette option permet de choisir si on préfère voir le dialogue d'attributs systématiquement quand on crée des éléments qui ne comportent pas d'attribut obligatoire. Le dialogue des attributs est toujours affiché s'il y a au moins un attribut obligatoire. Il peut par exemple être utile de décocher l'option quand on utilise des langages avec des attributs facultatifs peu fréquemment utilisés sur tous les éléments.
Un certain nombre de dictionnaires sont téléchargeables pour Jaxe. Il faut les placer dans le répertoire dicos du répertoire de Jaxe. On peut ensuite sélectionner le fichier avec l'extension .dico correspondant au dictionnaire que l'on veut utiliser pour la correction orthographique.
Choix du processeur XSLT :
Cet éditeur permet de créer un fichier de configuration afin de définir un environnement d'édition des éléments du langage XML. Grâce à son interface graphique simplifiée l'utilisateur peut facilement créer ou éditer des fichiers de config.
Un système (Mac, UNIX, Windows ou autre) avec une version de récente de Java (au moins 1.5). Pour tester la version de java de votre système, vous pouvez taper "java -version" sous la ligne de commande.
Il suffit en général de double-cliquer dessus sur MacOS X et Windows, ou de faire un clic droit et de choisir "Ouvrir avec Sun Java Runtime" sur Linux.
Nouveau: créer un nouveau fichier de config
Ouvrir: ouvrir et éditer un fichier de config existant. Accédez au menu principal.
Quitter: quitter l'application
Il faut ajouter au moins une langue
Choisissez un type de schéma W3C, sélectionnez le fichier dans votre dossier config.
La liste à gauche représente les éléments parents qui peuvent être des racines possibles. Sélectionnez un et ajoutez le dans la liste des racines. N'oubliez pas de valider les modifications en cliquant sur OK.
En cas d'ouverture d'un fichier de config existant, vous verrez les racines existantes dans la liste des Racines.
Il est nécessaire d'indiquer un ou plusieurs éléments racine utilisables pour les nouveaux documents.
Ce menu principal permet d'accéder aux différentes parties de l'éditeur:
Une autre configuration Jaxe, à utiliser en plus de celle-là.
Encodage des caractères à utiliser pour les nouveaux documents. Jaxe utilise ISO-8859-1 par défaut si rien n'est spécifié.
Définition de type de document, si une DTD doit être spécifiée dans les documents.
Enregistrement de l'emplacement du schéma XML dans les fichiers XML.
Spécification d'un préfixe à utiliser pour un espace de noms donné. Il est possible d'en spécifier plusieurs.
Les menus définis dans les fichiers de config s'affichent au-dessus de la zone de texte de Jaxe. Ils ne sont pas mélangés avec la barre de menus de Jaxe, qui se trouve au-dessus (en haut de l'écran sur Mac).
La liste à droite affiche des éléments XML recupérés depuis le shéma XML. On peut filtrer ces éléments grâce au champ de texte. En cas d'ouverture du fichier de config existant, la liste n'affiche que les éléments restants.
Crée un menu principal, contenant potentiellement des sous-menus.
Grace aux boutons 'Ajouter' et 'Retirer', on peut ajouter ou supprimer un menu d'insertion (permettant d'insérer un noeud XML). Il faut spécifier le nom du noeud et le type de noeud (élément par défaut). Il est aussi possible de définir un raccourci clavier, avec la touche correspondante.
Menu permettant d'exécuter une fonction à partir de sa classe Java. La seule fonction prédéfinie dans Jaxe est jaxe.FonctionNormal, qui permet de retirer tous les styles à une zone du texte. D'autres fonctions peuvent être ajoutées sous forme de plugin.
Un paramètre à transmettre à la fonction.
On peut éditer les textes d'un menu sélectionné en cliquant sur le bouton Editer les textes. Définissez un titre et une documentation pour chaque langue (prédéfinie auparavant).
Une fonctionnalité essentielle de Jaxe est la possibilité d'afficher et d'éditer les éléments XML de diverses façons, quelque soient leurs types dans le schéma XML. On pourra par exemple choisir d'afficher un élément représentant une table sous forme de table, ou un élément pointant vers une image sous forme d'image. L'objectif étant de faciliter l'édition des documents, sans pour autant perdre de vue leur aspect sémantique : on ne cherchera pas à afficher les éléments tels qu'on les verra sous forme de page web ou PDF, mais simplement avec une interface facilitant l'édition et mettant en évidence le sens des différents éléments.
Spécifie le type d'affichage d'un élément.
Valeur proposée à l'utilisateur quand le schéma ne fixe pas les valeurs autorisées.
On peut spécifier les valeurs suggérées d'un élément seulement si le type d'affichage est typesimple ou plugin
Permet de suggérer des valeurs pour un attribut.
Un paramètre d'affichage, en fonction du type d'affichage.
On peut éditer les textes d'un élément sélectionné en cliquant sur le bouton Editer les textes. Définissez un titre et une documentation pour chaque langue (prédéfinie auparavant).
Pour les textes d'un attribut, vous pouvez éventuellement définir le titre pour valeur.
Type | Description | Affichage |
---|---|---|
division | Deux barres allant jusqu'au bout de la fenêtre à droite, permettant de bien séparer de grandes parties du document. | |
zone | Deux balises et des retours à la ligne, pour séparer des parties plus petites qu'avec division. | |
string | Deux balises pour identifier une petite chaîne de caractères, sans retour à la ligne. | |
vide | Une seule balise, typiquement pour un élément vide. | |
tableau | Affichage de tableau de type tableur (avec le composant Swing JTable). Pratique pour des tableaux de nombres, mais ne permet pas d'utiliser des élements XML à l'intérieur des cellules (utiliser tabletexte pour cela). | |
tabletexte | Affichage d'une table permettant d'utiliser des éléments XML dans les cellules. Gère aussi les attributs rowspan et colspan pour regrouper les cellules verticalement et horizontalement. | |
style | A utiliser dans le cas (très rare si le langage XML code le sens par opposition à la forme) où un élément XML ne donne qu'une information de style. Affiche les caractères dans le style choisi (gras, italique, ...), sans aucune balise. Une alternative est d'utiliser le type string, qui permet aussi de choisir un style, mais affiche les balises. | |
fichier | Affiche une image à partir de son chemin sur le disque issu d'un attribut de l'élément XML (à préciser). Il est possible de faire des copier/coller d'images et Jaxe créera automatiquement l'élément XML et le fichier de l'image sur le disque, en utilisant le premier élément de type fichier. | |
symbole | Permet de choisir une image parmi un ensemble d'images situé dans un dossier. | |
liste | Pour un élément correspondant à une liste à points ou numérotée. Le sous-élément doit utiliser le type item. S'affiche comme zone, avec un bouton '+' pour créer de nouveaux éléments de la liste. | |
item | Elément d'une liste affichée avec le type liste. S'affiche avec des points ou des numéros, en fonction du type de liste. | |
typesimple | Affiche un élément ayant une simple valeur, dans une petite zone particulière. Utilisable uniquement pour les éléments ayant un type simple dans le schéma XML. L'affichage précis (zone de texte, menu ou boîte à cocher) et la validation se fait en utilisant les contraintes du schéma XML. | |
equation | Affiche l'image d'une équation. L'équation peut être éditée par un simple clic dessus, avec un dialogue présentant en même temps le texte de l'équation (avec une syntaxe très simple propre à Jaxe) et l'image correspondante. | |
formulaire | Affiche un élément et tous ses sous-éléments possibles sous la forme d'un formulaire, avec un champ par sous-élément. Attention à ne pas utiliser ce type avec des éléments pouvant avoir un sous-arbre infiniment profond ! | |
plugin | Si vous voulez définir votre propre élément Jaxe, c'est possible ! Voir la partie Création de nouveaux éléments Jaxe de la documentation pour les développeurs pour plus de précisions. En outre, certains plugins sont téléchargeables depuis cette page. |
Des paramètres peuvent être utilisés, en fonction des types d'affichage, avec l'élément PARAMETRE sous AFFICHAGE_ELEMENT.
Les affichages de type division et zone peuvent avoir un paramètre indiquant le nom de l'attribut à utiliser comme titre pour l'affichage.
Les affichages de type fichier et symbole doivent avoir un paramètre indiquant l'attribut repérant le nom du fichier.
Les affichages de type tableau et tabletexte doivent avoir des paramètres indiquant les éléments repérant les lignes et les cellules.
Les affichages de type style doivent avoir un paramètre indiquant le style.
Les affichages de type zone et string peuvent avoir un paramètre indiquant le style, un paramètre avec la police de caractères, et un paramètre avec la taille des caractères.
Les affichages de type equation doivent avoir des paramètres indiquant les attributs à utiliser pour le texte de l'équation et le nom de l'image.
Voilà la liste complète des paramètres possibles:
type | nom du paramètre | description |
---|---|---|
division et zone | titreAtt | attribut pour le titre |
division, zone, string et vide | attributsVisibles | affiche tous les attributs sur la balise de début (true|false) |
tableau et tabletexte | trTag | élément pour une ligne |
tableau et tabletexte | tdTag | élément pour une cellule |
tableau et tabletexte | thTag | élément pour une cellule d'entête |
tabletexte | colspanAttr | attribut de fusion des colonnes |
tabletexte | rowspanAttr | attribut de fusion des lignes |
tabletexte | alignAttr | attribut d'alignement du texte |
liste | typeListe | type de liste (POINTS|NUMEROS) |
style, zone et string | style | GRAS|ITALIQUE|EXPOSANT|INDICE|SOULIGNE|BARRE |
zone et string | police | police de caractères |
zone et string | taille | taille de caractères |
fichier et symbole | srcAtt | attribut avec le nom du fichier |
plugin | classe | classe Java dérivée de JaxeElement |
item | image1 | première image de pastille |
item | image2 | deuxième image de pastille |
equation | srcAtt | attribut avec le nom de l'image |
equation | texteAtt | attribut avec le texte de l'équation |
Un export possible à partir des documents, en utilisant une ou plusieurs transformations XSLT successives. Un export vers un fichier HTML provoquera l'apparition d'un menu "Aperçu HTML" dans le menu Fenêtres de Jaxe. Les autres exports sont accessibles depuis le menu Fichier de Jaxe.
Un fichier XSL à utiliser pour la transformation (XSLT 1.0). Doit générer du XHTML ou HTML pour la sortie HTML, et du XSL-FO pour la sortie PDF.
Un paramètre de la feuille de style. Il existe des noms magiques qui font que Jaxe va remplir automatiquement les valeurs avant la transformation (ces valeurs sont impossibles à obtenir autrement depuis XSLT) :
Le chemin vers le fichier XML
L'URI vers le fichier XML
Le chemin vers le fichier XSL
L'URI vers le fichier XSL
On peut souhaiter modifier tous les textes (appelés aussi chaînes de caractères ou strings) de l'interface créée avec la configuration. Soit pour améliorer la lisibilité sans avoir à modifier le schéma, soit pour fournir une interface dans une autre langue pour le même schéma. On peut aussi souhaiter fournir les textes pour un ensemble de langues, de manière à ce que les utilisateurs puissent éditer les mêmes documents, avec la même configuration Jaxe, mais avec une interface entièrement dans leur langue.
Ligne décrivant la configuration, affichée dans le dialogue de création de nouveaux documents de Jaxe.
Les chaînes de caractères associées à un menu, dont on sélectionne le nom
Les chaînes de caractères associées à un élément XML. Utilisées pour afficher l'élément, mais aussi pour le menu d'insertion de cet élément si aucun texte n'est spécifié pour le menu.
Un titre à utiliser pour une valeur d'élément ou d'attribut
Les chaînes de caractères associées à un attribut
Les chaînes de caractères associées à un export
Cliquer sur Enregistrer et choisissez le chemin de votre dossier config. Saisissez le nom du fichier (sans _config) sans l'extension .xml
Un dialogue vous demande d'enregistrer le chemin du schéma. le fichier de config et le schéma W3C doivent être dans le même dossier config.
Si vous quitter sans enregistrer votre fichier XML, un dialogue vous suggérera de le faire.
Lors de la création d'un nouveau document avec Jaxe, il est nécessaire de choisir un fichier de config.
Les fichiers de config de Jaxe permettent de spécifier l'interface d'édition des documents XML avec Jaxe pour un langage XML donné. Ceci recouvre les informations sur le langage XML, les options d'enregistrement, les menus (notamment pour insérer les éléments), les types d'affichage des éléments, les exports possibles, et toutes les chaînes de caractères utilisées dans l'interface, en fonction de la langue de l'utilisateur.
Les fichiers de config se trouvent dans le répertoire config de Jaxe, et leurs noms se terminent par "_config.xml". Les anciens fichiers de config (avant Jaxe 3.0) avaient un nom se terminant en "_Jaxe_cfg.xml". On peut les convertir dans la nouvelle version à partir d'un menu d'export dans le menu Fichier.
Il est possible d'ouvrir un schéma XML dans Jaxe et d'"exporter" vers un fichier de config. Cela crée automatiquement un fichier de config qui permettra l'édition dans Jaxe pour ce schéma, mais les choix automatiques pour les types d'affichage sont souvent mauvais ou insuffisants : cet export ne doit pas être considéré comme une méthode de création des fichiers de config, mais peut servir pour commencer la création d'un fichier de config à partir d'un schéma particulièrement complexe.
Lors de la création d'un nouveau fichier de config, la première chose à faire est de définir le langage XML correspondant. Cela se fait en général en indiquant un fichier de schéma XML existant. Les schémas doivent utiliser la syntaxe du W3C (WXS) ou celle des schémas Relax NG (en XML).
Les schémas WXS étant assez complexe, il existe une alternative permettant de définir un langage très simple dans Jaxe, à l'intérieur du fichier de configuration. L'élément SCHEMA_SIMPLE permet de définir les éléments XML du langage, leurs attributs, et les relations hiérarchiques entre les éléments. Il n'est pas possible avec ces schéma de spécifier par exemple un ordre de sous-éléments dans un élément donné, ou encore des types pour les éléments et les attributs. Mais cela peut servir pour faire un prototype rapide, ou lorsque les besoins sont très simples.
Définition d'un élément XML pour les schémas simples.
Un sous-élément possible (qui doit être défini par ailleurs).
Un ensemble de sous-éléments possibles (l'ensemble doit être défini ailleurs).
Attribut d'élément.
Valeur possible pour un attribut.
Définition d'un ensemble d'éléments (utilisable ensuite pour ne pas avoir à répéter les mêmes sous-éléments pour de nombreux éléments).
Après avoir défini le langage XML, il est nécessaire d'indiquer à Jaxe un ou plusieurs éléments racine utilisables pour les nouveaux documents. On indique pour chaque racine possible le nom de l'élément avec l'élément RACINE.
Enfin, il est possible d'indiquer d'autres fichiers config à utiliser en parallèle avec celui décrit avec l'élément AUTRE_CONFIG, de manière à pouvoir mélanger 2 langages XML dans un document. Ceci est par exemple utilisé pour la création de documents XSLT.
Arbre des éléments sous l'élément LANGAGE :
Encodage des caractères à utiliser pour les nouveaux documents. Jaxe utilise ISO-8859-1 par défaut si rien n'est spécifié.
Définition de type de document, si une DTD doit être spécifiée dans les documents.
Spécification d'un préfixe à utiliser pour un espace de noms donné. Il est possible d'en spécifier plusieurs.
Arbre des éléments sous l'élément ENREGISTREMENT :
Les menus définis dans les fichiers de config s'affichent au-dessus de la zone de texte de Jaxe. Ils ne sont pas mélangés avec la barre de menus de Jaxe, qui se trouve au-dessus (en haut de l'écran sur Mac).
Un menu principal, contenant potentiellement des sous-menus.
Un menu permettant d'insérer un noeud XML à l'endroit du curseur. Il faut spécifier le nom du noeud et le type de noeud (élément par défaut). Il est aussi possible de définir un raccourci clavier, avec la touche correspondante.
Menu permettant d'exécuter une fonction à partir de sa classe Java. La seule fonction prédéfinie dans Jaxe est jaxe.FonctionNormal, qui permet de retirer tous les styles à une zone du texte. D'autres fonctions peuvent être ajoutées sous forme de plugin.
Un paramètre à transmettre à la fonction.
Séparateur de menu.
Arbre des éléments sous l'élément MENUS :
Une fonctionnalité essentielle de Jaxe est la possibilité d'afficher et d'éditer les éléments XML de diverses façons, quelque soient leurs types dans le schéma XML. On pourra par exemple choisir d'afficher un élément représentant une table sous forme de table, ou un élément pointant vers une image sous forme d'image. L'objectif étant de faciliter l'édition des documents, sans pour autant perdre de vue leur aspect sémantique : on ne cherchera pas à afficher les éléments tels qu'on les verra sous forme de page web ou PDF, mais simplement avec une interface facilitant l'édition et mettant en évidence le sens des différents éléments.
Spécifie le type d'affichage d'un élément.
Un paramètre d'affichage, en fonction du type d'affichage (voir plus bas pour une liste).
Valeur proposée à l'utilisateur quand le schéma ne fixe pas les valeurs autorisées.
Permet de suggérer des valeurs pour un attribut.
Plugin à utiliser pour les instructions de traitement (processing instructions).
Plugin à utiliser pour afficher les commentaires XML.
Arbre des éléments sous l'élément AFFICHAGE_NOEUDS :
Type | Description | Affichage |
---|---|---|
division | Deux barres allant jusqu'au bout de la fenêtre à droite, permettant de bien séparer de grandes parties du document. | |
zone | Deux balises et des retours à la ligne, pour séparer des parties plus petites qu'avec division. | |
string | Deux balises pour identifier une petite chaîne de caractères, sans retour à la ligne. | |
vide | Une seule balise, typiquement pour un élément vide. | |
tableau | Affichage de tableau de type tableur (avec le composant Swing JTable). Pratique pour des tableaux de nombres, mais ne permet pas d'utiliser des élements XML à l'intérieur des cellules (utiliser tabletexte pour cela). | |
tabletexte | Affichage d'une table permettant d'utiliser des éléments XML dans les cellules. Gère aussi les attributs rowspan et colspan pour regrouper les cellules verticalement et horizontalement. | |
style | A utiliser dans le cas (très rare si le langage XML code le sens par opposition à la forme) où un élément XML ne donne qu'une information de style. Affiche les caractères dans le style choisi (gras, italique, ...), sans aucune balise. Une alternative est d'utiliser le type string, qui permet aussi de choisir un style, mais affiche les balises. | |
fichier | Affiche une image à partir de son chemin sur le disque issu d'un attribut de l'élément XML (à préciser). Il est possible de faire des copier/coller d'images et Jaxe créera automatiquement l'élément XML et le fichier de l'image sur le disque, en utilisant le premier élément de type fichier. | |
symbole | Permet de choisir une image parmi un ensemble d'images situé dans un dossier. | |
liste | Pour un élément correspondant à une liste à points ou numérotée. Le sous-élément doit utiliser le type item. S'affiche comme zone, avec un bouton '+' pour créer de nouveaux éléments de la liste. | |
item | Elément d'une liste affichée avec le type liste. S'affiche avec des points ou des numéros, en fonction du type de liste. | |
typesimple | Affiche un élément ayant une simple valeur, dans une petite zone particulière. Utilisable uniquement pour les éléments ayant un type simple dans le schéma XML. L'affichage précis (zone de texte, menu ou boîte à cocher) et la validation se fait en utilisant les contraintes du schéma XML. | |
equation | Affiche l'image d'une équation. L'équation peut être éditée par un simple clic dessus, avec un dialogue présentant en même temps le texte de l'équation (avec une syntaxe très simple propre à Jaxe) et l'image correspondante. | |
formulaire | Affiche un élément et tous ses sous-éléments possibles sous la forme d'un formulaire, avec un champ par sous-élément. Attention à ne pas utiliser ce type avec des éléments pouvant avoir un sous-arbre infiniment profond ! | |
plugin | Si vous voulez définir votre propre élément Jaxe, c'est possible ! Voir la partie Création de nouveaux éléments Jaxe de la documentation pour les développeurs pour plus de précisions. En outre, certains plugins sont téléchargeables depuis cette page. |
Des paramètres peuvent être utilisés, en fonction des types d'affichage, avec l'élément PARAMETRE sous AFFICHAGE_ELEMENT.
Les affichages de type division et zone peuvent avoir un paramètre indiquant le nom de l'attribut à utiliser comme titre pour l'affichage.
Les affichages de type fichier et symbole doivent avoir un paramètre indiquant l'attribut repérant le nom du fichier.
Les affichages de type tableau et tabletexte doivent avoir des paramètres indiquant les éléments repérant les lignes et les cellules.
Les affichages de type style doivent avoir un paramètre indiquant le style.
Les affichages de type zone et string peuvent avoir un paramètre indiquant le style, un paramètre avec la police de caractères, et un paramètre avec la taille des caractères.
Les affichages de type equation doivent avoir des paramètres indiquant les attributs à utiliser pour le texte de l'équation et le nom de l'image.
Voilà la liste complète des paramètres possibles:
type | nom du paramètre | description |
---|---|---|
division et zone | titreAtt | attribut pour le titre |
division, zone, string et vide | attributsVisibles | affiche tous les attributs sur la balise de début (true|false) |
tableau et tabletexte | trTag | élément pour une ligne |
tableau et tabletexte | tdTag | élément pour une cellule |
tableau et tabletexte | thTag | élément pour une cellule d'entête |
tabletexte | colspanAttr | attribut de fusion des colonnes |
tabletexte | rowspanAttr | attribut de fusion des lignes |
tabletexte | alignAttr | attribut d'alignement du texte |
liste | typeListe | type de liste (POINTS|NUMEROS) |
style, zone et string | style | GRAS|ITALIQUE|EXPOSANT|INDICE|SOULIGNE|BARRE |
zone et string | police | police de caractères |
zone et string | taille | taille de caractères |
fichier et symbole | srcAtt | attribut avec le nom du fichier |
plugin | classe | classe Java dérivée de JaxeElement |
item | image1 | première image de pastille |
item | image2 | deuxième image de pastille |
equation | srcAtt | attribut avec le nom de l'image |
equation | texteAtt | attribut avec le texte de l'équation |
Un export possible à partir des documents, en utilisant une ou plusieurs transformations XSLT successives. Un export vers un fichier HTML provoquera l'apparition d'un menu "Aperçu HTML" dans le menu Fenêtres de Jaxe. Les autres exports sont accessibles depuis le menu Fichier de Jaxe.
Un fichier XSL à utiliser pour la transformation (XSLT 1.0). Doit générer du XHTML ou HTML pour la sortie HTML, et du XSL-FO pour la sortie PDF.
Un paramètre de la feuille de style. Il existe des noms magiques qui font que Jaxe va remplir automatiquement les valeurs avant la transformation (ces valeurs sont impossibles à obtenir autrement depuis XSLT) :
Le chemin vers le fichier XML
L'URI vers le fichier XML
Le chemin vers le fichier XSL
L'URI vers le fichier XSL
Arbre des éléments sous l'élément EXPORTS :
On peut souhaiter modifier tous les textes (appelés aussi chaînes de caractères ou strings) de l'interface créée avec la configuration. Soit pour améliorer la lisibilité sans avoir à modifier le schéma, soit pour fournir une interface dans une autre langue pour le même schéma. On peut aussi souhaiter fournir les textes pour un ensemble de langues, de manière à ce que les utilisateurs puissent éditer les mêmes documents, avec la même configuration Jaxe, mais avec une interface entièrement dans leur langue.
Pour ces raisons, l'élément STRINGS représente un ensemble de textes pour une langue et un pays donné, et il est possible d'en spécifier plusieurs dans le même fichier de config. On mettra par exemple langue="pt" pays="BR" pour le portugais brésilien, ou juste langue="fr" pour spécifier la langue française sans précision sur le pays.
Ligne décrivant la configuration, affichée dans le dialogue de création de nouveaux documents de Jaxe.
Les chaînes de caractères associées à un menu, dont on spécifie le nom
Un titre
Une documentation
Les chaînes de caractères associées à un élément XML. Utilisées pour afficher l'élément, mais aussi pour le menu d'insertion de cet élément si aucun texte n'est spécifié pour le menu.
Un titre à utiliser pour une valeur d'élément ou d'attribut
Les chaînes de caractères associées à un attribut
Les chaînes de caractères associées à un export
Arbre des éléments sous l'élément STRINGS :
Les plugins sous forme de fichiers jar ne sont gérés qu'à partir de Jaxe 3.0.
Pour installer un plugin, il suffit de placer son fichier .jar dans le dossier plugins du dossier de Jaxe. Les nouvelles fonctionnalités du plugin (types d'affichage ou fonctions) peuvent alors être utilisées dans les fichiers de config.
Nom du plugin | Type | Objectif | Config requise | Téléchargement | Code source |
---|---|---|---|---|---|
JEEquaTeX | élément Jaxe | Editer des équations TeX avec une prévisualisation | Un serveur avec le script tex.php, ou latex dvips et convert installés chez les utilisateurs | JEEquaTeX.jar | JEEquaTeX.tar |
ImportationTableau | fonction | Importer un tableau du presse-papier au format texte automatiquement vers un élément Jaxe de type tabletexte | - | ImportationTableau.jar | ImportationTableau.java |
EnvoiContrib | fonction | Envoi d'un dossier contenant un fichier XML (de même nom) et des fichiers liés sur un serveur FTP | - (la bibliothèque JavaFTP est incluse) | EnvoiContrib.jar | EnvoiContrib.tar |
JEChemin | élément Jaxe | Représente un chemin vers un fichier ou un répertoire. | - | JEChemin.jar | JEChemin.java |
Si vous avez d'autres plugins à proposer, n'hésitez pas !
On supposera ici que le lecteur a déjà lu les documentations utilisateur, administrateur et sur les fichiers de configuration, et qu'il est familier de la programmation en Java.
Cette documentation explique comment utiliser Jaxe au sein d'une autre application, et comment lui ajouter des extensions pour l'affichage des éléments.
La classe de lancement de Jaxe est (sans surprise) jaxe.Jaxe. Cette classe rassemble la gestion des évènements externes à l'application (ouverture de fichier, fermeture, etc...), et on peut donc y jeter un œil pour voir comment un nouveau document Jaxe est créé ou comment un document est ouvert.
Une autre classe importante est jaxe.JaxeFrame. Cette classe correspond à une fenêtre de document XML. Elle utilise la classe jaxe.JaxeMenuBar pour la gestion de la barre de menus, celle-ci étant malheureusement (à cause d'une limitation de Java) liée à la fenêtre.
Le plus simple, pour utiliser Jaxe dans une autre application, est probablement de se servir de la classe jaxe.JaxeTextPane, qui correspond à la zone de texte dans la fenêtre XML. Comme cette classe est dérivée de java.swing.JTextPane, elle peut facilement être ajoutée où on le souhaite selon le layout de l'application hôte. Le constructeur requiert un JaxeDocument (lié au DOM) et une JFrame (la fenêtre parent).
L'objet de classe jaxe.JaxeDocument doit être initialisé avec un fichier de configuration de Jaxe (géré par la classe jaxe.Config) et éventuellement avec un fichier XML ou avec un objet DOM.
Pour récapituler, voilà une série d'instructions permettant d'incorporer une zone de texte Jaxe dans un Container parent se trouvant dans une fenêtre frame:
JaxeDocument jaxeDoc = new JaxeDocument("monlangage_config.xml"); JaxeTextPane jaxeTextPane = new JaxeTextPane(jaxeDoc, frame); jaxeDoc.lire(urlFichierXML); // ou jaxeDoc.setDOMDoc(documentDOM); parent.add(jaxeTextPane);
Les éléments peuvent être insérés avec le menu contextuel, ou avec des actions jaxe.ActionInsertionBalise. Le constructeur de ActionInsertionBalise demande le document Jaxe, et l'élément DOM correspondant à la définition de l'élément dans le fichier de configuration de Jaxe.
On peut plus tard enregistrer le document avec la méthode JaxeDocument.ecrire(File f).
On appelle élément Jaxe une classe dérivée de la classe jaxe.JaxeElement, décrivant un affichage pour un élément XML donné. Les éléments Jaxe standard sont regroupés dans le package jaxe.elements. Ils correspondent à des types d'affichage des fichiers de configuration (par exemple, le type string correspond à l'élément Jaxe jaxe.elements.JEString).
La création d'un nouvel élément Jaxe se fait en créant une nouvelle classe dérivée de jaxe.JaxeElement. Il peut ensuite être utilisé dans un fichier de configuration avec le type plugin, en précisant la classe à utiliser. Par exemple:
<AFFICHAGE_ELEMENT element="BOUBOULE" type="plugin"> <PARAMETRE nom="classe" valeur="JEBooleen"/> </AFFICHAGE_ELEMENT>
Deux méthodes doivent impérativement être définies dans l'élément Jaxe: init et nouvelElement. Deux autres ne sont utiles que si on utilise des balises de début et de fin (comme expliqué plus loin): insPosition et (si l'élément a des attributs) majAffichage.
init est utilisé pour l'initialisation et l'insertion du composant Swing dans la zone de texte. On trouve en paramètres la position à laquelle l'élément doit être inséré, et le nœud DOM. A partir de ces paramètres, il faut insérer le composant avec la méthode JaxeElement.insertComponent(Position pos, JComponent comp).
Les choses se compliquent si on veut utiliser un composant pour une balise de départ et un composant pour une balise de fin, en laissant Jaxe traiter récursivement les sous-éléments. Il faut alors récupérer la position dans le texte après l'insertion de la balise de départ (elle est retournée par insertComponent), ajouter les enfants avec creerEnfants(Position), puis insérer la balise de fin avec un nouvel appel à insertComponent (avec l'objet Position passé en paramètre à creerEnfants. Il faut ensuite mettre à jour le style des caractères pour les balises et le texte des enfants, ce qui nécessite d'avoir conservé la position de départ avant le premier insertComponent. Voilà un exemple:
int offsetdebut = pos.getOffset(); Position newpos = insertComponent(pos, composantBaliseDebut); creerEnfants(newpos); insertComponent(newpos, composantBaliseFin); if (newpos.getOffset() - offsetdebut - 1 > 0) { SimpleAttributeSet style = attStyle(null); if (style != null) doc.setCharacterAttributes(offsetdebut, newpos.getOffset() - offsetdebut - 1, style, false); }
La méthode nouvelElement est appelée quand l'utilisateur insère un nouvel élément. Elle doit éventuellement demander des informations à l'utilisateur (comme par exemples les attributs), et renvoyer l'élément DOM correspondant. On peut se servir de jaxe.DialogueAttributs pour demander les attributs à l'utilisateur.
insPosition peut être appelée pour obtenir la position à laquelle sera placé le curseur après l'insertion d'un nouvel élément. Par défaut le curseur sera placé après l'élément, mais il peut être utile de le placer entre les balises de début et de fin quand celles-ci sont utilisées.
Enfin, majAffichage est appelée pour mettre à jour l'affichage quand les attributs ont été modifiés dans le panneau d'attributs.
Le fichier suivant est un élément Jaxe utilisable pour un booléen, qui utilise une case à cocher pour l'affichage: JEBooleen.java. Il peut être compilé et placé dans un fichier jar pour être utilisable comme nouveau plugin de Jaxe, comme ceux disponibles sur la page des plugins.
On peut facilement ajouter un menu opérant une fonction particulière au lieu d'une insertion d'élément. Il suffit pour cela de créer une classe dérivant de jaxe.Fonction et implémentant la méthode appliquer, qui fournit le document Jaxe sur lequel on travaille, et les positions de début et de fin de la sélection dans le texte.
public void appliquer(JaxeDocument doc, int start, int end)
On peut obtenir le document DOM à partir du document Jaxe en utilisant doc.DOMdoc. On peut aussi obtenir un élément Jaxe à partir d'une position du texte avec doc.elementA(int pos), ou les éléments dans l'intervalle [start,end] avec rootJE.elementsDans(start, end). Le noeud DOM correspondant est obtenu avec JaxeElement.noeud.
L'exemple suivant permet d'ajouter un menu donnant des statistiques sur le document.
<MENU nom="plugins"> <MENU_FONCTION classe="pluginsjaxe.FonctionStatistiques" nom="Statistiques"/> </MENU>
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.
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.
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.
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 :
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 :
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 :
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.
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.