XUL GUI Construction Goes Beyond Forms
If XUL was just form scripts and styles, you might as well stick with HTML. But XUL is more than forms; it's a whole supermarket shelf of GUI tricks. Here's a shopping cart of GUI widgets to sample from:
To put GUI elements on top of each other, use a <stack>, a <deck>, a <bulletinboard>, a <tabbox>, or a <wizard>.
If you don't like the standard button provided by <button>, use the type attribute to vary it a number of ways, or use any of these other button-like tags: <toolbarbutton>, <autorepeatbutton>, <scrollbarbutton>, <grippy>, <toolbargrippy>, <resizer>.
To add support for a keystroke, use the <key> tag or the <command> tag.
To work with menus, try <menu>, <menulist>, <menupopup>, or <menubar>.
To add scrolling, use the CSS overflow property, or the XUL <scrollbox>, <arrowscrollbox>, or <scrollbar> tag.
Toolbars and menu bars can be added to a window using the <toolbox>, <toolbar>, <menubar>, and <statusbar> tags as starting points for any other tag.
XUL even has <colorpicker> and <progressmeter> tags.
XUL's power widgets, <listbox> and <tree>, are constructed from a collection of their own tags, which add extra flexibility to the language. These tags are similar to HTML's <TABLE> tag, although the <UL>/<OL> features of HTML are also similar. <listbox> has subtags such as <listitem> and <listcell>; <tree> has subtags such as <treechildren> and <treecols>.
HTML uses the <FRAMESET>, <FRAME>, and <IFRAME> tags to provide multi-document display. XUL has an equivalent variety of tags, drawn from the list <iframe>, <page>, <editor>, <browser>, and <tabbrowser>. A XUL window can be specially decorated if it's identified as a XUL <dialog>-based or <wizard>-based document instead of a <window>-based document.
All in all, there's a fair range of tags to choose frommore than enough for most application windows and dialog boxes. If anything's missing, a complementary technology called XBL Extensible Bindings Language (XBL) can be used to add extra widgets (extra tags) to the XUL language.