Chapter 7. Extending the UI with XBL- P4
7.4.4. Extra Binding Content and Insertion Points
All examples in the chapter have so far dealt with standard binding content
rendering within a bound document. The processes outlined in this section
can, in one sense, be seen as abnormal because they allow ordering of the
content to change based on insertion points defined in the binding. This
process is done with the XBL <children> element
7.4.4.1. Working with children of the bound element
Zero or more children can be contained in anonymous content. These
children are marked up with the XBL-specific <children> tag. They can
be either the content of the element using the binding or anonymous content
generated by the base binding. If the <children> tag contains its own
elements, then it will be used as the default content. If the element the
binding is attached to contains children, the default content will be ignored.
The location of the <children> tags determines the content's insertion
point. Insertion points play an important role in the generation of content
within a template because they affect how the content is displayed and
accessed by the DOM.
<binding id="my-binding">
<content>
<xul:vbox>
<children />
</xul:vbox>
</content>
</binding>
This stripped-down binding has only a vertical box as its own content and
looks to the children of the bound element for more content by using the
<children> element. Here is the XUL content that uses the binding:
<mybinding id="myNewWidget" flex="1"
class="attached">
<label value="this is child 1" />
particular insertion point." Here is the XUL code that goes with this
example:
<mybinding id="myNewWidget" flex="1">
<image
src="
/>
<label value="a non includes element" />
</mybinding>
The image is the only child taken from the XUL content and the label is
ignored.
If you have children that are not defined in the includes attribute, then
the binding is discarded and not used. If the bound element uses another
element in addition to an image element, the binding is discarded and only
the explicit content is used. If the image element isn't used at all, the binding
is discarded.
<mybinding id="myNewWidget" flex="1">
<image
src="
/>
<label value="an element" />
</mybinding>
This example renders the image and the label and discards the binding. The
anonymous content does not appear because the binding is discarded and
only the explicit content is used.
7.5. Inheritance
In XBL, inheritance is the process in which one object included in another
object is allowed to use properties from that parent object. These properties
can be many things, depending on the implementation, ranging from
methods to attribute property values. Inheritance is a concept familiar in
programming languages, most notably object-oriented ones. It's not
</resources>
</binding>
<binding id="listcell"
extends="chrome://global/content/bindings/listbox.x
ml#listbox-base">
<content>
<children>
<xul:label class="listcell-label"
xbl:inherits="value=label,flex=flexlabel,crop,disab
led"
flex="1" crop="right"/>
</children>
</content>
</binding>
<binding id="listcell-iconic"
extends="chrome://global/content/bindings/listbox.x
ml#listcell">
<content>
<children>
<xul:image class="listcell-icon"
xbl:inherits="src=image"/>
<xul:label class="listcell-label"
xbl:inherits="value=label,flex=flexlabel,crop,disab
led"
flex="1" crop="right"/>
</children>