User:R. O. Okot/sandbox

uHTML

User HTML (uHTML) is a simple server-side programmer-designer interface which separates programming and webdesign by making a clear disjunction of tasks and responsibilities in these areas of work possible. It is meant for the World Wide Web but can be used in any context with markup languages. It extends the scope of the original language (usually HTML) by adding user defined tags which get on the fly replaced by the desired content. It replaces technologies like SSI, PHP, ASP and similar.

It was designed in 2008 by Roland Mosler to simplify website development and maintenance by eliminating competence conflicts between programmers and designers. Although implemented primarily in Perl, it can be implemented in any programming language. It is accessed trough the CGI interface (Apache) or the FCGI interface (Apache, nginx).

In order for a web server to recognize an uHTML file and redirect it to the uHTML interpreter, the filename usually ends with a special extension, by default. The server can be as well configured to pipe all HTML files trough the uHTML interpreter.

Concept
uHTML gives the full authority over the web sources to the webdesigner. To insert dynamic contents the webdesigner conceptualize individual tags which meet the HTML syntax. In this way database content, dynamic menus, catalogues, electronic shops, etc. can be integrated into a website. There is no need to insert any program code into the uHTML file.

The webdesigner states the functionalities of the newly created uHTML symbols. On this basis the programmer implements the necessary functions. As soon as the library files created by the programmer are copied into the appropriate directories, the new uHTML tags become fully functional.

Examples
A web site containing a menu could include the menu by placing the following code into each file of the web site:

The  file could have the following content:

The  file get defined once and all pages that include the file will display the actual menu with a highlighted current entry. The tag  can be implemented under the use of the  library while the tags   and   are project specific.