用户界面标记语言

用户界面标记语言（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来操纵。