使用者界面標記語言

使用者界面標記語言（user interface markup language）是一類渲染和描繪圖形使用者界面及控制項的置標語言。此類標記語言很多都是XML的方言，並且依賴於已經存在的腳本語言引擎（通常為JavaScript引擎）來渲染控制項和額外的腳本。

使用者界面標記語言的概念主要基於使用者界面的設計，避免使用者界面設計、開發和功能上的「重造輪子」，諸如重新編寫、發明整個使用者界面。典型的使用者界面標記語言以標記形式固化經常重用的程序或腳本代碼，使其更容易以可理解的語言來設計使用者界面，而不是專注於具體的功能。

使用者界面標記語言如大多數標記和程式語言一樣，依賴著子應用程式運行時來將標記代碼解釋和呈現為可以處理和植入所需形式的程序代碼。在基於XML的使用者界面標記語言中，則傾向於依賴網路瀏覽器的排版引擎作為運行時，大多數代碼被重新解釋為JavaScript交給排版引擎。這意味著JavaScript可以用於將使用者界面標記語言擴展到未被排版引擎當前功能所覆蓋的範圍。

## 使用者界面標記語言

### XFD

XFD，表示XML Form Definition，是支撐STARLIMS產品 (http://www.starlims.com ) 的使用者界面標記語言，由Abbott Informatics開發。STARLIMS產品具有運行時和設計時工具的整套生態系統，使用XFD語言運行和創建可視化表單。STARLIMS v10 is powered by an XFD runtime developed using Microsoft .NET Framework and hosted in Internet Explorer browser. STARLIMS v11 introduces an additional XFD engine based on a server-side transformation engine that transforms the XFD into HTML5 compatible data designed to run on any HTML5 compliant browser. XFD is programmable in JavaScript based language.

### QML

QML是一種跨平台標記語言，用於為行動裝置和桌面設備創建有硬體加速的OpenGL驅動的使用者界面。QML接口使用JavaScript語言操縱。QML是Qt Project的一部分，最初由諾基亞擁有，現在由Digia擁有。

### MXML

MXML是基於XML的使用者界面標記語言，由是Macromedia於2004年3月推出。它目前是開放原始碼 (http://opensource.adobe.com ) Apache Flex SDK第四版的一部分。MXML文件通過Flex SDK編譯成Flash Swf，在網路瀏覽器上通過Adobe Flash呈現，或者通過開源的Adobe AIR SDK作為獨立的跨平台應用程式。

### UIML

UIML是使用者界面標記語言的最早開拓者。它是一個開源標準，其實現不局限於單一供應商。

### XUL

Mozilla基金會產品主要使用的界面語言是XUL。XUL文檔由Gecko引擎呈現，並也呈現XHTML和SVG文檔。它與許多現有標準和技術相結合，包括CSS、JavaScript、DTD及RDF。

### UsiXML

UsiXML (which stands for User Interface Extensible Markup Language) is a XML-compliant markup language that describes the UI for multiple contexts of use such as Character User Interfaces (CUIs), Graphical User Interfaces (GUIs), Auditory User Interfaces, and Multimodal User Interfaces.

In other words, interactive applications with different types of interaction techniques, modalities of use, and computing platforms can be described in a way that preserves the design independently from peculiar characteristics of physical computing platform.

### WTKX

WTKX是一種基於XML的標記語言，用於構建Apache Pivot應用程式。儘管它最常用於定義應用程式使用者界面的結構，它也可以用來聲明性地構造任何類型的Java對象層次結構。

### XAL

eXtensible應用程式語言是Nexaweb's Enterprise Web 2.0套件的標記語言。開發人員可以使用這種語言來定義將作為Java客戶端或AJAX客戶端運行的應用程式。

### SVG

可縮放向量圖形（SVG）是一種用於圖像的標記語言，由W3C提議，可為Web和行動應用程式支持豐富圖形。雖然SVG不是使用者界面語言，但它包括矢量/光柵圖形、動畫、與DOM和CSS交互、嵌入式媒體、事件以及可腳本化的支持。如果組合使用這些功能，有可能製作出豐富的使用者界面。

SVG也可以疊加在另一個XML兼容的使用者界面標記語言上（如XUL和XForms），作為使用者界面的富圖形部分。

### TUIX

TUIX是一個基於XML的標記語言，用於定義Tribiq CMS的使用者界面。開發人員可以定義界面的外觀及其相互作用。不同插件的TUIX文件在渲染之前被合併，便於修改現有接口和添加新功能。

### XAML

XAML是微軟.NET框架3.0及更高版本的建構使用者界面組件的一種標記系統。它的範圍比大多數使用者界面標記語言更有抱負，其程序邏輯和風格也被嵌入到了XAML文檔。在功能上，它可以被看作是XUL、SVG、CSS和JavaScript被組合到一種XML模式。

有些人批評這個設計，因為許多標準（例如上文列出的標準）已經在做這些事。但是，預計將會開發一個可視化工具，開發人員甚至不需要了解底層標記。

### I3ML

I3ML is a proprietary thin client Application Delivery mechanism developed by CoKinetic Systems Corp , with client support provided by a browser plugin that will render windows-like applications over an HTTP infrastructure with minimal bandwidth needs.

### OpenLaszlo (LZX)

OpenLaszlo is a runtime environment that comprises a runtime environment and an interface definition language (Laszlo XML - LZX). LZX is a declarative user interface language which defines the widgets, application layout and scripting elements (using JavaScript) to create your application. LZX is runtime agnostic with the currently supported runtime being within Macromedia/Adobe Flash. An experimental runtime called Laszlo "Legals" that will allow OpenLaszlo (LZX) applications run in multiple runtime environments, such as DHTML/AJAX.

### HMVCUL

分層模型視圖控制器使用者界面語言（HMVCUL）是一種XML標記使用者界面語言，其支持創建和連結用於構建HMVC GUI應用程式的原子MVC三元組件。The associated runtime provides methods which enable configuration of properties, data binding and events of each of the MVC triad elements (widget, controller, model). The runtime accomplishes this by mapping XML elements defined in an HMVCUL file to objects inside the framework, attributes to properties or to events. Chaining is accomplished by following the tree structure described inside the HMVCUL file.

### WasabiXML

WasabiXML是一種XML標記語言，用於定義驅動的應用程式的圖形界面。它最常見的用途是為Winamp製作Winamp皮膚。WasabiXML由Nullsoft為Winamp開發，但也可使用Wasabi SDK用於其他應用程式。

WasabiXML中的根元素是`<WasabiXML>`（對於Winamp皮膚來說，它是`<WinampAbstractionLayer>`。）`<skininfo>`元素顯示皮膚的資訊。圖形界面依託`<container>`元素和，基礎可見的GUI元素為`<layout>`。下面是一個簡單的例子，展示有一個按鈕元素的圖形使用者界面：

```xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<WinampAbstractionLayer version="1.2">
  <skininfo>
    <version>1</version>
    <name>mySkin</name>
    <comment>Ooo Lala</comment>
    <author>Some Person</author>
    <email>info@example.org</email>
    <homepage>http://www.example.org</homepage>
  </skininfo>
  <include file="xml/color-sys.xml"/> <!-- Include a file -->
  <container id="normal">
    <layout id="normal" desktopalpha="true">
      <button
        x="0" y="0"
        id="button.normal"
        image="mybutton.image"
        hoverimage="mybutton.himage"
        downimage="mybutton.dimage"
      />
    </layout>
  </container>
</WinampAbstractionLayer>
```

WasabiXML支持許多GUI元素，包括：

- `<button>`
- `<text>`
- `<vis>`
- `<eqvis>`
- `<layer>`
- `<animatedlayer>`
- `<groupdef>`，與`<group>`配合使用

`<groupdef>` allows the developer to define a group of GUI objects which can be re-used anywhere in the skin. Wasabi also supports XUI's which are nothing but `<groups>` powered by a MAKI script allowing developers to create GUI components (widgets) of their own adding to modularity.

WasabiXML有一個XML名字空間「Wasabi::」定義了常見的GUI，而不需聲明它們的圖像路徑。

### MARIA

MARIA是一種通用、宣告式、多抽象層、基於XML的語言，用於普適環境中使用者界面建模的交互式應用程式。

### FXML

FXML是一種基於XML的語言，用於定義JavaFX應用程式的使用者界面。

### 其他

現有框架中的其他標記語言有：

- 用於Macromedia HomeSite的VTML

蘋果公司的Interface Builder .xib格式

其中一些被編譯為二進位形式。

在航空電子領域中，ARINC 661標準規定了一個定義玻璃駕駛艙中使用者界面的二進位格式。

Borland VCL窗格（.dfm和.lfm）是描繪Delphi和Lazarus應用程式的窗口的文本文件。它們在最終的可執行文件中被編譯為二進位形成，並使用RTTI來操縱。