# Linguagem de marcação de interface de usuário

Uma linguagem de marcação de interface de utilizador é uma linguagem de marcação que processa e descreve interfaces gráficas de usuário e controles. Muitas dessas linguagens de marcação são dialetos de XML e dependem de um mecanismo de linguagem de script preexistente, geralmente um mecanismo JavaScript, para renderização de controles e capacidade de script extra.
O conceito das linguagens de marcação de interface de usuário é baseado principalmente no desejo de impedir a "reinvenção da roda" no design, desenvolvimento e função de uma interface de usuário; tal reinvenção vem na forma de codificar um script para toda a interface do usuário. A típica linguagem de marcação de interface com o usuário solidifica frequentemente o programa reutilizado ou o código de script na forma de marcação, facilitando o foco no design de uma interface de usuário em um dialeto compreensível, em vez de se concentrar na função.
As linguagens de marcação de interface do usuário, como a maioria das linguagens de marcação e programação, dependem dos tempos de execução de sub-aplicativo para interpretar e renderizar o código de marcação como código de programa que pode ser processado e colocado na forma desejada. Em linguagens de marcação de interface de usuário baseadas em XML, a marcação é geralmente interpretada e representada como uma árvore de nós que pode ser manipulada no tempo de execução pelo código do aplicativo ou pelo script de usuário carregado dinamicamente.

## Linguagens de marcação de interface do usuário
### XFD

XFD, que significa XML Form Definition, é a linguagem de marcação de interface do usuário por trás do produto STARLIMS, desenvolvido pela Abbott Informatics. O produto STARLIMS possui um ecossistema completo de ferramentas de tempo de execução e tempo de projeto para executar e criar formulários visuais usando a linguagem XFD. STARLIMS v10 é alimentado por um tempo de execução XFD desenvolvido usando o Microsoft.NET Framework e hospedado no navegador Internet Explorer. O STARLIMS v11 introduz um mecanismo XFD adicional baseado em um mecanismo de transformação do lado do servidor que transforma o XFD em dados compatíveis com HTML5 projetados para serem executados em qualquer navegador compatível com HTML5. O XFD é programável em linguagem baseada em JavaScript.

### QML

O QML é uma linguagem de marcação multiplataforma para a criação de interfaces de usuário com tecnologia OpenGL aceleradas por hardware para dispositivos que variam de dispositivos móveis a computadores. As interfaces QML são manipuladas usando a linguagem JavaScript. O QML faz parte do Qt Project, originalmente da Nokia, mas agora de propriedade da Digia.

### MXML

MXML é a linguagem de marcação de interface de usuário baseada em XML introduzida pela Macromedia em março de 2004. Agora é parte da versão 4 do Adobe Flex SDK do Open Source (http://opensource.adobe.com). Arquivos MXML compilados no Flash SWF através do Flex SDK e são renderizados no navegador da Internet, por meio do plug-in do Adobe Flash ou como aplicativos independentes de plataforma cruzada, por meio do SDK de código-fonte aberto do Adobe AIR.

### UIML

OASIS UIML é uma linguagem de marcação de interface de usuário padrão. É um padrão aberto onde a implementação não é restrita a um único fornecedor.

### XUL

O principal idioma de interface dos produtos da Mozilla Foundation é o XUL. Documentos XUL são renderizados pelo mecanismo Gecko, que também renderiza documentos XHTML e SVG. Ele coopera com muitos padrões e tecnologias existentes, incluindo CSS, JavaScript, DTD e RDF.

### UsiXML

UsiXML (que significa User Interface Extensible Markup Language) é uma linguagem de marcação compatível com XML que descreve a interface do usuário para vários contextos de uso, tais como Interfaces Character Usuários (cuis), Interfaces Gráficas (GUIs), auditiva Interfaces de usuário e interfaces de usuário multimodais. Em outras palavras, aplicativos interativos com diferentes tipos de técnicas de interação, modalidades de uso e plataformas de computação podem ser descritos de maneira a preservar o design independentemente das características peculiares da plataforma de computação física.

### WTKX

WTKX é uma linguagem de marcação baseada em XML usada para construir aplicativos Apache Pivot. Embora seja mais comumente usado para definir a estrutura da interface do usuário de um aplicativo, ele pode ser usado para construir declarativamente qualquer tipo de hierarquia de objetos Java.

### XAL

eXtensible Application Language é a linguagem de marcação do Enterprise Web 2.0 Suite da Nexaweb. Os desenvolvedores podem usar essa linguagem para definir aplicativos que serão executados como um cliente Java ou um cliente Ajax.

### SVG

Scalable Vector Graphics é uma linguagem de marcação para gráficos proposta pela W3C que pode suportar gráficos avançados para aplicações web e móveis. Embora o SVG não seja uma linguagem de interface do usuário, ele inclui suporte a gráficos vetoriais/rasterizados, animação, interação com o DOM e CSS, mídia incorporada, eventos e capacidade de script. Quando esses recursos são usados em combinação, são possíveis interfaces de usuário ricas.
O SVG também pode ser sobreposto em outra linguagem de marcação de interface de usuário compatível com XML, como XUL e XForms, como a parte rica em elementos gráficos de uma interface de usuário.

### TUIX

TUIX é uma linguagem de marcação baseada em XML para definir interfaces de usuário no Tribiq CMS. Os desenvolvedores podem definir a aparência das interfaces e suas interações. Os arquivos TUIX de Plugins diferentes são mesclados antes da renderização, facilitando a modificação fácil das interfaces existentes e a adição de novas funcionalidades.

### XAML

O XAML é um sistema de marcação subjacente aos componentes da interface do usuário do.NET Framework 3.0 e superior da Microsoft. Seu escopo é mais ambicioso do que o da maioria das linguagens de marcação de interface de usuário, já que a lógica e os estilos do programa também são incorporados no documento XAML. Funcionalmente, ele pode ser visto como uma combinação de XUL, SVG, CSS e JavaScript em um único esquema XML.
Algumas pessoas criticam esse design, já que muitos padrões (como os já listados) existem para fazer essas coisas. No entanto, espera-se que seja desenvolvido com uma ferramenta visual em que os desenvolvedores nem precisem entender as marcações subjacentes.
Algumas pessoas criticam esse design, já que muitos padrões (como os já listados) existem para fazer essas coisas. No entanto, espera-se que seja desenvolvido com uma ferramenta visual em que os desenvolvedores nem precisem entender as marcações subjacentes.

### I3ML

O I3ML é um mecanismo de Entrega de Aplicativos thin client proprietário desenvolvido pela CoKinetic Systems Corp, com suporte ao cliente fornecido por um plug-in de navegador que renderizará aplicativos semelhantes a janelas em uma infraestrutura HTTP com necessidades mínimas de largura de banda.

### OpenLaszlo (LZX)

O OpenLaszlo é um ambiente de tempo de execução que compreende um ambiente de tempo de execução e uma linguagem de definição de interface (Laszlo XML — LZX). O LZX é uma linguagem de interface de usuário declarativa que define os widgets, o layout do aplicativo e elementos de script (usando JavaScript) para criar seu aplicativo. O LZX é agnóstico em tempo de execução com o tempo de execução atualmente suportado dentro do Macromedia/Adobe Flash. Um tempo de execução experimental chamado Laszlo "Legals" que permitirá que os aplicativos OpenLaszlo (LZX) sejam executados em vários ambientes de tempo de execução, como o DHTML/AJAX.

### HMVCUL

Hierarchical Model View Controller User Interface Language (HMVCUL) é uma linguagem de interface de utilizador marcação XML que suporta a criação e encadeamento de componentes atómicos tríade MVC usados na construção de aplicações HMVC GUI. O tempo de execução associado fornece métodos que permitem a configuração de propriedades, ligação de dados e eventos de cada um dos elementos tríade do MVC (widget, controlador, modelo). O tempo de execução faz isso mapeando elementos XML definidos em um arquivo HMVCUL para objetos dentro da estrutura, atributos para propriedades ou eventos. O encadeamento é realizado seguindo a estrutura da árvore descrita dentro do arquivo HMVCUL.

### WasabiXML

WasabiXML é uma linguagem de marcação XML usada para definir a interface gráfica em aplicativos com tecnologia Wasabi. É mais comumente usado com o Winamp para fazer skins Winamp. O WasabiXML foi desenvolvido pela Nullsoft para o Winamp, mas também é utilizável com outros aplicativos com o Wasabi SDK.
O elemento raiz em WasabiXML é <WasabiXML> (para as aparências do Winamp, também é <WinampAbstractionLayer>). O elemento <skininfo> mostra as informações para uma capa. A interface gráfica é mantida pelo elemento <container> e o elemento GUI visualizável básico é <layout>. A seguir, um exemplo de uma GUI simples com um elemento de botão:
O WasabiXML suporta muitos elementos GUI, incluindo:
* <button>
* <text>
* <vis>
* <eqvis>
* <layer>
* <animatedlayer>
* <groupdef> usado em conjunto com <group>
<groupdef> permite que o desenvolvedor defina um grupo de objetos GUI que podem ser reutilizados em qualquer lugar da capa. O Wasabi também suporta XUIs, que não são nada mais do que <groups> alimentadas por um script MAKI, permitindo que os desenvolvedores criem componentes de GUI (widgets) próprios adicionando modularidade.
O WasabiXML tem um namespace XML 'Wasabi ::', que define GUIs comuns sem a necessidade de declarar seus caminhos de imagem.

### MARIA

MARIA é uma linguagem baseada em XML de nível de abstração, declarativa e múltipla universal para modelar aplicativos interativos em ambientes onipresentes.

### FXML

O FXML é uma linguagem baseada em XML para definir a interface do usuário de aplicativos JavaFX.

### De outros

Outras linguagens de marcação incorporadas em estruturas existentes são:
* VTML para Macromedia HomeSite
Formato.xib do Interface Interface Builder da Apple
Algumas delas são compiladas em formas binárias.
Em aviônicos, o padrão ARINC 661 prescreve um formato binário para definir interfaces de usuário em cockpits de vidro.
Os formulários Borland VCL (.dfm e.lfm) são arquivos de texto que descrevem as janelas dos aplicativos Delphi e Lazarus. Eles são compilados no executável final em formato binário e usam o RTTI para funcionar.