This site is about an outdated and deprecated version of dap which is no longer supported. Code samples on this site may not work due to abandoned data providers.

For up-to-date dap, please go to

What is dap?

"D. A. P." stands for Data Access Page. It is a language of rules for data interpretation in terms of document markup. It is mostly aimed to be utilized in client parts of data-centric web-applications.

It is totally client-side. It does not need any dedicated support infrastructure — neither on web-server (beyond the web-server itself), nor in web browser (beyond javascript enabled). It does not need neither any compilers, optimizers etc., nor dedicated IDE's for development. It allows to write very concise and extremely flexible markup. Dap encourages "write once, use everywhere" development style.

Current implementation provides dap support for javascript-enabled W3C DOM-compliant documents, such as HTML/XHTML pages. Correctly written dap documents work stable and similar in all modern mainstream browsers. Dap can be easily added into any valid HTML markup or stock HTML/CSS template.

Is it yet another library of grids, drop-downs and tree-views?

No. Dap itself is not a library of snippets and widgets, but a language of rules for document generation and transformation in response to received data and user activity. It allows to easily reproduce the traditional controls' logic, and to define custom controls with whatever specific logic.

Is it heavy, verbose, slow and ugly?

No. It is lightweight, concise, fast and a pleasure to code.

Is it a good choice for "My First Website ;-)))" ?

No, again. It does require some brain activity involved. Also, there is no visual "drag-and-drop" dap constructor yet.

Is it free?

Well, yes [details]. Dap core (DAPMX core script) is free for use ("free" as in "free beer", not as in "free speech") in web-applications (websites) publicly available over WWW. Dap Starter-Kit libraries are distributed under GNU LGPL. For details, please refer Licensing Information.

What is dap good for, and what for it is not

Dap might be the right choice for building dynamic web-reports and interactive front-ends to datasources, such as SQL-databases or web sevices. Both internet and intranet, and even local-machine applications may benefit from utilizing dap.

However, you should realize, that dap core contains no any pre-baked visual controls or pretty-looking buttons, so visual appearance is a separate task. There are lots of HTML/CSS template repositories on the web — all that stuff can be used in dap-enabled HTML documents just as in ordinary HTML.

Dap itself doesn't require any server-side infrastructure beyond a barebone web-server — neither any backend scripts, nor any server extensions. However, if you plan to employ datasources (such as SQL databases), you will probably need a server-side adaptor to communicate with SQL-server over http.

Also, when building dap applications for web, you should remember, that dap page itself does not contain the data it shows (unlike, say, php or asp pages which come to client along with all the data they actually display), thus if you want your data were indexed by web-crawlers, you will have to take additional measures to provide indexable content to the crawlers by traditional server-side techniques.

How it works

To make an XHTML page dap-enabled, you simply link DAPMX core script to it. The DAPMX core script is currently written in javascript and is compatible with all modern mainstream web browsers (successfully tested with Mozilla Firefox, Opera, Google Chrome, even MSIE6+). Nodes' dap-rules are specified by means of dedicated attributes: d — for d-rule, u — for u-rule.

Once the page and the DAPMX core script are loaded into browser, the dap root node (by default, the body element) is cut off the DOM, rebuilt by its d-rule and inserted back to the place. Since that, it is dap-enabled.

Dap-enabled nodes are built and re-built dynamically, using the markup specified in the source file as templates. Dap rules specify the templates to use, fill those templates with actual data from datasources, define logical dependencies between generated elements, assign appropriate event listeners to them and so on... Finally, these generated elements are inserted into DOM as regular HTML markup. Generated elements having event listeners, when their events happen, launch rebuild process, that makes changes to application status and updates all dependent elements. The rebuild process only affects nodes, that actually do depend on the changes, leaving irrelevant nodes intact.

Dap syntax

Dap syntax was developed with two main concerns:

  1. to be easily parsable
  2. to be concise, yet human-readable

The latest documented version at the moment is 0.1.7. Current version 0.2.2 has many improvements and significantly different syntax (way more clear and friendly; in fact, VM for version 0.2 was rewritten from scratch), but unfortunately, documentation for version 0.2 is not ready yet.

So is it "dap" or "DAPMX"?

The term "dap" refers to the language itself. This language, generally speaking, is not bound to HTML or XML documents; it is not bound to W3C DOM, but, being appropriately implemented, may be used to define generation and transformation rules for any hierarchial structure.

In contrast, the term "DAPMX" (dap Markup eXtension) refers to particular dap implementation for W3C DOM compliant documents. This implementation "extends" normal document markup with two dap-dedicated attributes: d and u — that is why "markup extension".

Dap in action

In this section, interesting dap powered projects will be listed and studied.


    An e-shop of wind musical instruments. This site has been the dap playground, providing the real-life challenges and thus helping in formulation and optimization of dap principles.

    Since this is a real commercial project, only its public part may be revealed at the moment (say, can't be given here the access to money/orders/warehouse management interface, wich is also built with dap). However, an educatory version of this project — with comprehensive comments and full access to all possibilities will be accessible soon.

Licensing Information

Dap Starter-Kit extension libraries are available under GNU LGPL

Feel free to use, study, modify and redistribute dap Starter-Kit libraries as defined in GNU LGPL. This note is included in all libraries of the Starter-Kit Package:

	Dap Starter-Kit Package is free software: you can redistribute it and/or modify
	it under the terms of the GNU Lesser General Public License as published 
	by the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	Dap Starter-Kit Package is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	See the GNU Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public License
	along with Dap Starter-Kit Package. If not, see

DAPMX core script is free for non-commercial or public commercial use

DAPMX core script [download] is shareware. To avoid premature fork of dap evolution process, decision was made to make the DAPMX core script free for (public || non-commercial) use, but NOT Open-Source. Also, to help faster dap spread, please consider placing dap advertisement (the small "powered by dap" logo with hyperlink to dap homepage) on your dap-enabled page (preferably around the bottom-left corner), using this or equivalent code:

<a target="_blank" href="">
 <img src=""
  alt="Powered by dap 0.1" border="0" style="border:none" />
Powered by dap 0.1

Free for non-commercial use

DAPMX core script is licensed for use in non-commercial derived work free of charge.

Free for public commercial use

DAPMX core script is licensed for use in commercial derived work free of charge, provided that the derived work is available for public access via World Wide Web free of charge.

By using DAPMX core script free of charge, one expessly agrees:

  • not to modify and not to rename DAPMX core script, and
  • not to merge DAPMX core script with other files, and
  • not to copy any parts of DAPMX core script into other files.


If you have any questions, please contact me by:

  • E-mail:
  • Skype: m.sajin

Copyright 2008,2009 Maxim Sajin <>