XUL(/ˈzuːl/ ZOOL)是英文「XML User Interface Language」(XML用户界面语言)的首字母縮寫。它是為支持Mozilla系列的應用程式(如Mozilla Firefox和Mozilla Thunderbird)而開發的使用者界面標示語言。顧名思義,它是一種應用XML來描述使用者界面的標示語言。XUL被实现为一种XML的方言。它允许以类似写网页的方式编写图形用户界面。
設計
XUL是一个开放標準,它重用了許多現有的標準和技術,包括CSS、JavaScript、DTD和RDF等。所以對於有網絡編程和設計經驗的人士來說,學習XUL比學習其他使用者界面標示語言相對簡單。
使用XUL的主要好處在於它提供了一套簡易和跨平台的Widget定義。這節省了編程人員在開發軟件時所付出的努力。
XUL文件
一個XUL界面一般包含以下三個部份:
- 內容:定義使用者界面的XUL檔
- Skin:定義程式外觀的CSS和圖像檔
- Locale:定義界面字串的DTD檔(為了軟件本地化)
XUL元素
XUL定義了一套豐富的元素。它們大致上可分為以下幾種:
- 基層元素
- 例如視窗、page、對話框、精靈
- Widget
- 例如標籤、按鈕、文字方塊、條列式選單、組合方塊、選擇鈕、核取方塊、樹、選單、工具列、分组框、标签页、色彩選擇器、spacer、splitter
- 排版
- 例如方框、網格、堆疊、疊
- 事件和腳本
- 例如腳本、命令、key、broadcaster、observer
- 資料來源
- 例如template、rule
- 其他
- 例如overlay(類似SSI,但在客戶端運作,而且更為強大)、iframe、浏览器、编辑器
一個XUL文件中也可以包含其他XML命名空間的元素,例如XHTML、SVG和MathML。
現時的XUL還未在提供一些普遍的widget,例如spinbox、slider和canvas。XUL 2.0計劃 (页面存档备份,存于互联网档案馆)中將會包括這些缺乏的控件。
XUL應用
雖然XUL的設計原意是為了創作Mozilla程式及其擴充套件,但事實上人們也能利用它來編寫基於HTTP的網絡應用程式。基本安全性的原則,很多需要特權的XPCOM物件在無特權的XUL文件上都不能使用。唯有使用數碼簽署的腳本才享有此種特權。就算如此,這些文件亦受網頁瀏覽器的限制,例如不能載入遠端的XUL、DTD和RDF文件。
電影致敬
XUL讀作「zool」有向電影捉鬼敢死隊致敬之意。在捉鬼敢死隊中,有一名為「Zuul」的古代蘇美爾女神在支配住Dana Barrett的情況下說道:「There is no Dana, only Zuul」[1] 。在開發XUL之前,XML通常都是用於記錄資料性文件,而非定義使用者界面。因此設計XUL的編程員們便想到以「There is no data, only XUL」作為標語。而「Keymaster」和「Gatekeeper」都是來自該個情節。另外,Mozilla的JavaScript除錯器——Venkman也是捉鬼敢死隊的其中一個角色。這可以見於XUL的XML命名空間[2]。而在可以顯示XUL的應用程式上,利用該網頁就可以瀏覽到一個置中的、以大字型顯示的標語。
參見
- 自由软件主题
参考文献
- ^ Ghostbusters clip. [2018-09-23]. (原始内容存档于2022-01-11).
- ^ Mozilla XML Namespace. [2018-09-23]. (原始内容存档于2022-05-16).
外部链接
- Mozilla XUL (页面存档备份,存于互联网档案馆)
- XULPlanet (页面存档备份,存于互联网档案馆)
- XUL Periodic Table (页面存档备份,存于互联网档案馆)
- XUL Weblog
- Mobile Amazon Browser
- Xul and Xml-related formats (页面存档备份,存于互联网档案馆)
|
---|
| Mozilla Labs專案 | |
---|
| Mozilla Research專案 | |
---|
| 產品 | |
---|
| 附属機構 | |
---|
| 社群 | 本地社区 | - MozTW
- Mozilla China Community
- WebDINO Japan
|
---|
|
---|
| 人物 | - 米切爾·貝克
- 雪莉·卡布拉爾(英语:Sheeri Cabral)
- 坦塔克·塞里克
- 阿沙·道茲樂(英语:Asa Dotzler)
- 布蘭登·艾克
- 約翰·海明克(英语:John Hammink)
- 約翰尼·史坦貝克(英语:Johnny Stenbäck)
- 道格·特納(英语:Doug Turner (Mozilla))
|
---|
| 相關 | |
---|
|
部件工具箱列表(英语:List of widget toolkits) |
---|
| 低级 | | - Intuition(英语:Intuition (Amiga))
|
---|
| | 未知/原生 | - Macintosh Toolbox(英语:Macintosh Toolbox)
|
---|
| | |
---|
| | 桌面 | - Xamarin.Mac(英语:Xamarin#Xamarin.Mac)
|
---|
| 移动端 | |
---|
|
---|
|
---|
| | |
---|
| | |
---|
| | |
---|
| | |
---|
| | |
---|
|
---|
| 高级 | | - BOOPSI(英语:BOOPSI)
- MUI(英语:Magic User Interface)
- ReAction GUI(英语:ReAction GUI)
- Zune(英语:Zune (widget toolkit))
|
---|
| | | |
---|
| | |
---|
| | - MacZoop(英语:MacZoop)
- PowerPlant(英语:PowerPlant)
|
---|
|
---|
| | | |
---|
| | |
---|
| | - VCL(英语:Visual Component Library)
|
---|
|
---|
| | - Athena (Xaw)
- InterViews(英语:InterViews)
- LessTif(英语:LessTif)
- Motif
- OLIT(英语:OLIT)
- XForms(英语:XForms (toolkit))
|
---|
| | |
---|
| | | - GTK+
- IUP(英语:IUP (software))
- Tk
- wxC
- XForms(英语:XForms (toolkit))
- XVT(英语:XVT)
|
---|
| | - CEGUI(英语:CEGUI)
- CLX(英语:Component Library for Cross Platform)
- FLTK
- FOX toolkit(英语:Fox toolkit)
- GLUI(英语:OpenGL User Interface Library)
- Gtkmm
- JUCE(英语:JUCE)
- Nana(英语:Nana (C++ library))
- Qt
- Rogue Wave Views(英语:Rogue Wave Software)
- TnFOX(英语:TnFOX)
- Ultimate++(英语:Ultimate++)
- VCF(英语:Visual Component Framework)
- Wt(英语:Wt (web toolkit))
- WxWidgets
- YAAF(英语:YAAF)
|
---|
| | |
---|
| | 桌面 | - Gtk#
- Tao(英语:Tao Framework)(OpenTK(英语:OpenTK)、TaoClassic(英语:TaoClassic))
- wx.NET
- UIML.NET(英语:UIML)
- MonoGame(英语:MonoGame)
|
---|
| Web | - Moonlight(英语:Moonlight (runtime))
|
---|
| 移动端 | |
---|
|
---|
| | - DFL
- DlangUI
- DWT
- GTK+
- QtD
- wxD
|
---|
| | |
---|
| | - Gtk2Hs
- wxHaskell(英语:wxHaskell)
|
---|
| | 桌面 | |
---|
| Web | |
---|
| 移动端 | - LWUIT(英语:Lightweight User Interface Toolkit)
|
---|
|
---|
| | |
---|
| | - CAPI(英语:LispWorks)
- CLIM(英语:Common Lisp Interface Manager)
- Common Graphics(英语:Allegro Common Lisp)
- Ltk
- McCLIM(英语:Common Lisp Interface Manager)
|
---|
| | - IUP(英语:IUP (software))
- wxLua
|
---|
| | |
---|
| | 桌面 | - CLX(英语:Component Library for Cross Platform)
- fpGUI(英语:fpGUI)
- IP Pascal(英语:IP Pascal)
- LCL
|
---|
| 移动端 | |
---|
|
---|
| | |
---|
| | - PHP-GTK(英语:PHP-GTK)
- PHP-Qt(英语:PHP-Qt)
- wxPHP(英语:wxPHP)
|
---|
| | |
---|
| | |
---|
| | |
---|
| | - Ample SDK(英语:Ample SDK)
- GladeXML
- Lively Kernel(英语:Lively Kernel)
- Pyjs(英语:Pyjs)
- Rialto Toolkit(英语:Rialto Toolkit)
- XAML
- XUI(英语:XML User Interface)
- XUL
- Wt(英语:Wt (web toolkit))
|
---|
|
---|
|
---|
|
规范控制数据库:各地 | |
---|
|