Ajax JavaScript CSS HTML 5 Firefox

XUL - XML-based User interface Language

Création de widgets portables en XML, présentation générale

L'homme XUL

XUL fournit à l'interface utilisateur les bases pour une application portable. De même que DHTML a été créé pour l'interface des pages web, XUL l'est pour les applications.

XUL a été défini pour construire l'interface utilisateur de Mozilla, navigateur open source.
Le nom vient d'une créature du film Ghostbuster.
XUL se prononce "zool".

En quoi consiste XUL?

XUL décrit un contenu avec un comportement, puis une présentation pour ce contenu, et ensuite on peut localiser l'interface pour la langue d'un pays.
Les composantes de chaque niveau sont les suivants:

  1. niveau contenu: XUL, XBL, JavaScript,
  2. comportement: gestion des évènements,
  3. présentation: CSS, images,
  4. local: DTD, fichiers de propriétés.
    Le modèle à objets peut être appliqué à plusieurs niveaux.

Quand vous programmez en XUL, il vous faut savoir utiliser RDF (pour les templates), XPCom, XPConnect et JavaScript. XBL est optionnel

Les composantes de XUL:

RDF

RDF signifie: Resource Description Framework (Cadre de description des ressources).
Il permet de créer des fichiers XML qui reprennent la structure des composants qui les utilisent.
On peut alors, dans XUL, créer une liste structurée à partir d'un fichier en décrivant un seul élément.

XBL

XBL signifie: eXtensible Binding Language.
Son but est de modifier les balises XML de XUL, ou les remplacer par d'autres. Donc de changer l'interface d'une application.
Le langage définit les éléments XML pour les widgets, évènements, propriétés, méthodes.

XTF

eXtensible Tag Framework (cadre extensible de balises) remplace XBL dans les nouvelles versions de Gecko et donc XUL et permet de définir plus directement de nouveaux éléments XML. (Firefox 1.5).
Les éléments xtf peuvent être écrits en C.

Overlay

Le but est de fractionner un GUI en plus petits composants réutilisables.
C'est aussi le mécanisme d'ajout de composants à une application XUL. Overlay est un ensemble de fichiers XUL utilisé pour décrire le contenu de l'interface et l'adapter aux préférences de l'utilisateur.

L'AOM

L' Application Object Model est à XUL ce que le Document Object Model est à une page HTML. DOM décrit les pages web, et AOM décrit les applications. AOM permet de manipuler les objets (widgets) écrits en XML pour construire l'interface graphique.

XPCom

(Cross Platform Component Object Model) Il a pour but l'utilisation de code natif par une application XUL, et améliorer les performances. La partie JavaScript de l'interface XUL peut ainsi être réécrite en C et compilée.
Cela fournit un système de logiciel modulaire. Un composant XPCom peut être écrit en tout langage et utilisé par un programme écrit en tout langage.

XPConnect

Il a pour but l'utilisation de librairies binaires avec XUL.
C'est une interface permettant à JavaScript d'utiliser les fichiers XPCom. Les objets JavaScript peuvent utiliser les objets binaires définie à travers XPCom et inversement.

XPInstall

Il a pour but l'installation d'application XUL à partir d'Internet ou Intranet.
Donc c'est un installeur de composant XUL sur réseau, principalement le web.

Les templates

A placer des données en cours de traitement dans un document XUL.
Pour citer Mozilla, un template XUL est "une collection de règles utilisée pour construire un contenu XUL et HTML à partir d'une ou plusieurs sources de données RDF ".
Un template décrit un modèle de contenu et les conditions pour l'appliquer.
Le navigateur crée le document XUL ou HTML en copiant le template et en le remplissant de valeurs prise dans une source de données RDF.

<template>
    <rule>
        <conditions>
             ...
        </conditions>
        <action>
             ...
        </action>
     <rule>
     <rule> .....etc...
</template> 
Syntaxe de template

Les conditions peuvent être vides ou inclure un ou plusieurs tests.
Pour chaque occurrence ou l'ensemble des conditions est rencontré, l'action est accomplie.

Autres composantes

XUL utilise aussi DOM, les CSS, HTML, JavaScript.

Comment lancer un programme XUL

Vous pouvez charger un fichier ayant l'extension XUL à partir de Firefox comme une page HTML.
Certains projets que j'ai testés ne fonctionnent pas et requièrent une installation spéciale décrite ci-dessous...
Si XULRunner est installé, on le lance dans la fenêtre de commande avec en paramètre le fichier de description. Si par exemple demo.XUL à un fichier de configuration demo.ini:

 xulrunner demo.ini

Le format d'un fichier de configuration est donné dans l'archive de XULRunner.

Comment utiliser XUL comme interface graphique d'un programme

  1. Il faut connaître les widgets disponibles.
  2. Les définitions (XUL, RDF et autres fichiers) doivent être placées dans le répertoire chrome directory de Mozilla.
  3. Votre application doit être enregistrée dans le fichier d'installation de chrome.
  4. L'application est lancée par la commande: mozilla -chrome suivie par le chemin du fichier XUL principal.

Voir parmi les sites en ressources pour plus de détails.

mozilla
    |--chrome
      |--mygui
        |--content     // fichiers XUL, RDF, js 
        |--locale       // fichiers de texte dtd
        |--skin&       // fichiers css 
Arborescence des fichiers de l'interface utilisateur XUL

Le système de développement

Le système est constitué de ces éléments:

XUL ou XAML?

XUL est multi plateformes, et fonctionne en mode natif, tandis que XAML fonctionne sous .NET et compatibles .NET (mono, etc.)
XAML à la particularité d'utiliser les noms de classes graphiques comme balises et les propriétés comme attributs XML. XML devient une classe, à la mode de CSharp, plus simple à implémenter mais plus limité.
XUL utilise XPCom pour étendre les possibilités JavaScript, tandis que l'on peut placer du code directement dans xaml.
En outre XUL est interprété et utilise des dessins bitmaps, XAML est compilé et dessine en vectoriel.
Un avantage de XUL est qu'il intègre HTML directement tandis que XAML utilise des éléments équivalents à ceux de HTML.
En conclusion, xaml est plus simple à écrire, mais ne fonctionne pas en mode natif.
Un article compare XUL et tous les autres langages d'interface XML.

Inconvénients de XUL

Spécifications

XUL se fonde sur ces spécifications par le W3C: XML 1, HTML 4.0, CSS 2, DOM 2.
Et ECMAScript 1.5 par l'ECMA.
Le format XUL est défini par Mozilla.

Ressources et liens externes