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)