Menue
SRD

DialogML

project info
documentation

SEML

Mailinglists

DialogML specification and documentation
The introductory sections of the official specification are available for reading online. The complete specification is only available for downloading. The documented version is 0.96pre1. The introduction below is taken from the unfinished version 0.96pre2

The electronic version of the DialogML specification is distributed under the terms of the GNU Free Document License 1.1. All rights reserved by Dennis Heuer.

Table of Content
Introduction
The right approach
The different types of elements

The different types of elements
DialogML is developed with XML and conformant to the official XML specification. It provides a small number of language elements for the definition of DialogML documents--the sources that instruct the DialogML interpreter. The DialogML elements are categorized by their type. The elements of the first type divide a document into logical and functional sections.

Subdividing

The first element is also the root element. It draws the borders of the document by defining the beginning and the end. Consequently, it includes all other elements between the start-tag <DialogML> and the end-tag </DialogML>.

The second element of this type is the section element. It must be defined at least one time and assorts collections of dialogs for a certain (type of) user interface between the both tags <section> and </section>.

The third element is used to define the dialogs of an application. The dialog element assorts elements with own graphical interface (components) between the both tags <dialog> and </dialog> and displays them--on demand--in a rectangular frame (window or screen). Every section needs at least one dialog.

The last element of this type is the archive element. It is used to outsource elements for the dynamic access from within the sections. The archive element is not a component, it doesn't provide a graphical interface. All elements between the tags <archive> and </archive> are invisible untill they get called from within a section. The archive may store everything from elements up to complete dialogs. It can upload elements from an external resource. It does not store the elements itself though. The archive is fragmented with the fragment element which stores the archived elements between <fragment> and </fragment>.

Grouping other elements

The elements of this type are both components and used to align other components on one or multiple rectangular areas within a dialog.

The first element is the group element. It draws a box and places other components into it. The box may be positioned independently within a dialog, it may also be connected to other boxes and become a cell of a table. Group definitions are placed within the dialog definition, the other component definitions are placed between <group> and </group>.

The tree element is similar to the group element but connects multiple boxes to branches of a big tree. The tree component provides different display methods like the default tree-view, a menue, notebook or folder. The branches are defined between <branch> and </branch> and find place between <tree> and </tree>.

Gathering information

The next two components are used to invite the user to enter or select information.

The input element is an empty element which means that it doesn't subdivide elements or other content. The tag <input/> defines a text line or box that doesn't do more than taking input. Any further processing of the input is done through event rules.

The select element is used to assort options between the tags <select> and </select> to a homogeneous list. It can read the options from a system resource. For example, It could list the files of a directory. The select component provides different display methods and works for the common cases.

Embedding media

The object element is used to occupy an area within a dialog and embed content that can't be defined with the other DialogML elements. The most simple type of such content is plain unicode text written between the both tags <object> and </object>. Other media may be embedded as hex code. Otherwise, the media can be uploaded from an external resource at runtime. The object element is also used for internationalization in that it is used to define the single translations. Another subject is the help system.

Executing

The command element is used to define commandlines for event-driven execution through the commandline interpreter. It supports CCL--the »Conditional Concatenation Language«--that provides sophisticated, conditional pasting, deleting, embedding and substitution within the defined commandline between <command> and </command> before it is overgiven to the commandline interpreter.

The progress element belongs to the components. The tag <progress/> is used to define a simple but clean progress meter that monitors an executed process. The progress element supports a small number of display methods like a status bar, a ruler or some text dump. It utilizes CCL for filtering external resources like a file, a system variable or standard console dump and extracting status information.

Providing meta information

The head element provides the homeplace for meta information and may be defined global, section-wise or dialog-wise. The meta information is defined between <head> and </head> and can be of two types. The first is defined with the meta element or, respectively, the tag <meta/>. It is used to define the default parameters like the supported languages, display resolutions or input devices--to list only a few. The second type of meta information defines extensions. See below.

Introducing extensions

DialogML supports being extended through other languages. Extensions are stored between <extend> and </extend> and executed on event. The supported languages depend on the interpreter. Only CSS Stylesheets 2 and SEML--the »Simple Event Management Language«--are mandatory.

Sophisticated interaction

The display element is used to define a component switch with the empty tag <display/>. It is thought as a tool for dynamic re-organization of dialogs on event.