Htmlgen Writing HTML with Tcl xmlgen


Htmlgen — Writing HTML with Tcl


package require htmlgen

::htmlgen::htmltag ?attr=value ...? ?body ...? (for every HTML tag)

::htmlgen::buffer varname body

::htmlgen::put ?arg ...?

::htmlgen::esc ?arg ...?


The package provides one Tcl command for every HTML tag. It allows to write structured Tcl code which, when executed, generates structured HTML output. The benefits are:

In fact I consider htmlgen to be what HTML should better have been in the first place. The individual commands are described below.

::htmlgen::a ?attr=value ...? ?ctrl? ?body ...?
::htmlgen::p ?attr=value ...? ?ctrl? ?body ...?
::htmlgen::table ?attr=value ...? ?ctrl? ?body ...?
::htmlgen::...and so on for other tags.

Every such markup command takes a list of attribute-value pairs and one or more body arguments. It then generates HTML where the open tag contains all the attribute-value pairs and the close tag is never omitted. You can write

ul {style=color:red} ! {
  li - one
  li - two

to generate

<ul style="color:red">

If the first argument which is not an attribute-value pair contains exactly one character, it is used to control the handling of the body according to the following table.

character action
"!" pass to [eval] and print
"+" pass to [subst] and print
"-" take as is and print
"." (dot) take as is and return
(other) error

If the first non attribute-value argument has more than one character, it is considered to be the first body argument and the control character defaults to "." (dot) meaning that the body is taken as is, surrounded by the tags and then returned.

Please consult Generated Markup Commands in the manual page for xmlgen for the more details. It also describes, how attribute-value pairs are parsed.

::htmlgen::extra::tab ID url active tabs ?attr=value ...? ?body ...?

(experimental) Creates table based notebook tabs. Useful only for CGI scripts. Nice layout in style-aware browsers. Useful layout still in Navigator-4.7. ID is the name of a variable you'll find with ::ncgi::parse. The content of that variable is the name of the selected tab. The available tabs are defined in tabs which must be a list of pairs tabname display, where tabname is what you'll find in the CGI variable $ID and display is what is printed in the tab on screen. Parameter active must be one of the given tabname names. It will be rendered as the selected tab.

You can find an example in tab.tcl

::htmlgen::buffer varname body

See manual for xmlgen.

::htmlgen::put ?arg ...?

See manual for xmlgen.

::htmlgen::esc ?arg ...?

See manual for xmlgen.


Harald Kirsch

See Also

Overview, Xmlgen, Notebook Tabs, Navigation Bar

Htmlgen 1.4 xmlgen