# XUL

XUL (pronuncía-se zúl ([zu:l])), XML User Interface Language, é uma linguagem de marcação de interface de utilizador desenvolvida para suportar aplicações do Projecto Mozilla, tais como o Firefox e o Thunderbird.
Enquanto que a XUL não é uma norma pública, reutiliza muitas normas e tecnologias preexistentes, incluindo CSS, JavaScript, DTD e RDF, que faz com que seja relativamente fácil de ser aprendida por pessoas com experiência na área de desenho e programação web.
O maior benefício que a XUL traz é a definição simples e portátil de widgets comuns, o que reduz a dificuldade do desenvolvimento de software numa maneira análoga à que foi oferecida pelas linguagens de programação de quarta geração.
Outras linguagens de marcação são: MXML, Laszlo XML, UIML e XAML.

## Introdução

Uma interface XUL é tipicamente definida por três componentes:
* Conteúdo
    Os documentos XUL, que definem a disposição da interface de utilizador.
* Skin
    Os arquivos CSS e de imagem, que definem a aparência de uma aplicação.
* Locale
    Os documentos DTD, que definem entidades para a fácil localização de software.
A título de exemplo, veja um programa "Olá Mundo" escrito em XUL.

## Elementos XUL

As especificações XUL cobrem uma vasta gama de elementos, que, de certa forma, são incluidos nos seguintes tipos:
* Elementos de nível de topo
    exemplo: janela, página, caixa de diálogo, assistente, etc.
* Widgets
    exemplo: etiqueta ou rótulo, botão, caixa de texto, caixa de listagem, botão de opção, caixa de seleção, árvore, menu, barra de ferramentas, caixa de grupo, abas (guias), selector de cor, espaçador, divisor, etc.
* Modelo de caixa
    exemplo: caixa, grelha, pilha, plataforma, etc.
* Eventos e scripts
    exemplo: script, comando, chave, emissor, observador, etc.
* Fonte de dados
    exemplo: molde, regra, etc.
* Outros
    exemplo: overlay, iframe, browser, editor, etc.
É possível usar elementos de outras aplicações de XML em documentos XUL, tais como XHTML e MathML.
Alguns widgets comuns - tais como "spinbox", deslizador, "canvas" - não se encontram disponíveis nas especificações atuais da XUL mas encontram-se na lista de tarefas da especificação 2.0 do formato.

## Utilização

Apesar da XUL ser mais usada na criação de aplicações do projeto Mozilla e nas suas extensões, é possível usá-las em aplicações web transferidas via HTTP. Uma das aplicações XUL deste tipo mais conhecidas é o browser Mozilla Amazon, que oferece uma interface rica para a procura de livros na loja online Amazon. No entanto, muitas das características mais poderosas dos projetos Mozilla, tais como objetos privilegiados XPCOM, não se encontram disponíveis em documentos remotos XUL (a não ser que o script seja assinado digitalmente, e tais documentos também sofrem de várias limitações do browser, tal como a incapacidade de carregar remotamente documentos XUL, DTD e RDF.

## Referência cinematográfica

O nome XUL é uma referência ao filme Caça-Fantasmas, em que um fantasma chamado Zuul possui uma personagem chamada Dana (representada por Sigourney Weaver) e declara "Não existe Dana, apenas Zuul". Como XUL é usado para definir um interface em vez de um documento, os seus desenvolvedores adotaram o chavão "Não existem dados, apenas XUL". Isto é referido pelo URI namespace XML no início de qualquer documento XUL, quando visto por uma aplicação capacitada para XUL.
"Keymaster" e "gatekeeper" são também referências ao mesmo script. Não é apenas a única referência ao filme nas aplicações do projeto Mozilla. Por exemplo, o componente depurador de JavaScript é chamado de Venkman, uma das suas personagens principais.