# XML User Interface Language

XML User Interface Language (XUL) is een gebruikersinterface-opmaaktaal, ontwikkeld om Mozilla-toepassingen zoals Mozilla Firefox en Mozilla Thunderbird te ondersteunen. Het acroniem XUL wordt uitgesproken als zool, zodat het rijmt met "cool" (zie onder)).
XUL is een standaard van de Mozilla Foundation, en beschrijft de verschillende elementen binnen XUL (zie onder) en zaken als lay-out en toetsenbord-shortcuts ('accesskeys'). Binnen XUL kunnen ook zelf elementen worden gedefinieerd met behulp van XBL. XUL maakt ook gebruik van bestaande standaarden en technologieën, zoals CSS, JavaScript, DTD en RDF.
Het belangrijkste voordeel van XUL is dat het de ontwikkeling van user interfaces overzichtelijker maakt en kan versnellen. Dit vermindert het werk in software-ontwikkeling op een gelijkaardige manier als het voordeel dat 4GL-hulpmiddelen opleveren.

## Introductie

Een XUL-interface wordt typisch gedefinieerd als drie discrete verzamelingen met componenten:

### Content

    de XUL-documenten, die de lay-out van de gebruikersinterface definiëren.

### Skin

    de CSS- en afbeeldingsbestanden, die het uiterlijk van de applicatie bepalen.

### Locale

    de DTD-documenten, die entiteiten definiëren voor gemakkelijke softwarelocalisatie.

## XUL-elementen

De XUL-specificatie bevat een grote verscheidenheid aan elementen, die ruwweg tot de volgende types behoren:

### Top-level elementen

    bijvoorbeeld window, page, dialog, wizard, enz.

### Widgets

    bijvoorbeeld label, button, text box, list box, radio button, check box, tree, menu, toolbar, group box, tab box, color picker, spacer, splitter, enz.

### Box model

    bijvoorbeeld box, grid, stack, deck, etc.

### Events en Scripts

    bijvoorbeeld script, command, key, broadcaster, observer, enz.

### Data source

    bijvoorbeeld template, rule, etc.

### Andere

    bijvoorbeeld overlay (analoog aan SSI, maar aan de client-kant), iframe, browser, editor, enz.
Het is mogelijk om elementen uit andere XML-toepassingen binnen XUL-documenten te gebruiken, zoals XHTML en MathML.
Enkele populaire widgets - zoals spinbox, slider en canvas - zijn niet beschikbaar in de huidige XUL-specificatie, maar staan op de todo-lijst voor XUL 2.0 .

## Gebruik

Hoewel XUL het vaakst wordt gebruikt voor de ontwikkeling van de Mozilla-toepassing zelf en zijn extensies, kan het gebruikt worden voor webapplicaties die over HTTP verstuurd worden. Een van de bekendste XUL-toepassingen van dit type is de Mozilla Amazon Browser, die een uitgebreide interface biedt om boeken op te zoeken op Amazon.com. Veel van de krachtige opties van Mozilla, zoals geprivilegieerde XPCOM-documenten, zijn echter niet beschikbaar voor externe XUL-documenten (tenzij het script digitaal getekend is), en zulke documenten zijn ook onderhevig aan verschillende beperkingen van de browser, zoals de onmogelijkheid om externe XUL, DTD en RDF documenten in te laden.

## Filmreferenties

De naam XUL is een verwijzing naar de film Ghostbusters, waarin de geest van een oude Sumerische godheid met de naam Zuul bezit heeft genomen van het personage Dana Barrett (gespeeld door Sigourney Weaver) en verklaart "There is no Dana, only Zuul". Omdat XUL ongewoon is voor XML aangezien het een interface beschrijft in plaats van een document, pasten de ontwikkelaars de spreuk aan tot "There is no data, only XUL". Daar wordt ook naar verwezen door de URI van de XML-naamruimte op het begin van elk XUL-document, http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul; wanneer men dit bekijkt met een toepassing die XUL ondersteunt, dan toont het document waarnaar de link verwijst, de spreuk in grote letters in het midden van het scherm (gelijkaardig aan de afbeelding rechts).
"Keymaster" en "gatekeeper" zijn eveneens referenties naar hetzelfde verhaal. Dit is niet de enige verwijzing naar Ghostbusters in Mozilla - zo wordt bijvoorbeeld de JavaScript debugger-component Venkman genoemd, een van de hoofdpersonages uit de film.