Re: comments on html+ discussion document (dated 2 Nov 93)
Dave_Raggett <dsr@hplb.hpl.hp.com>
From: Dave_Raggett <dsr@hplb.hpl.hp.com>
Message-id: <9401071855.AA08430@manuel.hpl.hp.com>
Subject: Re: comments on html+ discussion document (dated 2 Nov 93)
To: wade@cs.utk.edu
Date: Fri, 7 Jan 94 18:55:47 GMT
Cc: www-talk@dxcern.cern.ch
Mailer: Elm [revision: 66.36.1.1]
Reed Wade asks about html+ details based on the draft spec (dated 2 Nov 93):
> sec 5.9 Images
> Why have 2 elements that do the same thing? I'd suggest dropping
> IMG from html+.
Following discussions at the WWW/TEI meeting in mid November I
dropped the IMAGE element, but kept IMG. FIG has been revised
by adding ALIGN=TOP, MIDDLE or BOTTOM, for which it is expected
to behave as a character like element in exactly the same way
as IMG now does. For ALIGN=LEFT, CENTER, BOTTOM, and by default
the image is placed after the next line break (soft or hard)
and aligned to the left, center or right. Text is flowed only
for left and right alignment of the image. Note that text which
follows the FIG element in the HTML+ document may be placed
on the line *before* the image to fill out that line.
> The example shows text flowing around the right side of the image.
> This looks nice, but it isn't clear that it should be rendered
> that way if an image is a 'character like element'. Is this simply
> a matter of the renderer doing what would look best in a given
> situation? (That seems reasonable.)
Hope the above makes sense of this.
> There is mention here of shaped buttons which can be overlayed on
> the image but no specifics are given. Is the intention here to support
> the FIG style shapes?
Shaped buttons are only possible with FIG.
> Is there any way to specify whether the server wants a region or
> a point? I can see situations where you would want either, or only
> one or the other. Is the server required to accept both forms in
> all cases?
I haven't considered this, and wonder if we should just stick to
points for the moment?
> Should CAPTION's prepend a "Figure %d: " to their text, as in tables?
This seems like a stylistic issue for browsers. I don't think we
should force this for figures or tables.
> Should CAPTION's have an option allowing placement above the figure
> instead of below?
Maybe. I left one out thinking that perhaps this be left up to browsers.
However, it would be an easy feature to add and one which wouldn't hurt
any browsers that didn't recognise the attribute.
> sec 9 Tables
> What if I want lines around some cells but not others?
This might be making things rather too complicated for browser writers.
Lets wait until we get experience with the simple approach first.
> This MH element feels like a pasted on bit of ugliness to make up
> for functionality that really ought to be in the mailto url (smiley
> face goes here). I'm probably overreacting to this, it may not be
> significant.
Yup, its been chucked out in favour of a new element STATE which can
be used by servers to hold state information in a manner that is
opaque to clients. The changes to forms need more space to detail
than I can give right now.
> In the list of types, is IMAGE supposed to be IMAGEMAP?
No.
> The SCRIBBLE type might do well to allow other image types than JOT.
> In any case, bitmap info would be a handy option, maybe in pbm format.
OK, the content type will be specified in the MIME multipart/related message.
> For the SELECT type (with SEVERAL indicated) how do you encode
> the multiple options that may be selected?
The options are specified by the OPTION element. Look at the SELECTED
attribute for the OPTION element. This can be used to specify which
options are currently selected.
> sec 10.2 Sending a Form via Email
This capability has been dropped for now, under pressure from browser
writers. You can always do this from the server.
Regards,
Dave Raggett
p.s. I enclose a copy of the current DTD which is still subject to revision.
----------------------------------------------------------------------------
<!SGML "ISO 8879:1986"
--
Document Type Definition for the HyperText Markup Language Plus
for use with the World Wide Web application (HTML+ DTD).
The HTML+ DTD which is structured as an HTML core plus a
number of additional modules which can be included by an
entity definition in a document's <!DOCTYPE> element.
You can include specific features in your document
using the DOCTYPE declaration at the start, e.g.
<!DOCTYPE htmlplus [
<!ENTITY % HTML.tables "INCLUDE">
<!ENTITY % HTML.forms "INCLUDE">
]>
This spec also allows for authors to extend the DTD and
to define how any new elements are rendered in terms of
existing ones. This should be used with caution.
Dave Raggett 5th January 1994
--
CHARSET
BASESET "ISO 646:1983//CHARSET
International Reference Version (IRV)//ESC 2/5 4/0"
DESCSET 0 9 UNUSED
9 2 9
11 2 UNUSED
13 1 13
14 18 UNUSED
32 95 32
127 1 UNUSED
BASESET "ISO Registration Number 100//CHARSET
ECMA-94 Right Part of Latin Alphabet Nr. 1//ESC 2/13 4/1"
DESCSET 128 32 UNUSED
160 95 32
255 1 UNUSED
CAPACITY SGMLREF
TOTALCAP 150000
GRPCAP 150000
SCOPE DOCUMENT
SYNTAX
SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27 28 29 30 31 127 255
BASESET "ISO 646:1983//CHARSET
International Reference Version (IRV)//ESC 2/5 4/0"
DESCSET 0 128 0
FUNCTION RE 13
RS 10
SPACE 32
TAB SEPCHAR 9
NAMING LCNMSTRT ""
UCNMSTRT ""
LCNMCHAR ".-"
UCNMCHAR ".-"
NAMECASE GENERAL YES
ENTITY NO
DELIM GENERAL SGMLREF
SHORTREF SGMLREF
NAMES SGMLREF
QUANTITY SGMLREF
NAMELEN 32
TAGLVL 100
LITLEN 1024
GRPGTCNT 150
GRPCNT 64
FEATURES
MINIMIZE
DATATAG NO
OMITTAG YES
RANK NO
SHORTTAG NO
LINK
SIMPLE NO
IMPLICIT NO
EXPLICIT NO
OTHER
CONCUR NO
SUBDOC NO
FORMAL YES
APPINFO NONE
>
<!DOCTYPE HTMLPLUS [
<!-- DTD for HTML+
Markup minimisation should be avoided, otherwise the default <!SGML>
declaration is fine. Browsers should be forgiving of markup errors,
while authoring tools *should* enforce compliance with the DTD.
Common Attributes:
id This attribute allows authors to name elements such as headers
and paragraphs as potential destinations for links. Note that
links don't specify points, but rather extended objects.
charset This allows authors to switch to a different char set for
quotations or list etc. This is particularly useful for oriental
languages which need two byte character codes, e.g. see RFC 1468
"Japanese Character Encoding for Internet Messages"
-->
<!-- ENTITY DECLARATIONS
<!ENTITY % foo "X | Y | Z"> is a macro definition for parameters and in
subsequent statements, the string "%foo;" is expanded to "X | Y | Z"
Various classes of SGML text types:
CDATA text which doesn't include markup or entity references
RCDATA text with entity references but no markup
PCDATA text occurring in a context in which markup and entity references
may occur.
-->
<!-- Core HTML+ DTD omits following features -->
<!ENTITY % HTML.math "IGNORE">
<!ENTITY % HTML.tables "IGNORE">
<!ENTITY % HTML.figures "IGNORE">
<!ENTITY % HTML.emph "IGNORE">
<!ENTITY % HTML.forms "IGNORE">
<!ENTITY % cextra "" -- for character-like elements -->
<!ENTITY % pextra "" -- for paragraph-like elements -->
<!-- %cextra; and %pextra are designed to allow document specific
extensions to the HTML+ DTD, e.g.
<!DOCTYPE htmlplus [
<!ENTITY % cextra "|PROPNAME">
<!ELEMENT PROPNAME - - CDATA>
]>
Use the RENDER element to specify how the browser should
display new elements in terms of existing ones, e.g.
<RENDER tag="PROPNAME" style="I">
-->
<!ENTITY % URL "CDATA" -- a URL or URN designating a hypertext node -->
<!-- Browsers should render the following types of emphasis
distinctly when the obvious rendering is impractical
I = italic, B = bold, U = underline, S = strikethru,
TT = teletype font, SUP = superscript, SUB = subscript
REV = reverse video for highlighting hit areas in the result of a query
Q = inline quote (render according to local conventions)
-->
<!ENTITY % emph1 "I|B|U|TT|CITE|EM|STRONG|KBD|VAR|DFN|CODE|SAMP">
<!ENTITY % emph2 "S|Q|PERSON|ACRONYM|ABBREV|CMD|ARG|REMOVED|ADDED|REV">
<!ENTITY % emph3 "SUP|SUB|CHANGED">
<!ENTITY % emph "%emph1;">
<![ %HTML.emph [ <!ENTITY % emph "%emph1;|%emph2;|%emph3;"> ]]>
<!ENTITY % misc1 "">
<![ %HTML.emph [ <!ENTITY % misc1 "|RENDER|FOOTNOTE|MARGIN"> ]]>
<!ENTITY % misc2 "">
<![ %HTML.forms [ <!ENTITY % misc2 "|INPUT|TEXTAREA|SELECT"> ]]>
<!ENTITY % misc "BR %misc1 %misc2; %cextra;">
<!ENTITY % text "#PCDATA|A|IMG|%emph;|%misc;">
<![ %HTML.figures [ <!ENTITY % text "#PCDATA|A|IMG|FIG|%emph;|%misc;"> ]]>
<!ENTITY % paras "P|PRE %pextra;">
<![ %HTML.emph [ <!ENTITY % paras "P|PRE|LIT %pextra;"> ]]>
<!ENTITY % lists "UL|OL|DL">
<!ENTITY % block1 "ADDRESS|HR">
<![ %HTML.emph [ <!ENTITY % block1 "NOTE|QUOTE|ABSTRACT|ADDRESS|HR"> ]]>
<!ENTITY % block2 "">
<![ %HTML.tables [ <!ENTITY % block2 "|TABLE"> ]]>
<!ENTITY % block3 "">
<![ %HTML.forms [ <!ENTITY % block3 "|FORM"> ]]>
<!ENTITY % block4 "">
<![ %HTML.math [ <!ENTITY % block4 "|MATH"> ]]>
<!ENTITY % block "%block1; %block2; %block3; %block4;">
<!ENTITY % setup1 "">
<![ %HTML.emph [<!ENTITY % setup1 "& RENDER*"> ]]>
<!ENTITY % setup "(TITLE? & ISINDEX? & BASE? & META* & LINK* %setup1;)">
<!ENTITY % main "%block;|%lists;|%paras;">
<!-- these entities are used to simplify element definitions -->
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!ENTITY % table "P|%heading;|%lists;">
<!ENTITY % math "BOX|ARRAY|ROOT|%text;">
<!-- Browsers should as a minimum support the following types
of INPUT fields, in addition to TEXTAREA and SELECT:
text, checkbox, radio, submit, and reset
password, int, float, date, url can be mapped to text fields
while image, scribble and audio fields can be ignored
-->
<![ %HTML.forms [
<!ENTITY % fields "text|password|checkbox|radio|submit|reset|int|
float|date|url|range|image|scribble|audio">
]]>
<!-- Core DTD includes basic Latin-1 entities -->
<!ENTITY % ISOlat1 PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN">
%ISOlat1;
<!-- additional entities normally found in Latin-1 char sets-->
<!ENTITY % ISOnum PUBLIC "ISO 8879-1986//ENTITIES Numeric and Special Graphic//EN">
%ISOnum;
<!-- diacritical marks normally found in Latin-1 char sets-->
<!ENTITY % ISOdia PUBLIC "ISO 8879-1986//ENTITIES Diacritical Marks//EN">
%ISOdia;
<!-- misc. from ISO Publishing entities -->
<!ENTITY ndash SDATA "[ndash ]"--=en dash-->
<!ENTITY mdash SDATA "[ndash ]"--=em dash-->
<!ENTITY ensp SDATA "[ensp ]"--=en space (1/2-em)-->
<!ENTITY emsp SDATA "[emsp ]"--=em space-->
<!ENTITY hellip SDATA "[hellip]"--=ellipsis (horizontal)-->
<!ENTITY vellip SDATA "[vellip]"--=ellipsis (vertical)-->
<!-- maths symbols when needed -->
<![ %HTML.math [
<!ENTITY % ISOtech PUBLIC "ISO 8879-1986//ENTITIES General Technical//EN">
%ISOtech;
<!ENTITY % ISOgrk3 PUBLIC "ISO 8879-1986//ENTITIES Greek Symbols//EN">
%ISOgrk3;
<!ENTITY % ISOamso PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols: Ordinary//EN">
%ISOamso;
<!ENTITY % ISOamsr PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols: Relations//EN">
%ISOamsr;
<!ENTITY % ISOamsc PUBLIC "ISO 8879-1986//ENTITIES Added Math Symbols: Delimiters//EN">
%ISOamsc;
<!-- misc. from ISO Binary and Large operators -->
<!ENTITY thinsp SDATA "[thinsp]"--=thin space (1/6 em)-->
<!ENTITY coprod SDATA "[coprod]"--/coprod L: coproduct operator-->
<!ENTITY prod SDATA "[prod ]"--/prod L: product operator-->
<!ENTITY sum SDATA "[sum ]"--/sum L: summation operator-->
]]>
<!-- Basic types of elements:
<!ELEMENT tagname - - CONTENT> elements needing end tags
<!ELEMENT tagname - O CONTENT> elements with optional end tags
<!ELEMENT tagname - O EMPTY> elements without content or end tags
The content definition is:
- an entity definition as defined above
- a tagname
- (brackets enclosing the above)
These may be combined with the operators:
A* A occurs zero or more times
A+ A occurs one or more times
A|B implies either A or B
A? A occurs zero or one times
A,B implies first A then B
A&B either or both A and B (in either order A B or B A)
-->
<!ELEMENT HTMLPLUS O O (HEAD, BODY)>
<!ATTLIST HTMLPLUS
version CDATA #IMPLIED -- the HTML+ version number --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT HEAD O O (%setup;) -- delimits document wide properties -->
<!ELEMENT BODY O O ((%main;)*, DIV6*, DIV5*, DIV4*, DIV3*, DIV2*, DIV1*)>
<!-- the following causes each header to imply a container of everything
up to (but not including) the next peer or higher level header -->
<!ELEMENT DIV1 O O (H1, (%main;)*, DIV6*, DIV5*, DIV4*, DIV3*, DIV2*)>
<!ELEMENT DIV2 O O (H2, (%main;)*, DIV6*, DIV5*, DIV4*, DIV3*)>
<!ELEMENT DIV3 O O (H3, (%main;)*, DIV6*, DIV5*, DIV4*)>
<!ELEMENT DIV4 O O (H4, (%main;)*, DIV6*, DIV5*)>
<!ELEMENT DIV5 O O (H5, (%main;)*, DIV6*)>
<!ELEMENT DIV6 O O (H6, (%main;)*)>
<!ATTLIST (DIV6|DIV5|DIV4|DIV3|DIV2|DIV1)
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- Document headers -->
<!ELEMENT (%heading;) - - (#PCDATA | %emph;)+>
<!ATTLIST (%heading;)
id ID #IMPLIED -- defines link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- character emphasis -->
<!ELEMENT (%emph1;) - - (%text;)*>
<!ATTLIST (%emph1;)
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- Paragraphs which act as containers for the following text -->
<!ELEMENT P O O (%text;)+>
<!ATTLIST P
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
align (left|indent|center|right|justify) left>
<!ELEMENT HR - O EMPTY -- Horizontal Rule -->
<!ELEMENT BR - O EMPTY -- forced line break -->
<!ELEMENT PRE - - (%text;)+ -- preformatted fixed pitch text -->
<!ATTLIST PRE
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT ADDRESS - - (P)+ -- info on author -->
<!ATTLIST ADDRESS
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- Lists which can be nested -->
<!ELEMENT OL - - (LI)+ -- ordered list -->
<!ATTLIST OL
id ID #IMPLIED
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
compact (compact) #IMPLIED -- reduced interitem spacing -->
<!ELEMENT UL - - (LI)+ -- unordered list -->
<!ATTLIST UL
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
compact (compact) #IMPLIED -- reduced interitem spacing --
plain (plain) #IMPLIED -- suppress bullets --
wrap (vert|horiz|none) none -- multicolumn list wrap style -->
<!-- List items for UL and OL lists
The icon or label overides the default rendering -->
<!ELEMENT LI - O (DL|UL|OL|P|HR)+>
<!ATTLIST LI
id ID #IMPLIED
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
icon %URL; #IMPLIED -- icon for use in place of bullet --
label CDATA #IMPLIED -- when you can't show the icon -->
<!-- Definition Lists (terms + definitions) -->
<!ELEMENT DL - - (DT*,DD)+>
<!ATTLIST DL
id ID #IMPLIED
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
compact (compact) #IMPLIED -- reduced interitem spacing -->
<!ELEMENT DT - O (%text;)+ -- term text -- >
<!ELEMENT DD - O (P|UL|OL|DL|HR)+ -- definition text -- >
<!ATTLIST (DT|DD)
id ID #IMPLIED
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- Hypertext Links from points within document nodes
The HREF attribute specifies the link destination as a URL or URN.
In figures, the SHAPE attribute defines the extent of the link as
a polygonal region. The PLAY attribute specifies an accompanyment,
e.g. a talking head or just a simple sound sequence that is to be
played upon following the link.
The PRINT attribute determines how the browser should deal with
links when printing the document out. This makes it possible for
users to print out a document and related subdocuments with a
single menu action.
The TITLE attribute may be used for links in which the destination
node doesn't define a title itself, e.g. non-html documents.
-->
<!ELEMENT A - - (#PCDATA | IMG | %emph;)*>
<!ATTLIST A
id ID #IMPLIED -- as target of link --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
shape CDATA #IMPLIED -- list of points for shaped buttons --
href %URL; #IMPLIED -- destination node --
rel CDATA #IMPLIED -- forward relationship type --
rev CDATA #IMPLIED -- reverse relationship type --
print CDATA #IMPLIED -- reference/footnote/section --
title CDATA #IMPLIED -- when otherwise unavailable -->
<!-- Other kinds of relationships between documents
There are a set of standard RELationship types which alter the
browser's navigation menu, e.g. Next, Previous, UseIndex, ...
The AFTER attribute specifies a delay after which if the user
has done nothing, the browser should follow the link. This makes
it possible to run storyboards
The IDREF attribute makes it possible to specify annotation links
separately from the document text flow. With HTTP, servers can
use the WWW-Link: header to "insert" such annotations into a
document.
-->
<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
id ID #IMPLIED -- to allow meta info on links --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
from IDREF #IMPLIED -- starting point --
href %URL; #IMPLIED -- destination node --
rel CDATA #IMPLIED -- forward relationship type --
rev CDATA #IMPLIED -- reverse relationship type --
print CDATA #IMPLIED -- reference/footnote/section --
title CDATA #IMPLIED -- when otherwise unavailable -->
<!-- Document title -->
<!ELEMENT TITLE - - (#PCDATA | %emph;)+>
<!ATTLIST TITLE
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- Original document URL for resolving relative URLs -->
<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE HREF %URL; #IMPLIED>
<!-- Signifies the document's URL accepts queries,
and may be implied by HTTP header info -->
<!ELEMENT ISINDEX - O EMPTY>
<!ATTLIST ISINDEX href %URL; #IMPLIED -- defaults to document's URL -->
<!--
Servers should read the document head to generate HTTP headers
corresponding to META elements, e.g. if the document contains:
<meta name="Expires" value="Tue, 04 Dec 1993 21:29:02 GMT">
The server should include the HTTP date format header field:
Expires: Tue, 04 Dec 1993 21:29:02 GMT
Other likely names are Date (creation date), Last-Modified,
Owner (a name) Contact (an email address).
-->
<!ELEMENT META - O EMPTY>
<!ATTLIST META
id ID #IMPLIED -- to allow meta info --
name CDATA #IMPLIED -- HTTP header e.g. "Expires" --
value CDATA #IMPLIED -- associated value -->
<![ %HTML.emph [
<!-- additional character emphasis -->
<!ELEMENT (%emph2;) - - (%text;)*>
<!ATTLIST (%emph2;)
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT (SUP|SUB) - - (%text;)* -- superscripts and subscripts -->
<!ATTLIST (SUP|SUB)
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
pre (pre) #IMPLIED -- for use as prefixes for math -->
<!ELEMENT (FOOTNOTE|MARGIN) - - (%text;)* -(FOOTNOTE|MARGIN)>
<!ATTLIST (FOOTNOTE|MARGIN)
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- RENDER only appears in the document head -->
<!ELEMENT RENDER -O EMPTY -- how to render unknown elements -->
<!ATTLIST RENDER
id ID #IMPLIED -- to allow meta info --
tag CDATA #IMPLIED -- tag name --
equiv CDATA #IMPLIED -- HTML+ equivalent tag name --
style NAMES #IMPLIED -- space separated list of styles -->
<!ELEMENT LIT - - (TAB|%text;)+ -- literal variable pitch text -->
<!ATTLIST LIT
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT TAB - O EMPTY -- tabs for imported text -->
<!ATTLIST TAB
id ID #IMPLIED -- to allow meta info --
at NUMBER #IMPLIED -- in em units or width of an "m" --
align (left|center|right|decimal) left -- tab alignment -->
<!ELEMENT QUOTE - - (P*) -- block quote -->
<!ATTLIST QUOTE
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT ABSTRACT - - (P*) -- document summary -->
<!ATTLIST ABSTRACT
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- often rendered with an icon in left margin,
the role is shown before the first paragraph -->
<!ELEMENT NOTE - - (P*) -- admonishment -->
<!ATTLIST NOTE
id ID #IMPLIED -- link destination --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
role (Simple|Tip|Note|Warning|Error) Simple >
<!-- change bars can bridge markup boundaries -->
<!ELEMENT CHANGED - O EMPTY>
<!ATTLIST CHANGED -- one of id or idref is always required --
id ID #IMPLIED -- signals start of changes --
idref IDREF #IMPLIED -- signals end of changes -->
]]>
<!-- defined in core because SGML doesn't define logical conjunctions
such that it could be defined iff (HTML.forms or HTML.tables) -->
<!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
<!ATTLIST CAPTION
id ID #IMPLIED
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<![ %HTML.tables [
<!-- a pre-pass is needed to count columns and determine
min/max widths before sizing to match window size -->
<!ELEMENT TABLE - - (CAPTION?, (TR)*) -- mixed headers and data -->
<!ATTLIST TABLE
id ID #IMPLIED
border (border) #IMPLIED -- draw borders --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT TR O O (TH|TD)* -- acts like row separator -->
<!ATTLIST TR id ID #IMPLIED>
<!ELEMENT TH - O (%table;)* -- a header cell -->
<!ATTLIST TH
id ID #IMPLIED
colspan NUMBER 1 -- columns spanned --
rowspan NUMBER 1 -- rows spanned --
align (left|center|right|numeric) center
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!ELEMENT TD - O (%table;)* -- a data cell -->
<!ATTLIST TD
id ID #IMPLIED
colspan NUMBER 1 -- columns spanned --
rowspan NUMBER 1 -- rows spanned --
align (left|center|right|numeric) center
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
]]>
<![ %HTML.forms [
<!--
The form contents are sent to the server upon pressing a submit
button or a field with the update attribute. The HTTP reply status
code signifies whether the data is a new document or whether it just
specifies updates to field values. For the latter the ID values
are used to specify which field is involved.
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.
Servers can store state information in forms with the STATE element.
-->
<!ELEMENT FORM - - (STATE?, (%main;)*, MESSAGE?) -(FORM) -- forms can't be nested -->
<!ATTLIST FORM
id ID #IMPLIED
action %URL; #IMPLIED -- defaults for URL for current doc --
method CDATA #IMPLIED -- GET, PUT, POST, DELETE etc. --
enctype CDATA #IMPLIED -- encoding type for form transfers --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!--
This element is opaque to the client and *NOT* rendered,
It is used by servers to store state info so that the
server itself remains stateless. The state data is sent
the server along with the form contents. Similarly servers
can send back state data with form updates.
-->
<!ELEMENT STATE - - (#CDATA)>
<!ATTLIST STATE
id ID #IMPLIED -- to allow meta info -->
<!-- input fields in forms - I want to throw out maxlength as it is over
the default NAMELEN limit of 8 chararcters, but leave it in for now -->
<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
id ID #IMPLIED -- to allow meta info --
name CDATA #IMPLIED -- attribute name (may not be unique) --
type (%fields) text -- a wide variety of field types --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
size CDATA #IMPLIED -- visible size of text fields --
min NUMBER #IMPLIED -- for range controls --
max NUMBER #IMPLIED -- for range controls or text fields --
maxlength NUMBER #IMPLIED -- max length of text fields (equiv to max)--
value CDATA #IMPLIED -- attribute value (altered by user) --
checked (checked) #IMPLIED -- for check boxes and radio buttons --
disabled (disabled) #IMPLIED -- if grayed out --
error (error) #IMPLIED -- if in error --
src %URL; #IMPLIED -- for IMAGE, SCRIBBLE & AUDIO fields --
alt CDATA #IMPLIED -- alternative text for VT100's etc --
align (top|middle|bottom) top -- for IMAGE fields only --
update (update) #IMPLIED -- for dynamic updates by server -->
<!-- multiline text input fields, we probably will want
to generalise this to accept arbitrary clipboard data
e.g. hypertext and images, in addition to plain text -->
<!ELEMENT TEXTAREA - - RCDATA -- multi-line text fields -->
<!ATTLIST TEXTAREA
id ID #IMPLIED -- to allow meta info --
name CDATA #IMPLIED -- attribute name (may not be unique) --
cols NUMBER #IMPLIED -- visible width in characters --
rows NUMBER #IMPLIED -- visible height in characters --
disabled (disabled) #IMPLIED -- if grayed out --
error (error) #IMPLIED -- if in error --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
update (update) #IMPLIED -- for dynamic updates by server -->
<!ELEMENT SELECT - - (OPTION+) -- combo style selection lists -->
<!ATTLIST SELECT
id ID #IMPLIED -- to allow meta info --
name CDATA #IMPLIED -- attribute name (may not be unique) --
multiple (multiple) #IMPLIED -- permits multiple selections --
error (error) #IMPLIED -- if in error --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese --
update (update) #IMPLIED -- for dynamic updates by server -->
<!ELEMENT OPTION - - RCDATA>
<!ATTLIST OPTION
id ID #IMPLIED -- to allow meta info --
selected (selected) #IMPLIED -- if initially selected --
disabled (disabled) #IMPLIED -- if grayed out --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
<!-- used by server to set warning/error messages -->
<!ELEMENT MESSAGE - - RCDATA -- place for error/warning/info -->
<!ATTLIST MESSAGE
id ID #IMPLIED -- to allow meta info --
status (info|warning|error) info
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
]]>
<![ %HTML.figures [
<!-- figures which subsume the role of the earlier IMG element.
Behaves identically to IMG for align = top, middle or bottom.
Otherwise figure is inserted after next line break (soft or hard).
For align=left, the image is left aligned and text is flowed
on the right of the image, and similarly for align=right, with
no text flow for align=center (the default). The caption is
placed under the image.
The <A> element is used for shaped buttons handled by browser,
while the ISMAP mechanism sends pointer clicks/drags to server.
The text contained by this element is used for text-only displays
and authors should remember to provide effective descriptions,
including label text for shaped buttons.
-->
<!ELEMENT FIG - - (CAPTION?,(%text;)*)>
<!ATTLIST FIG
id ID #IMPLIED
align (top|middle|bottom|left|center|right) center -- position --
ismap (ismap) #IMPLIED -- server can handle mouse clicks/drags --
src %URL; #IMPLIED -- link to image data --
charset CDATA #IMPLIED -- eg "ISO-2022-JP" for japanese -->
]]>
<!-- img is left in for at least the short term -->
<!ELEMENT IMG - O EMPTY>
<!ATTLIST IMG
src %URL; #REQUIRED -- where to get image data --
align (top|middle|bottom) top -- top, middle or bottom --
seethru CDATA #IMPLIED -- for chromakey --
alt CDATA #IMPLIED -- description for text-only displays --
ismap (ismap) #IMPLIED -- send mouse clicks/drags to server -->
<![ %HTML.math [
<!-- Proposal for representing formulae
Delimiters should stretch to match the size of the delimited
object. <SUB> and <SUP> are used for subscripts and superscripts
i j
X<SUP PRE>i</SUP><SUP>j</SUP> is X
-->
<!ELEMENT MATH - - (%math;)*>
<!ATTLIST MATH id ID #IMPLIED>
<!-- Invisible brackets which may also be
used for numerators and denominators:
1 + X
<BOX>1 + X<OVER>Y</BOX> is _______
Y
_____
<BOX><OVER>X + Y</BOX> is X + Y
-->
<!ELEMENT BOX - - ((%math;)*, (OVER, (%math;)*)?)>
<!-- Horizontal line between numerator and denominator
The symbol attribute allows authors to supply an
entity name for an arrow symbol etc.
-->
<!ELEMENT OVER - O EMPTY>
<!ATTLIST OVER symbol ENTITY #IMPLIED>
<!-- Roots - default to square root -->
<!ELEMENT ROOT - - (%math;)*>
<!ATTLIST ROOT root CDATA #IMPLIED>
<!-- LaTeX like arrays. The align attribute specifies
a single letter for each column, which also determines
how the column should be aligned, e.g. align=ccc"
"l" left
"c" center
"r" right
-->
<!ELEMENT ARRAY - - (ITEM)+>
<!ATTLIST ARRAY align CDATA #REQUIRED>
<!ELEMENT ITEM - O (%math;)*>
]]>
<!-- The END -->
]>