Dynamic Layout Markup Language
See also Site Map
October 5, 2013 - Thankfully, angularjs (by Google) has achieved everything we wanted for the foundation of this project, and more. So we will abandon this project in favour of building a library of re-usable objects on top of AngularJS. See mustertools.net
March 16, 2013 - Note that the demo is currently being updated - meaning it's temporarily broken! ** - Henrik
A project of bechmann.ca
posted February 18, 2009
This project is currently in prototype. The documentation is just a stub. For a discussion join the dlml email list.
Dynamic Layout Markup Language is a small xml grammar for embedding dynamic content in (X)HTML documents. The language consists of four elements:
We implement the grammar with an xml namespace, supported (sort of) by Internet Explorer, and interpreted as Unknown or Generic elements by Chrome, Safari, and Firefox.
dl:widget is a placeholder for object code and html, and can contain static content (html) elements.
dl:settings are typed collections of attributes, and can be children of widget or settings elements. All dlml elements can have attributes, as defined (mostly) by modules. These together constitute the attribute tree design pattern, which is used as the declarative method of specifying the dynamic behaviour of html layout elements.
The implementation specification of dlml places heavy reliance on several key design patterns: the widget hierarchy pattern, the attribute tree pattern, and the html-markup+javascript-object (widget) pairing pattern.
see dlml grammar.
dlml is implemented through javascript modules that contain prototype objects. These prototype objects include the module object itself (a singleton memory object), a platform dl:widget (which can have multiple instances) and one or more dl:widget types contained by platform dl:widget which behave and interact in interesting ways. dl:widget instances insert html in the document object model, and this html is dynamically linked to, and paired with, javascript objects.
See demo page
We are working on implementing a number of widgets, beginning with a menuing system.
Current plans for widgets:
Tabs (including Accordions), Outlines, Menus, Windows, Trays (configurable listings), Viewports, Overlays, Tools (Datepicker, Slider, Validator, Tooltips, Button with dropdown), Charts, Maps, Editor.
Planned Functional support:
- drag, drop, sort, select, ajax, resize, expose, sync, transfer