UXML : Manuel de l'utilisateur


  [Menus] [Projet] [Exceptions] [Analyse] [Génération] [Macro] [Lien avec un serveur HTTP] [Historique]
 

But du système

UXML est un "parser" permettant de contrôler la syntaxe de document XML. Il comprend également un "moteur" de transformation XSL.

Son but est principalement de générer des documents interactifs en format HTML dans une perspective de formation.

 

Menus

 
 

La première partie du menu document permet de gérer un projet. Un projet est constitué d'un document xml (ultérieurement plusieurs) et d'information diverses (description, options, ...).

Les fichiers projets ont l'extension .uxm

La deuxième partie concerne un éditeur de texte standard. En particulier DTD, document XML, texte source de macro.

Les extensions (en minuscule) adoptées sont:

.dtd (DTD) ; .xml (document XML) ; .xsl ("feuille" de transformation XSLT) ; .txt (source de macro). Lors du "parsing" ces fichiers sont transformés en respectivement .ptd ; .pml ; .psl ; .mac. Cette notation n'est pas totalement obligatoire mais il vaut mieux l'adopter.

  Menu standard. La dernipre rubrique permet éa réouverture de la fenêtre de message au cas où celle-ci aurrait été (malencontreusement) fermée.
 

La rubrique Projet permet de modifier les paramètres du projet.

La rubrique Exceptions permet de préciser les balises "non-xml" de HTML (ou d'autres).

 

Les rubriques du menu "Parsing" concerne l'analyse de documents XML.

La rubrique DTD permet de contrôler un DTD (fichier .dtd transformé en .ptd)

La rubrique XML/HTML permet de vérifier qu'un fichier HTML est bien formé (fichier .htm transformé en .ptm) (admet des balises optionnels ou non conforme telle que <BR> de même que des valeurs d'attributs non quotées).

La rubrique XML/Well formed permet de vérifier qu'un fichier XML est bien formé (fichier .xml transformé en .pml)

La rubrique XML/Valid permet de vérifier qu'un fichier XML est "valide". Cette vérification travail sur un fichier "bien formé" (réécriture du fichier .pml)

Le menu voisin "Generating" permet d'appliquer une transformation XSLT à un fichier XML (bien formé).

Les feuilles de style doivent avoir été préalablement validées.

 

La rubrique Validation/Root name space only permet d'appliquer la validation qu'aux éléments possèdant le même "Name space" que l'élément racine. Cela permet de valider une feuille XSL qui inclu d'autres balises (HTML notamment).

La rubrique Validation/Parse attribute value permet d'effectuer la transformation de la valeur de certains attributs (MATCH, SELECT, TEST). Ultérieurement cette fonction sera commandée par le type de l'attribut.

La rubrique Warnings contient deux options: Message (des messages supplémentaires sont émis), Sound (un beep est émis en cas d'erreur).

 

 

La rubrique Compile utilise le texte source (.txt) se trouvant dans l'éditeur et crée un fichier .mac.

La rubrique Run demande de choisir une macro et l'exécute

 

Projet

Les champs contiennent:

Le nom du projet (suivi de l'extension .uxm il deviendra le nom du fichier)

Le nom de l'élément (balise) principal. Le nom des éléments est "case sensitive" (option en préparation).

La description du projet.

Le nom du fichier de sortie en cas de transformation (par défaut un éditeur).

Il est possible de préciser que la sortie doit être formatée en HTML (cela concerne la notation des éléments vides).

Le nom du fichier contenant la source XML. Par defaut: le nom du projet avec l'extension .xml. La notation *.xxx attribue le nom du projet avec l'extension xxx.

(version 1.3) Un champo a été ajouté pour le nom de la dtd. (sans extension)

Exceptions

Il est possible de façon sommaire d'indiquer des balises "exceptionnelles" qui ne remplissent pas les conditions XML. C'est-à-dire les éléments vides et les éléments à balise de fermeture optionnelle. Actuellement ces paramètres sont contenus dans un simple fichier (attention: pas d'espace ni de ligne vide !) contenant une entête obligatoire, la liste des balises marquant des éléments vide et la liste des balises marquant des éléments à balise de fermeture optionnelle. Les éléments de cette dernière liste sont sous la forme nom de l'élément, liste des balises (aussi bien en ouverture qu'en fermeture) marquant la fin de l'élément, la liste des balises qui, en fermeture,marquent la fin de l'élément.

fuzzy_loaded
empty("BR")
empty("IMG")
etc.
to_close_before("P",["DIV","FORM","TABLE","P","TR","TD"],["BODY"])
to_close_before("LI",["LI"],["UL","OL"])
etc. 

On notera que cette technique ne permet pas de gérer des pages HTML complexes (listes imbriquées, par exemple).

Analyse (Parsing)

DTD: Vérification de la syntaxe de la DTD contenu dans l'éditeur.

XML/HTML : vérification de la syntaxe (document bien formé) d'un document HTML simple.

XML/Well formed : vérification de la syntaxe (document bien formé) d'un document XML.

XML/Valid : validation d'un document XML à l'aide de sa DTD.

Transformation

La rubrique "Generating" du menu applique une feuille de style à un document XML.

Macro

Les macros sont des programmes qui permettent de réaliser des opérations répétitives: mise à jour des documents .pml après mise à jour des documents XML correspondant, modification systématique de tous les documents HTML contenu dans un répertoire, etc.

Les objets primitifs

Nombres, chaînes et expressions régulières (regexp)

Les variables

Variables scalaires : $var
Variables "paramètres": $1, $2, ...
Variables systèmes: $&, $_, $@, ....

Les instructions

Toutes les instructions d'une macro se terminent par un ';'.

Instruction simples

cd expr|var
Fixe le répertoire de travail
var = expr
Affectation d'une valeur à une variable
set option <liste d'option>
Les options sont sous la forme +/-<option>. Les options sont les suivantes: validation_root, parse_attr_val, html_output
parse
Cette instruction est suivie de directives avec ou sans paramètres qui sont des noms de fichiers sous la forme de chaîne ou d'une variable:
parse -dtd <file> : effectue le contrôle d'une DTD. Création du fichier .ptd (si nécessaire).
parse -wf <xml file> [-o <pml file>] [-q] : vérifie que <xml file> est "bien formé". Un fichier "compilé" est produit si la directive -q est absente. Par défaut (sans directive -o), ce fichier a le même nom avec l'extension pml.
parse -html <html file> [-o <ptml file>] [-q] : même fonctionnement que précédemment pour des fichiers html.
parse -valid [<xml file>] [-o <pml file>] [-q] : valide un fichier xml. Si celui-ci n'apparaît pas en paramètre, les données de la dernière analyse effectuée sont utilisées.
transform [-pml <pml file>] [-xsl <xsl file>] [-opt] [-o <file>]
travaille avec un fichier "compilé" (ou les données de la dernière analyse effectuée). Il est possible d'utiliser une feuille de transformation XSL externe. Si la directive -opt est présente, cette feuille de style n'est utilisée que pour les fichiers ne possèdant pas de feuille de style propre.

Instructions de bloc

if (COND) {instructions}[elsif (COND) {instructions} ...] [else {instructions}
Instruction conditionnelle. Une condition est sous la forme expr oper expr où oper est == ou != ou =~ ou !~. D'autres types de conitions existent. -e expr (le fichier représenté par expr existe).
for (COND) {instructions}
Les conditions actuellement prisent en compte sont : -f expr (passe en revue les fichiers compatible avec expr, souvent une regexp)

ff

Fonctions diverses

alert(expr) pour débuggage

Les exemples

0) macro0.txt : cette macro n'est pas très utile, elle "parse" une DTD.

1) macro1.txt : permet de vérifier qu'un fichier xml est "bien formé"

2) macro2.txt : fait une validation (si nécessaire commence par vérifier l'aspect "bien formé")

3) macro3.txt : cette macro valide une feuille de style puis transforme un fichier l'utilisant

4) macro4.txt : cette macro montre la possibilité de réécrire des fichiers HTML grâce à l'utilisation d'une feuille de style externe

5) macro5.txt : fait de même pour tous les fichiers d'un répertoire.

 

   
   

 

 


Voici des marches à suivre pour essayer des exemples qui marchent:

0) Cas simple: validation d'un document xml; ce n'est pas spectaculaire mais on peut essayer d'introduire quelques erreurs pour voir (et tester!) :

  1. Charger (load source) demo.dtd et utiliser la rubrique 'DTD' du menu 'Parsing'.
  2. Ouvrir (open) le projet demo.uxm et utiliser successivement les rubriques 'XML / Well formed' et 'XML / Valid' du menu 'Parsing'.

1) Cas avec transformation au moyen d'une feuille de style:

  1. Charger (load source) xsl.dtd et utiliser la rubrique 'DTD' du menu 'Parsing'. Cette opération est permettra ensuite de valider toutes les feuilles de style.
  2. Ouvrir (open) le projet xsl.uxm et utiliser successivement les rubriques 'XML / Well formed' et 'XML / Valid' du menu 'Parsing'. Cette opération valide la feuille de style value-of.xsl. Dans ce cas, il est fait abstraction des objets n'appartenant pas à l'espace de nom XSL (c'est-à-dire dont les balises ne sont pas de la forme XSL:xxx).
  3. Charger (load source) periodic.dtd et utiliser la rubrique 'DTD' du menu 'Parsing'. Cette DTD permettra de valider le document à transformer.
  4. Ouvrir (open) le projet exemple1.uxm et utiliser successivement les rubriques 'XML / Well formed' et 'XML / Valid' du menu 'Parsing'.
  5. Utiliser la rubrique 'Generating' qui affichera une présentation HTML du document exemple1.xml.

2) exemple2.uxm (DTD: periodic.dtd, feuille de style liée au projet xsl-numb.uxm) est une petite extension du projet précédent avec l'usage de la fonction 'position()' qui retourne le numéro d'ordre de l'élément dans l'élément parent. De plus, un test est effectué en comparant les valeurs des fonctions 'position()' et 'last()'.

3) exemple3.uxm (DTD: periodic.dtd, feuille de style liée au projet for-each.uxm) reprend les même données mais utilise la directive XSL:FOR-EACH plutôt que XSL:APPLY-TEMPLATES ce qui est une prossibilité plus économique pour les pages avec répétition d'un même élément.

4) exemple4.uxm (DTD: employes.dtd, feuille de style liée au projet xsl-choo.uxm) montre l'utilisation de la directive XSL:CHOOSE.

5) exemple5.uxm (DTD: periodic.dtd, feuille de style liée au projet test-att.uxm) montre l'utilisation de la valeur d'un attribut,

6) exemple6.uxm (DTD: document.dtd, feuille de style to-xhtml.xsl) est une exemple de transformation en HTML.

7) L'exemple 7 est d'un autre type. Les données sont consituées d'un fichier HTML (exemple7.htm) auquel aucune feuille de style xsl est attachée. C'est la macro macro4.mac qui transforme ce fichier en un nouveau fichier HTML (insertion d'une feuille de style). On pourrait imaginer introduire une option supplémentaire pour ce type de fichier sans feuille de style. Toutefois ces transformations s'effectuent souvent sur un nombre important de fichiers. Une macro est donc utilisée la plupart du temps.

8) exemple8.uxm (DTD: periodic.dtd, feuille de style liée au projet xsl-attr.uxm) montre les possibilité de génération d'attibuts et l'éléments "empty".

9) exemple9.uxm (DTD: periodic.dtd, feuille de style liée au projet cdata.uxm) usage de la section CDATA pour mettre des caractères "interdits" (pas vraiment standard semble-t-il !).

10) h0-e01.uxm (feuille de style qcm2.xsl) est une exemple plus complexe qui permet de générer une page HTML comprenant des scripts. La DTD: pexp.dtd n'étant pas finalisée, n'est pas jointe. Le fichier ex_qcm2.xml ne pourra pas être validé, ce qui n'empêche pas la transformation d'opérer.

11) procesverbal.uxm (DTD: dpv.dtd; feuille de style: tpv.xsl) un exemple qui pourrait montrer un usage de bureautique simple.

 


Références

Usage sur serveur

Un module (wwwxml) permettant la transformation XSL "à la volée" existe (pour serveurs IIS ou PWS ou Apache/Linux). L'exécutable wwwxmlplus qui peut être utilisé en lieu et place effectue une compilation automatique en cas d'absence du fichier .pml ou d'une date antérieure à celle du fichier xml correspondant.

Mode d'emploi:

  1. Mettre le fichier xml compilé (<nom>.pml) dans un répertoire "exécutable" (par exemple: /scripts/xml) de même que la feuille de style (.xsl)
  2. Associer à l'aide de la base de registres l'extension .xml au programme wwwxml.exe
  3. La requête à effectuer est http://.../scripts/xml/<nom>.xml

Remarques:

  1. L'utilisation du fichier pml en lieu et place du fichier xml évite de trop charger le serveur inutilement. L'exécutable wwwxmlplus effectue une compilation automatique en cas d'absence du fichier .pml ou d'une date antérieure à celle du fichier xml correspondant. Une "moulinette" permettant de faire les mises à jour xml -> pml peut être créée grâce à la commande xml2pml.
  2. La PI <?XSL-FLAG VALUE="html-output"?> permet de demander une sortie HTML.

 


Archive: uxml.zip (1.4) wwwxml.zip

Version linux

 

Merci de transmettre vos remarques, suggestions, questions. Vous pouvez également participer au projet, soit du point de vue technique (sources prolog disponibles) soit pour les applications pédagogiques.