<html><head><title>People</title></head><body>
<h1>A list of 2 people</h1>
<ol><li><ahref="mailto:fred@example.net">Fred</a>, who is 25 years old.</li>
<li><ahref="mailto:mary@example.net">Mary</a>, who is 33 years old.</li>
</ol></body></html>

Syntax

[syntax] (hart hart-expr ...)
[syntax] (hart->string hart-expr ...)

Compiles hart-expr, an expression in the Hart syntax. In short, Hart is SXML syntax plus a set of "keyword expressions" which handle flow-control, iteration, escaping, etc.

Like a (let ...) expression, but hart-body is a list of Hart expressions.

Formatting keywords

[syntax] (raw: . expr)

The Scheme expressions (not Hart!) are evaluated to strings and outputted, without HTML/XML escaping.

[syntax] (text: . exprs) or (t: . exprs)

The Scheme expressions are evaluated to strings, HTML-escaped, and outputted.

[syntax] (fmt: format-string . args)

The result of (apply format format-string args) is HTML-escaped and outputted.

[syntax] (scheme: . exprs)

The Scheme expressions are evaluated. If they produce output, that output will be inserted into the HTML.

Attributes

Note that attributes (such as the "href" in an A tag) are of the form (name value), where "name" is a string or symbol, and "value" is a Scheme expression (literal or otherwise). No escaping is done on these expressions at the current time.

Optional Attributes

An attribute whose value evaluates to #f will be omitted from the HTML output. This provides a mechanism for specifying optional attributes.