1. Introduction
***************

The templates parser package has been designed to parse files and to
replace some specific tags into these files by some specified values.

The main goal was to ease the development of Web servers. In CGI
(*Common Gateway Interface*) mode you have to write the HTML page in
the program (in Ada or whatever other languages) by using some
specific libraries or by using only basic output functions like Ada
*Put_Line* for example. This is of course not mandatory but by lack of
a good library every Web development end up doing just that.

The main problems with this approach are:

* It is painful to have to recompile the program each time you have a
  slight change to do in the design (center an image, change the
  border width of a table…)

* You have the design and the program merged together. It means that
  to change the design you must know the Ada language. And to change
  the Ada program you need to understand what is going on with all
  these inline HTML command.

* You can’t use the nice tools to generate your HTML.

With the templates parser package these problems are gone. The code
and the design is **completely** separated. This is a very important
point. PHP or JSP have tried this but most of the time you have the
script embedded into the Web template. And worst you need to use
another language just for your Web development.

* The HTML page is separated from the program code. Then you can
  change the design without changing the code. Moreover when you fix
  the code you don’t have to handle all the specific HTML output. And
  you do not risk to break the design.

* It is easier to work on the design and the program at the same time
  using the right people for the job.

* It reduces the number of *edit/build/test* cycles. Writing HTML code
  from a program is error prone.

* It is possible to use standard tools to produce the HTML.

* You don’t have to learn a new language.

* The script is Ada, so here you have the benefit of all the Ada
  power.

In fact, the Ada program now simply computes some values, gets some
data from a database or whatever and then calls the templates parser
to output a page with the data displayed. To the templates parser you
just pass the template file name and an associative table.

It is even more convenient to have different displays with the same
set of data. You just have to provide as many templates as you like.
