GUI Sequences

Use the guiseq element to mark up a sequence of graphical interface elements. This is typically used to present a sequence of menu items.


  • The guiseq element can contain a mixture of text and gui elements.

  • The guiseq element can occur in any general inline context, including inside most inline elements, some basic block elements, and certain informational elements.

  • The guiseq element can link to other pages or documents. See Ubiquitous Linking for more information.

  • The style attribute takes a space-separated list of style hints. Processing tools should adjust their behavior according to those style hints they understand.

  • The guiseq element can have attributes from external namespaces. See External Namespaces for more information on external-namespace attributes.


Use guiseq to mark up a sequence of menu items:

Select <guiseq><gui>File</gui><gui>New</gui></guiseq> to open
a new document.

Select File ▸ New to open a new document.

Processing Expectations

Each of the child gui elements and text nodes, except whitespace-only text nodes, is displayed as described below, adding a separator between them. The exact separator may vary according to the language and style preferences, but it will typically be some sort of right-pointing arrow or triangle, or left-pointing for right-to-left languages.

Child gui elements are shown as normal. Text nodes have their whitespace normalized to strip leading and trailing spaces. Text nodes may be rendered using a font variation.

Comparison to Other Formats

The guiseq element is similar to the menuchoice element in DocBook. Since Mallard does not provide different elements for different types of interface elements, the contents of guiseq are all gui elements or text. Currently, Mallard does not provide a way to encode shortcut keys like the shortcut element in DocBook. Shortcuts should be written into prose separately.

The guiseq element is similar to the menucascade element in DITA.


The formal definition of the Mallard language is maintained in RELAX NG Compact Syntax in code blocks within this specification. This is the formal definition for the guiseq element. The namespace declarations for this definition are on the page Pages.

mal_inline_guiseq = element guiseq {
mal_inline_guiseq_attr = (
  mal_attr_link *,
  attribute style { xsd:NMTOKENS } ?,
  mal_attr_external *
mal_inline_guiseq_inline = (
  mal_inline_gui + &
© 2008-2011 Shaun McCance
cc-by-sa 3.0 (us)

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

As a special exception, the copyright holders give you permission to copy, modify, and distribute the example code contained in this document under the terms of your choosing, without restriction.

Powered by