XBL or eXtensible Bindings Language is used to declare the behavior and look of XUL widgets and XML elements. In XUL one defines the user interface layout of an application, and then (applying styles) can customize the look of elements. The drawback is that XUL provides no means to change an element's function. For example, one might want to change how the pieces of a scroll bar work. This is where XBL comes in. XUL (XML User Interface Language) is a user interface markup language developed to support Mozilla applications like Mozilla Firefox and Mozilla Thunderbird. ... The Extensible Markup Language (XML) is a W3C-recommended general-purpose markup language for creating special-purpose markup languages. ... The user interface is the part of a system exposed to users. ...
An XBL file contains bindings. Each of them describes the behavior of a XUL widget or XML element. For example, a binding might be attached to a scroll bar. The behavior describes the properties and methods of the scroll bar and describes the XUL elements defining the scroll bar.
The root element of an XBL file is the <binding> element. Each <binding> element declares one binding, which can be attached to any XUL element. It also may have an id attribute. A binding is assigned to an element by setting the CSS property -moz-binding to the URL of the bindings file. For example: In computing, Cascading Style Sheets (CSS) is a stylesheet language used to describe the presentation of a document written in a markup language. ...
XBL user agents must behave as described by this specification in order to be considered conformant, even when faced with non-conformant XBL subtrees.
XBL prevents this by requiring that the bindings all run in the security context of the bound document, so that accessing a remote binding document does not provide the bound document with any extra privileges on the remote domain.
When an XBL element has a child node that does not satisfy the "Expected children" list in its definition (for instance because it is the wrong node type, wrong element type, or because too many elements of its type preceded it), the child is in error.