XUL

維基百科,自由的百科全書
跳至導覽 跳至搜尋
XUL
編程範型Declarative(標示語言
實作者Mozilla基金會
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    實作語言C++
    系統平台Gecko
    作業系統跨平台
    許可證Mozilla公共許可證
    副檔名.xul
    互聯網媒體類型application/vnd.mozilla.xul+xml
    網站developer.mozilla.org/docs/Mozilla/Tech/XUL
    主要實作產品
    Mozilla
    受影響於
    HTMLXML

    XUL/ˈzl/ ZOOL)是英文「XML User Interface Language」(XML用戶介面語言)的首字母縮寫。它是為支援Mozilla系列的應用程式(如Mozilla FirefoxMozilla 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). 

    外部連結[編輯]

    Module:Authority_control第183行Lua錯誤:attempt to index field 'wikibase' (a nil value)