# XML User Interface Language

XUL (XML User Interface Language) è un linguaggio per definire interfacce grafiche sviluppato per supportare le applicazioni basate su Mozilla, come Mozilla Firefox e Mozilla Thunderbird. Come UIML, è un'applicazione basata su XML per descrivere interfacce grafiche. Si pronuncia zuul.
XML è utilizzato anche da Android Studio.
L'intera interfaccia di Firefox, Thunderbird, Seamonkey e altri programmi Mozilla è costruita in XUL.
Sebbene XUL non sia uno standard pubblico W3C, esso riutilizza molte tecnologie standard preesistenti, come i CSS, JavaScript, Document Type Definition (DTD) e Resource Description Framework (RDF), che lo rende molto semplice da imparare per persone che hanno una conoscenza di sviluppo e design di applicazioni web.
Il maggiore vantaggio di XUL è il suo fornire una interfaccia semplice e portabile per i componenti più comuni. Questo riduce lo sforzo implementativo in modo analogo a quello fornito dagli strumenti 4GL.

## Introduzione

Un'interfaccia XUL è tipicamente definita da tre insiemi discreti di componenti:

### Contenuto

    il documento XUL, che definisce il layout dell'interfaccia.

### Skin

    il file CSS e le immagini, che definiscono l'aspetto esteriore dell'applicazione

### Localizzazione

    il documento DTD, che definisce i componenti per una localizzazione più semplice.

## Elementi XUL

Le specifiche XUL comprendono un gran numero di elementi che, in prima approssimazione, appartengono alle seguenti aree:

### Elementi principali

    finestre, pagine, finestre di dialogo, wizard, ...

### Componenti (widget)

    etichette, bottoni, caselle di testo, liste, alberi, menu, barre degli strumenti, tabulazioni, spaziatori, ...

### Box model

    box, grid, stack, deck, ...

### Eventi e script

    script, comandi, tasti, broadcaster, observer, ...

### Sorgenti di dati

    template, regole, ...

### Altri

    overlay, iframe, browser, editor
È possibile usare, all'interno di documenti XUL, anche altri documenti XML, come XHTML e MathML, grazie all'uso dei namespace.
Alcuni componenti comuni, come spinbox o canvas, non sono disponibili nelle specifiche XUL correnti, ma sono nella lista delle cose da implementare per la versione 2.0 di XUL.

## Modo d'uso

Sebbene XUL sia usato soprattutto per creare l'applicazione Mozilla e tutte le sue estensioni, è possibile usarla anche per applicazioni web trasferite via HTTP. L'applicazione XUL maggiormente conosciuta è la Mozilla Amazon Browser, che fornisce una ricca interfaccia per cercare i libri presenti su Amazon. Comunque molte delle funzioni più potenti di Mozilla (come l'uso degli oggetti XPCOM), non sono disponibili ai documenti eseguiti in remoto (a meno che lo script non sia firmato digitalmente).

## Origine del nome

Il nome XUL deriva dal film Ghostbusters, nel quale un fantasma di nome Zuul si impossessa di un personaggio di nome Dana (interpretato da Sigourney Weaver) e dichiara "Non c'è Dana, solo Zuul" (There is no Dana, only Zuul). Poiché XUL è stranamente usato per definire in XML un'interfaccia, invece del contenuto, gli sviluppatori hanno adottato come slogan il motto "Non ci sono dati, solo XUL" (There is no data, only XUL). Questo si può vedere nell'URI usato nel namespace XML all'inizio di ogni documento XUL https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul; quando si vede con una applicazione XUL, il documento mostra uno slogan in grandi lettere al centro dello schermo.
"Keymaster" (mastro di chiavi) e "gatekeeper" (guardiano di porta) sono anch'essi presi dallo stesso film. Questo non è l'unico riferimento al film in Mozilla: ad esempio, il debugger JavaScript è chiamato Venkman, il nome di uno dei personaggi del film.