XUL

XUL
编程范型Declarative(置标语言
實作者Mozilla基金會
實作語言C++
系统平台Gecko
操作系统跨平台
許可證Mozilla公共许可证
文件扩展名.xul
互联网媒体类型application/vnd.mozilla.xul+xml
網站developer.mozilla.org/docs/Mozilla/Tech/XUL
主要實作產品
Mozilla
啟發語言
HTML、XML

XUL/ˈzl/ ZOOL)是英文「XML User Interface Language」(XML用户界面语言)的首字母縮寫。它是為支持Mozilla系列的應用程式(如Mozilla Firefox和Mozilla Thunderbird)而開發的使用者界面標示語言。顧名思義,它是一種應用XML來描述使用者界面標示語言。XUL被实现为一种XML的方言。它允许以类似写网页的方式编写图形用户界面

設計

XUL是一个开放標準,它重用了許多現有的標準和技術,包括CSSJavaScriptDTDRDF等。所以對於有網絡編程和設計經驗的人士來說,學習XUL比學習其他使用者界面標示語言相對簡單。

使用XUL的主要好處在於它提供了一套簡易和跨平台的Widget定義。這節省了編程人員在開發軟件時所付出的努力。

XUL文件

一個XUL界面一般包含以下三個部份:

  1. 內容:定義使用者界面的XUL檔
  2. Skin:定義程式外觀的CSS和圖像檔
  3. Locale:定義界面字串的DTD檔(為了軟件本地化

XUL元素

XUL定義了一套豐富的元素。它們大致上可分為以下幾種:

基層元素
例如視窗、page、對話框、精靈
Widget
例如標籤、按鈕、文字方塊、條列式選單、組合方塊選擇鈕核取方塊、樹、選單工具列、分组框、标签页、色彩選擇器、spacer、splitter
排版
例如方框、網格、堆疊、疊
事件和腳本
例如腳本命令、key、broadcaster、observer
資料來源
例如template、rule
其他
例如overlay(類似SSI,但在客戶端運作,而且更為強大)、iframe、浏览器、编辑器

一個XUL文件中也可以包含其他XML命名空間的元素,例如XHTMLSVGMathML

現時的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的應用程式上,利用該網頁就可以瀏覽到一個置中的、以大字型顯示的標語。

參見

  • 自由软件主题

参考文献

  1. ^ Ghostbusters clip. [2018-09-23]. (原始内容存档于2022-01-11). 
  2. ^ Mozilla XML Namespace. [2018-09-23]. (原始内容存档于2022-05-16). 

外部链接

Mozilla Labs專案
Mozilla Research專案
產品
分支
架構
元件
  • Application Object Model英语Application Object Model
  • Composer
  • NSPR英语Netscape Portable Runtime
  • NSS
  • Rhino
  • Tamarin
  • SpiderMonkey
  • Venkman
停止開發
附属機構
社群
本地社区
  • MozTW
  • Mozilla China Community
  • WebDINO Japan
人物
  • 米切爾·貝克
  • 雪莉·卡布拉爾英语Sheeri Cabral
  • 坦塔克·塞里克
  • 阿沙·道茲樂英语Asa Dotzler
  • 布蘭登·艾克
  • 約翰·海明克英语John Hammink
  • 約翰尼·史坦貝克英语Johnny Stenbäck
  • 道格·特納英语Doug Turner (Mozilla)
相關
部件工具箱列表英语List of widget toolkits
低级
AmigaOS平台
  • Intuition英语Intuition (Amiga)
未知/原生
  • Macintosh Toolbox英语Macintosh Toolbox
  • Carbon
桌面
  • Xamarin.Mac英语Xamarin#Xamarin.Mac
移动端
Windows平台
BeOS/Haiku平台
  • OpenTK英语OpenTK
  • GDK英语GDK
  • JOGL英语Java OpenGL
Android平台
高级
AmigaOS平台
  • BOOPSI英语BOOPSI
  • MUI英语Magic User Interface
  • ReAction GUI英语ReAction GUI
  • Zune英语Zune (widget toolkit)
  • Carbon
  • MacApp英语MacApp
桌面
移动端
  • MacZoop英语MacZoop
  • PowerPlant英语PowerPlant
Windows平台
桌面
  • MFC
  • ATL
  • WTL
  • SmartWin++英语SmartWin++
  • OWL
  • VCL英语Visual Component Library
  • Athena (Xaw)
  • InterViews英语InterViews
  • LessTif英语LessTif
  • Motif
  • OLIT英语OLIT
  • XForms英语XForms (toolkit)
Android平台
跨平台
按语言划分
  • 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 FrameworkOpenTK英语OpenTKTaoClassic英语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)
规范控制数据库: 各地 編輯維基數據鏈接
  • 法国
  • BnF data
  • 德国
  • 以色列
  • 美国