用户界面标记语言

**使用者介面標記式語言**（user interface markup language）是一類彩現和描繪圖形化使用者介面及控制項的標記式語言。此類標記式語言很多都是 XML 的方言，並且依賴於已經存在的手稿語言引擎（通常為 JavaScript 引擎）來彩現控制項和額外的指令碼。

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

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

## 使用者介面標記式語言

### XFD

XFD，表示 **X**ML **F**orm **D**efinition，是支撐 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 **Us**er **I**nterface E**x**tensible **M**arkup **L**anguage) 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 標記式語言，用於定義 Wasabi 驅動的應用程式的圖形介面。它最常見的用途是為 Winamp 製作 Winamp 外觀。WasabiXML 由 Nullsoft 為 Winamp 開發，但也可使用 Wasabi SDK 用於其他應用程式。

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

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 來操縱。

## 參見

* 使用者介面建模
* 排版引擎
* 部件工具箱
* 使用者介面標記式語言列表
* 使用者介面標記式語言比較
* 介面描述語言

## 參考資料