HTML+ Draft Review

Status: Complete

Total # of Tags: 92

New Features

HTML+ is a very ambitious game-changer. A huge upgrade to HTML!

Actually, it's revolutionary!! Every chapter I read blows my mind more.

Dave Raggett is crazy. He's way ahead of his time! He's got form inputs of image maps and scribble (pen/mouse) input!? Sigcap is possible! Time and pressure data collection as well!? Wow.


Can use an id attribute for reference/linking on any element in place of anchor names. For example:

<h1 id="value">Header</h1> ...instead of: <a name="value"><h1>Header</h1></a>

...that's better!

<p id="p1">

...btw I transitioned from <xmp> (which annoyingly forces br's around it) to entities for that paragraph id example... and it's obnoxious/hard/messy to use entities instead of a raw tag like xmp! ...and I cant even indent it! >:/

Note: id doesn't actually get mainstream support until 1998(!) in IE 5

P Tag Changes

<p>P tag is presented as a container</p>, as an option ...but they want "authors to graduate" to treating it as a container.

It also gains an align attribute!: <p align="center">

..with align options of center, right, justify, indent

For example:

A centered paragraph!

A right-justified paragraph. Amazing!

An intended paragraph? (no)


Entities are expanded to include all ISO Latin 1 AND most of Adobe Symbol Font!

Testing out various ones:

Π π ∴ β χ ψ δ ϕ λ ϖ → ↑ ↔ ω ζ ≤ ∞ ♣ ♥ ∂ • ≠ ≡ ≈ … ⋮ ℵ ℑ ℜ ℘ ⊗ ⊕ ∅ ∩ ∇ ™ ⇒ ◊ ¢ © ® ° µ ¶ ¾ ¡ ¿ ≡ ℵ ∀ ∃ ≅ ζ ƒ ∂ ∝

βeta ƒart ∃rnie

Spaces between pipes generated using &nbsp;, &thinsp;, and &hairsp;
||||| ||||| ||||| |||||

New Anchor Attributes

effect=replace|new|overlay - Determines how the destination link loads: print=reference|footnote|sidebar|section|silent

New Text Styling

There is now a strikethrough tag! <s> well as superscript <sup> and subscript <sub>

New Logical Styles

short quotation (instead of quotes) <q>

Why bother with this? <q> tags are more bytes/work to write than actual quote characters?

Person Name <person>

ACRONYM <acronym>

abbreviation <abbrev>

command name <cmd> - what's the difference between this and code?

command line argument <arg>

<tt> and <code> seem pretty interchangeable

Note: Strikethrough (<s>) doesn't actually get mainstream support until 1996(!) in Netscape 3


There is supposed to be a <footnote> like this and <margin> notes like this.


Some more tags intended primarily for use in legal documents to signify <removed>removed items</removed>, <added>added items</added> and <changed>changed text</changed> with attributes for changed such as by, when, why, what

There was also conditional text - things that would show <online>online differently</online> than they would <printed>when printed out</printed>

Longer Quotes

Proposed <quote>, but is the same as BLOCKQUOTE from HTML 1.

Preformatted Text

Explicit Line Breaks

It was initially primarily done by the <L> tag, one per line...
<L>22 The Avenue,
<L>London, NW1 5ER
...which allowed for line identifiers, <L ID="L23">, but this didn't really take (was dropped in the update) in favor of break return <br>.

You can disable word wrap for a paragraph by doing <p wrap="off">, which is currently the way that this particular paragraph is configured see does it keep going and going and going and going? No it does not... guess that didn't make it either X|


When translating from other SGML-based formats, documents may include non-standard elements e.g. PROPNAME for proper names. HTML+ browsers will normally ignore such markup and process their contents as if these tags weren't present. The render element can be used to tell the browser how to render such tags, e.g.

<render tag="propname" style="i">

This is a test of the farthard style, which should be rendered as bold

The STYLE attribute is a comma separated list of presentation tag names, i.e. one or more names from the list: I, B, U, S, SUP, SUB, TT. Include P in the list of styles if the element needs a paragraph break. Keeping non-standard markup in HTML+ documents may be useful for indexing purposes. Note that the RENDER element isn't meant to apply retrospectively.

Image Alignment

The IMG element specifies an image via a URL. The following attributes are added:

align=top [default] ensures that the top of the image is level with the top of the current text line.

align=middle to align the center of the image with that of the current text line

align=bottom to align the bottom of the image with the bottom of the current text line

Browsers are not expected to apply text flow retrospectively, so using align=middle and align=bottom may overwrite previous lines of text.

Image Map

This does not originate from HTML+, but is recognized in this standard. It was originally a patch to httpd by Tony Sanders. To get this to work you need to enable support in httpd. In 1993 this was done via either:
  1. A patch to httpd (i.e., ismap.c)
  2. Plexus 1.0+ http server
  3. An autumn '93 version of Cern/NCSA httpd with built-in support
In 2023 this original image map method can be done by enabling the Apache module mod_imagemap, which is done on an Ubuntu server (for example) by:
  1. Sylminking /etc/apache2/mods-available/imagemap.load to /etc/apache2/mods-enabled
  2. Enabling .htaccess support (set /etc/apache2/apache2.conf section to AllowOverride All)
  3. Adding AddHandler imap-file map to .htaccess

Very awesome, but also pretty cumbersome. It's a lot of time spent getting all the coords in.

IMAGE Tag (not IMG)

Same as IMG but it allows: A palm tree in the sun
- so the image tag works but the text shows no matter what. I think it's just functional now as a long-form reference to IMG.

Horizontal Rules


Nested Lists

Nested lists are the origin of (at least my) HTML code tabbing.


I have duplicate tables here because the first of each is the HTML+ demo code, and the second is code formatted the way I would do it (easier to read).

A Simple Table
Year Month Day
1972 June 23rd
1982 October 7th

A Simple Table
Year Month Day
1972 June 23rd
1982 October 7th

A more complex table
height weight
males 1.9 0.003 yyy
females 1.7 0.002 xxx

A more complex table
average other
height weight
males 1.9 0.003 yyy
females 1.7 0.002 xxx


Please help us improve the World Wide Web by filling in the following questionaire:

Your organization?

How many users?

Which browsers do you use? Favorite Holiday:
Favorite Holiday:

Which flavor do you want?

A contact point for your site:

Scribble input type:

Audio input type:

Fake input type:

Many thanks on behalf of the WWW central support team.


This is the most ambitious part of HTML+. On it's own, forms on web pages are revolutionary, but Dave has really pulled the future to the present with these additional input types for forms:

A field upon which you can write with a pen or mouse. The size of the field in millimeters is given as size=width,height. The units are absolute as they relate to the dimensions of the human hand, rather than pixels of varying resolution. The scribble may involve time and pressure data in addition to the basic ink data. You can use scribble for signatures or sketches. The field can be initialised by setting the src attribute to a URL which contains the ink (Ink is commonly transferred in the JOT format defined by Slate, Lotus, GO, Microsoft, Apple, General Magic and others). The value attribute is ignored.
This provides a way of entering spoken messages into a form. Browsers might show an icon which when clicked pops-up a set of tape controls that you can use to record and replay messages. The initial message can be set by specifying a URL with the src attribute. The value attribute is ignored.


  Defines relationships between the current document and others. Could be useful for auto-creating indexes based on parsing link rel tags.

"Another use is to indicate a stylesheet that contains the author's layout preferences, e.g. for headers and multi-columns displays."

Lots of relationship attributes... but what actually ended up getting used? Like it's not even used in this proposal's HTML, which seems like the perfect example use case (document flow/paths).

<link rel = "next|previous"> for the next document in the sequence. i.e., when splitting up a book, or the HTML+ proposal.

TOC = <link rel="contents">

Kinda ambitious asking browsers to create toolbar buttons for these.


5 Months Later... (April '94 Update)


Greater precision is possible with the new baseline attribute which adjusts the image so that the baseline occurs at the specified number of pixels above the bottom of the image.

(Doesn't seem to work)

FORM Updates

ENYCTYPE Attribute

Is used to specify which encoding method to apply. Multipart/related messages have the advantage of declaring the content type for each message part, and will allow forms to use more efficient encodings such as JOT for pen-based input.

Hidden Attribute

Added INPUT TYPE="hidden".

Servers can store state information in forms with hidden input fields. These are not displayed and can be used to hold transaction handles etc.

Fields can be disabled (greyed out) or marked as being in error. The <message> element may be used by the server to set error messages.

Web Scripting

Sometimes you'll want to create forms where clicking on one field affects the values shown by others. You may want to restrict the values input into a given field, or to place constraints on interdependent fields. Handling this remotely is too slow, and work is underway to allow forms to be associated with scripts that are executed by the browser in response to typing at the keyboard or clicking with the mouse.

Forms now support a link to a script for client-side execution of constraints. The script attribute in the FORM element specifies the script via a URL. This will enable browsers to use HTTP format negotiation to declare which languages they support.

Clicking on a selection or typing into a text field result in events which are processed by the script. Event handlers are associated with each field or with the form itself. The script language is deliberately restricted to avoid any security issues.

This work is focussing on defining a standard API (applications programming interface) that will be used by the browser to call the script interpreter. This will allow the scripting language to be specified separately. The API acts as a firewall around the script and provides a guarantee that hostile scripts can't mess up client systems.

HTML+ as a Modular Extension

Originally, HTML+ was presented as a superset of HTML, "designed to allow a gradual roll over from the earlier format". In this update, HTML+ is presented as a set of modular extensions to HTML:

For example, HTML.emph switches on the new character emphasis types such as strike-through and in-line quotes, together with footnotes and related elements.
HTML.obsolete switches on obsoleted elements such as DIR and MENU.

These extensions are turned on/off in the doctype declaration: <!DOCTYPE htmlplus [ <!ENTITY % HTML.tables "INCLUDE"> <!ENTITY % HTML.forms "INCLUDE"> ]>


New HEAD element: <meta>

Servers should read the document head to generate HTTP headers such as "Expires:". These are initialized from META attributes such as:

<meta name="Expires" value="Tue, 04 Dec 1993 21:29:02 GMT">

Other likely attributes are keywords, created, owner (a name) and reply-to (an email address). This information is used for maintaing local caches of HTML documents.

Anchor NODE & PATH

New anchor attributes: node and path - replace some of the LINK relationship attributes for creating document flow paths.

"These richer navigation mechanisms are intended to reduce the chances that users will feel 'lost in hyperspace' when browsing through complex material."

Header Alignment!

align attribute can now be used on headers with same values and meaning as for paragraphs!


Retrospective Notes