What are DUML and IAML?

DUML stands for Document Update Markup Language, and it provides an XML specification for performing document manipulation via server-side instructions.  This site defines both the specification and an open-source implementation.

With most current approaches, DOM manipulation is accomplished through arbitrarily complex client-side JavaScript. With the DUML approach, the browser makes a standard AJAX call to the server. Then DOM manipulation instructions (such as appending nodes, replacing nodes, etc.) are generated server-side as a DUML document, delivered to the browser, and finally interpreted by a simple DUML interpreter running on the web page.  The net effect is to move complex DOM manipulation logic out of the Web  page (and out of any associated JavaScript files) and onto the server.  This is especially desirable in the development of Web-based, non-ephemeral hybrid applications where a development team is using standard MVC frameworks and has lesser scripting ability and can retain this sort of logic in a more familiar environment. 

DUML itself is very simple, supporting a set of nine manipulations: appendChild, insertBefore, insertAfter, replace, remove. replaceContent, set-attribute, executeScript and queueScript. Since instructions map more or less directly to universally supported methods, the interpreter is correspondingly simple.

The DUML specification itself is generic and not tied directly to HTML based applications and therefore can be used with any XML/DOM based user interface language as long as the client supports a language in which an interpreter can be implemented (the original engine was written to work with XUL).


IAML stands for Interpreted Application Markup Language, and it provides an XML specification for defining a small handful of RIA components that extend the basic HTML tags to provide structures based on UI components like menus, tabs, accordions, dialogs, etc. in the vein of other XML UI languages like XUL, XAML and FLEX.  IAML is _designed_ to be interpreted and intermingled in HTML (either as a stepping stone to the eventual conversion to one of these more robust platforms or a test bed for developers to determine with some certainty that this is the right direction without major investment).