Simple HyTime HTML 3.0 proposal

Christophe ESPERT (espert@cln46ib.der.edf.fr)
Wed, 22 Mar 95 10:52:36 EST

> WARNING: This message is a MIME message. Some parts
> of it will be readable as plain text. The others require
> a MIME conformant Mail User Agent.

--Meuf_262_23010
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

I posted this about a week ago but some people did not get it.
So I send it again...
Best,
Christophe
--Meuf_262_23010
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Description: Plain text...

--Meuf_4926_4086
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hi,

The following is a simple proposal to show how HTML 3.0 could become a
better SGML application and also a HyTime application.

The proposal is based on the March 1st version of the HTML DTD. You'll
find also that the SGML declaration has been slightly changed to meet a
HyTime conformance criterion.

In the DTD, after the introductory comment, you'll find a change history
that shows how the DTD was modified. The new stuff is embedded in
%HTML.Recommended; marked sections, which is compatible with what has
been done until now.

Before commenting the major changes, let me say that the %HTML.Version;
parameter entity has been changed to a general entity. Indeed this
entity is being referenced from the #FIXED value of the VERSION attribute
on the HTML element and if we had kept with the parameter entity it would
not have been correctly interpreted by a parser. Parameter
entity references are not recognized in #FIXED attribute values.

The major changes concern a proper entity management. In SGML an entity
is a virtual storage unit (it is not a macro as it is sometimes stated).
When you declare an entity you are in fact giving a name to a storage unit
and you'll be able to use this name to make a reference to the storage unit.
An SGML document can be split over several entities, which means concretely
that it may be split over several files. And HTML is already doing it with
the images and other multimedia objects. HTML is doing it with the URL
mechanism and this is not exactly the mechanism proposed by SGML. You'll
find in the proposed DTD that the IMG element still has the SRC attribute.
But the SRC attribute is no longer a URL, it is an entity. You'll find the
URL as the external identifier of the entity when the entity is declared in
the document type declaration. It means that there is a
new indirection mechanism. Furthermore all the SRC attributes on other
elements like HR have been changed to ENTITY following the same mechanism.
You had almost showed the mechanism with the DINGBAT attribute. The DINGBAT
attribute is an entity declared in the HTML icons. And when you want to use
something that is not in the HTML icons, you use the SRC attribute. Well
the SRC and DINGBAT attributes have been merged because there is no need to
separate both cases. The DINGBAT is always an entity.

>From the HyTime standpoint the entity management is extremely important.
You'll notice that being a very simple HyTime application does not require
a lot of things. First the APPINFO in the SGML declaration. Then the
processing instructions to be put prior to the DOCTYPE declaration. Then
a #FIXED attribute on the HTML element. Finally a few adjustments on the
A element. Please take a look at the DTD. It may be a little difficult
at first because of indirection levels but this is necessary to be able to
have complex hyperlinks in the future. There is no need to use all the
HyTime facilities here. The major thing is in fact a good entity management.
All the functionnalities are already in the W3 clients. For authoring HTML
documents, the WYSIWYG editors will hide all the syntactic tweaks from the
end user and he/she will never know. People now understand how HTML works
and we should not be afraid of proposing new levels for richer models.

Finally it would be good if W3 client vendors decide to introduce SGML
parsers in their product. There are now three public domain SGML parsers
with APIs:
YASP : ftp://ftp.ifi.uio.no/pub/SGML/YASP
SP : http://www.jclark.com
ObjectSGML : ftp://ftp.ifi.uio.no/pub/SGML/YAO
They can be easily integrated in browsers.

Daniel Glazman and I will work on the element structure part of the DTD
as soon as possible. It is already interesting to point out that there
are sometimes too many parameter entities. Please use them with care so
that they do not make the markup more obscure. Otherwise the HTML model
is evolving in the right direction.

Congratulations to Dan, Dave and all the willing participants.

If you have any questions, please speak up.

Best regards,
Christophe Espert
PS: Sorry if I did not use the correct MIME content type.
--Meuf_4926_4086
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
Content-Description: Plain text...

<!SGML "ISO 8879:1986"

--
	SGML Declaration for HyperText Markup Language (HTML)
	as used by the World-Wide Web (WWW) application.

--

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 96 32

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 BASESET "ISO 646:1983//CHARSET International Reference Version (IRV)//ESC 2/5 4/0" DESCSET 0 128 0 FUNCTION -- SPACE 32 TAB SEPCHAR 9 LF SEPCHAR 10 FF SEPCHAR 12 CR SEPCHAR 13 --

-- The above FUNCTION character declarations do not include -- -- anything for RS and RE which are mandatory. --

-- The above is an accurate description of the usage of FUNCTION -- -- characters in HTML implementations; that is, there is no -- -- Record Start or Record End character, and no occurences of -- -- character 10 or 13 are "ignored" by the parser. -- -- But because few SGML implementations support this concrete -- -- sytax, we include the one below. --

-- Note that in order to get correct behaviour w.r.t. newline -- -- processing, you will have to play some tricks in construcing -- -- the document entity for parsing in order to keep the parser -- -- from ignoring newlines in surpirsing ways --

RE 13 RS 10 SPACE 32 TAB SEPCHAR 9 FF SEPCHAR 12

NAMING LCNMSTRT "" UCNMSTRT "" LCNMCHAR ".-" UCNMCHAR ".-" NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF SHORTREF SGMLREF NAMES SGMLREF QUANTITY SGMLREF NAMELEN 72 -- somewhat arbitrary; taken from internet line length conventions -- TAGLVL 100 LITLEN 1024 GRPGTCNT 150 GRPCNT 64

FEATURES MINIMIZE DATATAG NO OMITTAG YES RANK NO SHORTTAG YES LINK SIMPLE NO IMPLICIT NO EXPLICIT NO OTHER CONCUR NO SUBDOC NO FORMAL YES APPINFO "HyTime" -- for HyTime conformance -- > <!-- $Id: html.decl,v 1.8 1994/06/21 17:10:29 connolly Exp $

Author: Daniel W. Connolly <connolly@hal.com>

See also: http://www.hal.com/%7Econnolly/html-spec http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html --> <!-- Modified by Christophe D. Espert (espert@cln46ib.der.edf.fr) Changed the APPINFO parameter Corrected a comment about RS and RE --> --Meuf_4926_4086 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Content-Description: Plain text...

<!-- html3.dtd

Document Type Definition for the HyperText Markup Language (HTML DTD)

Draft: Wed 01-Mar-95 09:08:15

Author: Dave Raggett <dsr@hplb.hpl.hp.com>

W3O is developing a testbed browser to provide practical experience with HTML 3.0 before it becomes a standard. See: http://www.w3.org/hypertext/WWW/Arena/

This is an open process and comments are welcomed on the www-html mailing list.

While HTML 3.0 is being discussed, please use text/x-html3 as a temporary MIME content type, as this will allow clients to distinguish html 3 from current html documents.

The entity HTML.Recommended can be used to give a more rigorous version of the DTD suitable for use with SGML authoring tools. The default version of the DTD offers a laxer interpretation, e.g. allowing authors to omit leading <P> elements. You can switch on the more rigorous version of the DTD by including the following at the start of your HTML document.

<!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN" [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >

Design Objectives:

o Backwards compatibility with 2.0

o Tightening up HTML.Recommended and moving more things to HTML.Deprecated

o Keep HTML - simple don't compete with CALS

o Make it practical for people to edit HTML 3.0 documents directly, i.e. avoid long names.

o Tables, figures and math from HTML+ with tweaks based on recent experience

o Client-side event handling for figures and graphical form selection menus

o Add limited presentational controls with a view to use of linked style sheets (style overrides are supported)

o Compatibility with ICADD as per Yuri's suggestions

HTML 3.0 relies on linked style info to give authors control over the appearence of documents. Such info is placed in a linked style sheet, or as overrides in the HTML document head, using the STYLE element. The generic CLASS attribute can be used to subclass elements when you want to use a different style from normal, e.g. you might use <h2 class=bigcaps> for headers with enlarged capital letters. Note that the class attribute has a wider scope than just style changes, e.g. browsers could provide the means for searching through documents, restricting search according to element class values.

The DTD contains a small number of attributes for direct control of basic alignment parameters; column widths for tables; support for custom bullets, sequence numbering for lists and headers; and text flow. These attributes offer control over appearence which would be inconvenient to express exclusively via associated style sheets.

The MD attribute for each hypertext or inline link specifies a message digest such as MD5 for the linked object and is needed to ensure someone hasn't tampered with a linked document.

History:

1st March '95

Dropped align attribute from BR element Added indent attribute to TAB Added optional CREDIT to end of BQ Changed FIG to %body.content to allow headers

22nd February '95

Added align attribute, and dropped before, after, center and right attributes to clean up TAB element Added INS and DEL for legal documents Added CREDIT to end of FIG element Dropped FN in favor of <NOTE ROLE=FootNote>

9th Feburuary '95

Dropped base attribute mechanism for scoping relative URLs Dropped nofold attribute for disabling whitespace folding Dropped border width attributes for FIG (-> style sheet) Dropped delims attribute from math BOX element Added baseline to list of valign attribute values for tables. Added DIV element for generic container class and static banners Added MARK element for marked range class Added closed set of LINK REL values for toolbars Added numbering attributes to headers Added bullet attributes to headers Added TERM element to math for style sheet control of term rendering Changed to imagemap=URI for server-side event handling for FIG/OVERLAY Changed delimiter attributes for math arrays Changed ROOT element for maths to allow an arbitrary radix Simplified numbering attributes for ordered lists Simplified STYLE element to leave binding to style language -->

<!--====================================================================--> <!-- Typical invocation: <!DOCTYPE HTML PUBLIC "-//W3O//DTD W3 HTML 3.0//EN"> -->

<!--====================================================================--> <!-- HyTime version and support declarations to be put before the DOCTYPE declaration in the document. They can be generated very easily. <?HyTime VERSION "ISO/IEC 10744:1992" HYQCNT=32> <?HyTime MODULE base> <?HyTime MODULE locs> <?HyTime MODULE links> -->

<!-- Formal Public Identifier: -//W3O//DTD W3 HTML 3.0//EN --> <!-- Change History: Got rid of HTML.content parameter entity Change the HTML.Version parameter entity to be a general entity Added some useful notation declarations Changed DSSSL notation declaration Changed SRC attribute on IMG and introduce entity declarations for images Introduce standard SDATA entity sets for special characters SRC and DINGBAT attributes merged because of better entity management. Elements involved are headings, HR, UL,LI. Changed SRC attribute on INPUT, SELECT, FIG, OVERLAY, NOTE Changed BACKGROUND attribute on BODY Changed ACTION and SCRIPT attributes on FORM Changed IMAGEMAP attribute on FIG Added a HyTime fixed attribute on HTML (HyTime conformance - will not affect anything) Enabled HyTime link mechanism on the element A by introducing two new elements. -->

<!--====================================================================--> <!-- Default general entity --> <!ENTITY #DEFAULT SDATA "HTML : Undefined entity" >

<!--====================================================================--> <!-- Parameter entity declarations --> <!--====================================================================-->

<!--================== Flags for Marked Sections =======================-->

<!ENTITY % HTML.Recommended "INCLUDE" -- Certain features of the language are necessary for compatibility with widespread usage, but they may compromise the structural integrity of a document. This feature test entity enables a more prescriptive document type definition that eliminates the above features. -->

<![ %HTML.Recommended [ <!ENTITY % HTML.Deprecated "IGNORE" > ]]>

<!ENTITY % HTML.Deprecated "IGNORE" -- Certain features of the language are necessary for compatibility with earlier versions of the specification, but they tend to be used an implemented inconsistently, and their use is deprecated. This feature test entity enables a document type definition that eliminates these features. -->

<![ %HTML.Recommended [ <!-- See if we need more of these to cover more special characters --> <!ENTITY % ISOlat1 PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN" > %ISOlat1; <!ENTITY % ISOlat2 PUBLIC "ISO 8879:1986//ENTITIES Added Latin 2//EN" > %ISOlat2; <!ENTITY % ISOpub PUBLIC "ISO 8879:1986//ENTITIES Publishing//EN" > %ISOpub; <!ENTITY % ISOnum PUBLIC "ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" > %ISOnum; ]]>

<![ %HTML.Deprecated; [ <!-- The HTML list of Latin-1 entities includes the full range of characters in widely available Latin-1 character sets, and as such is a mixture of ISOlat1 and other ISO publishing symbols. --> <!ENTITY % HTMLlat1 PUBLIC "-//IETF//ENTITIES Added Latin 1 for HTML//EN" > %HTMLlat1;

<!--================ Entities for special symbols ======================--> <!-- These SDATA entities are already defined in the standard SDATA entity sets. --> <!ENTITY emsp SDATA "[emsp ]" -- em space --> <!ENTITY ensp SDATA "[ensp ]" -- en space (1/2-em) --> <!ENTITY mdash SDATA "[ndash ]" -- em dash --> <!ENTITY ndash SDATA "[ndash ]" -- en dash (1/2-em) --> <!ENTITY nbsp SDATA "[nbsp ]" -- non breaking space --> <!ENTITY shy SDATA "[shy ]" -- soft hyphen --> <!ENTITY copy SDATA "[copy ]" -- copyright sign --> <!ENTITY trade SDATA "[trade ]" -- trade mark sign --> <!ENTITY reg SDATA "[reg ]" -- registered sign --> ]]>

<!--================ Entities for standard icons =======================-->

<!-- a range of standard icons such as &folder; for use in speeding up display of directory listings etc. -->

<!ENTITY % HTMLicons PUBLIC "-//IETF//ENTITIES Icons for HTML//EN"> %HTMLicons;

<!--================ Entities for math symbols =========================-->

<!-- ISO subset chosen for use with the widely available Adobe math font-->

<!ENTITY % HTMLmath PUBLIC "-//IETF//ENTITIES Math and Greek for HTML//EN" > %HTMLmath;

<!-- The following entity is used with the VERSION attribute on the HTML element. --> <!-- It cannot be a parameter entity because it won't be recognized in the #FIXED attribute specification --> <!ENTITY HTML.Version "-//W3O//DTD W3 HTML 3.0//EN" >

<!--================== Imported Names ==================================--> <!ENTITY % Content-Type "CDATA" -- meaning a MIME content type, as per RFC1521 -->

<!ENTITY % HTTP-Method "GET | POST" -- as per HTTP specification -->

<!ENTITY % URI "CDATA" -- The term URI means a CDATA attribute whose value is a Uniform Resource Identifier, as defined by "Uniform Resource Identifiers" by Tim Berners-Lee aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html aka RFC 1630

Note that CDATA attributes are limited by the LITLEN quantity (1024 in the current version of html.decl), so that URIs in HTML have a bounded length. -->

<!ENTITY % Misc.Relations "stylesheet | node | path" >

<!-- CDATA replace with NMTOKEN --> <!ENTITY % FLOAT "NMTOKEN" -- floating point numbers -->

<!ENTITY % SHAPE "CDATA" -- Shape of hotzone in image.

All coordinates are assumed to be numbers in the range 0 to 1 and interpreted as fractional width/height and measured from the top left corner of the associated image.

The attribute value is a string taking one of the following forms:

"default"

Used to define a default link for the figure background.

"circle x, y, r"

(x, y) define the center and r the radius.

"rect x, y, w, h"

(x, y) defines upper left, and w and h the width and height.

"polygon x1, y1, x2, y2, ..."

Given n pairs of x, y coordinates, the polygon is closed by a line linking the n'th point to the first. Intersecting polygons use the non-zero winding number rule to determine if a point lies inside the polygon. -->

<!-- 3.0 Parameter Entities -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<![ %HTML.Deprecated [ <!ENTITY % list "UL | OL | DIR | MENU" > <!ENTITY % blockquote "BLOCKQUOTE | BQ" > <!ENTITY % preformatted "PRE | XMP | LISTING" > ]]>

<!ENTITY % list "UL | OL" >

<!ENTITY % blockquote "BQ" >

<!ENTITY % preformatted "PRE" >

<!-- The style attribute is used to subclass HTML elements for rendering purposes, when used with style sheets, e.g. DSSSL lite -->

<!ENTITY % attrs -- common attributes for elements -- 'id ID #IMPLIED -- as target for hrefs (link ends) -- lang CDATA "en.us" -- ISO language, country code -- class NAMES #IMPLIED -- for subclassing elements --' >

<!-- SGML standard forces different NAMES for all attribute values in name token groups in the same element, regardless of the attribute name! This is because of minimization constraints. As a result CDATA is used for CLEAR attribute to avoid clash with ALIGN attribute. -->

<!-- TODO: revisit the clear CDATA --> <!ENTITY % needs -- Attributes for controlling text flow. Used in headers and other elements to guarantee sufficient room -- 'clear CDATA "no" -- (left|right|all|no) move down past figures -- needs CDATA #IMPLIED -- minimum width needed in em"s or pixels -- -- e.g. "40 em" or "100 pixels"--' >

<!-- The following attribute may be included where ever a URL can be given:

md message digest e.g. md="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ" where the digest is base64 encoded and preceded by a prefix denoting the algorithm (in this case MD5). -->

<!ENTITY % url.link -- Attributes associated with URL based links -- "md CDATA #IMPLIED -- message digest for linked object --" >

<!--=================== Text Markup ====================================-->

<!ENTITY % font " U | S | TT | B | I | BIG | SMALL" >

<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE" >

<!ENTITY % misc "Q | LANG | AU | DFN | PERSON | ACRONYM | ABBREV | INS | DEL" >

<!ENTITY % special "TAB | MATH | A | IMG | BR | MARK" >

<!ENTITY % notmath "%font | %phrase | %special | %misc" >

<!ENTITY % text "#PCDATA | SUB | SUP | %notmath" >

<!ENTITY % pre.content "#PCDATA | A | IMG | HR | BR | Q | LANG | %font | %phrase" >

<!--================== Link Markup =====================================-->

<![ %HTML.Deprecated [ <!ENTITY % linkName "name CDATA #IMPLIED -- named link end --" > ]]>

<!ENTITY % linkName "" >

<!ENTITY % ToolBar "home | toc | index | glossary | copyright | up | previous | next | help | bookmark" -- LINK RELationship values which are used to create toolbar buttons or menu items for navigation, where toc stands for table of contents and bookmark provides for an open ended set of links, i.e. you can use multiple bookmarks for key entry points. Use the optional TITLE attribute to override default names. -->

<!ENTITY % linkType "NAME" -- A definitive list will be specified at a later date.

They are used

a) by stylesheets to control how collections of html nodes are rendered into printed documents

b) for document specific toolbars/menus when used with the LINK element in document head:

"home|toc|index|glossary|copyright| up|previous|next|help|bookmark"

where toc stands for table of contents and bookmark provides for an open ended set of links, i.e. you can use several bookmarks for key entry points. Use the optional TITLE attribute to override default names.

c) for hypertext paths or guided tours, with REL=NODE and REL=PATH.

d) to make a link to a style sheet, e.g. rel=style (used only with the LINK element). -->

<!ENTITY % linkExtraAttributes -- URN moved to %url.link -- "rel %linkType #IMPLIED -- forward relationship type -- rev %linkType #IMPLIED -- reversed relationship type to referent data -- title CDATA #IMPLIED -- advisory only -- methods NAMES #IMPLIED -- supported public methods of the object: TEXTSEARCH, GET, HEAD, ... --" >

<![ %HTML.Deprecated [ <!ENTITY % A.content "(%heading|%text)+" > ]]>

<!ENTITY % A.content "(%text)+" >

<!--=================== Text Flows =====================================-->

<!ENTITY % block "P | %list | DL | %preformatted | %blockquote | FORM | ISINDEX | TABLE | FIG | NOTE" >

<!-- ((%block)* | (%text)*) would be much nicer as it would avoid the need for a <P> tag when all you want is a few words of text. The problem is that it also prevents: "<LI> <P>some text" since it forbids PCDATA and hence the white space between the <LI> and the <P>. -->

<![ %HTML.Recommended [ <!ENTITY % flow "(%block)*" > ]]>

<!ENTITY % flow "(%text | %block)*" >

<!--=================== Document Body ==================================-->

<![ %HTML.Recommended [ <!ENTITY % body.content "(DIV|%heading|%block|HR|ADDRESS)*" -- <h1>Heading</h1> <p>Text ... is preferred to <h1>Heading</h1> Text ... --> ]]>

<!ENTITY % body.content "(DIV | %heading | %text | %block | HR | ADDRESS)*" >

<!ENTITY % address.content "((%text;)* | P*)" >

<!--================ Forms =============================================-->

<![ %HTML.Deprecated [ <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | RANGE | AUDIO | FILE | SCRIBBLE | HIDDEN | IMAGE)" > ]]>

<!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | RANGE | AUDIO | FILE | SCRIBBLE | HIDDEN)">

<!--====================================================================--> <!-- Element type declarations --> <!--====================================================================--> <!-- ELEMENTS MIN CONTENT -->

<!--================ Document Structure ================================-->

<!ELEMENT HTML O O (HEAD, BODY) >

<!-- suggested roles are: TOC, DOC, DOCPART, HITLIST, DIALOG -->

<!ATTLIST HTML version CDATA #FIXED "&HTML.Version;" -- report DTD version to application -- urn CDATA #IMPLIED -- universal resource name for this document -- role NAMES #IMPLIED -- role of this document, eg table of contents -- HyTime NAME #FIXED HyDoc >

<!--=================== Document Body ==================================-->

<!ELEMENT BODY O O %body.content > <![ %HTML.Recommended [ <!ATTLIST BODY %attrs; background ENTITY #IMPLIED -- texture tile for document background --> ]]>

<![ %HTML.Deprecated [ <!ATTLIST BODY %attrs; background %URI; #IMPLIED -- texture tile for document background --> ]]>

<!ELEMENT (%blockquote) - - (%body.content, CREDIT?) > <!ATTLIST (%blockquote) %attrs; %needs; -- for control of text flow -- nowrap (nowrap) #IMPLIED -- disable wordwrap -- >

<!ELEMENT ADDRESS - - %address.content > <!ATTLIST ADDRESS %attrs; %needs; -- for control of text flow -- >

<!-- DIV can be used with the CLASS attribute to represent different kinds of container, e.g. chapter, section, abstract, appendix. CLASS=Banner is reserved for a banner section which appears at the top of the window and doesn't scroll with window contents. This can be used for corporate logos, copyright statements and disclaimers, as well as customized navigation/search controls. -->

<!ELEMENT DIV - - %body.content > <!ATTLIST DIV %attrs; align (left | center | right) left -- alignment of following text -- nowrap (nowrap) #IMPLIED -- disable wordwrap -- >

<!ELEMENT (%font|%phrase|%misc) - - (%text)+ > <!ATTLIST (%font|%phrase|%misc) %attrs; >

<!-- Subscripts and superscripts. The ALIGN attribute is used for math -->

<!ELEMENT (SUB | SUP) - - (%text)+ > <!ATTLIST (SUB | SUP) %attrs; align (left | center | right) #IMPLIED >

<!-- Forced line break -->

<!ELEMENT BR - O EMPTY > <!ATTLIST BR %attrs; %needs; -- for control of text flow -- >

<!-- Named left, center and right tab stops (independent of '\t' char) -->

<!ELEMENT TAB - O EMPTY > <!ATTLIST TAB id ID #IMPLIED -- defines named tab stop -- indent NUMBER 0 -- em units before new tab stop -- to IDREF #IMPLIED -- jump to named tab stop -- align (left|center|right) left -- alignment of following text -- >

<!-- MARK is used as a generic marked range class, e.g. for change bars and annotation selections (what text the annotation applies to) Each marked range is indicated by a pair of MARK elements, one with an START attribute and the other with a matching END attribute--> <!ELEMENT MARK - O EMPTY > <!ATTLIST MARK -- requires either start or end attribute -- class NAMES #IMPLIED -- used to subclass range -- start ID #IMPLIED -- defines name of range -- end IDREF #IMPLIED -- paired with start element -- >

<!--================== Link Markup =====================================-->

<!-- With HTML 3.0 you can use ID attributes on most elements for named link ends. The use of the NAME attribute on anchors is deprecated.

Do we want to support arbitrary elements for link starts? This would involve adding HREF and related attributes to most elements. -->

<!-- That's where we have some changes to represent links between HTML documents using HyTime. It introduces two new elements that will increase the indirection levels. Here is an example of how the mechanism works: Let's say I want to make a link between a given document and the following target document: http://www.w3.org/foo.html and more precisely to an element in the target document whose id is target-id.

The source document will look like this: <?HyTime VERSION "ISO/IEC 10744:1992" HYQCNT=32> <?HyTime MODULE base> <?HyTime MODULE locs> <?HyTime MODULE links> <!-- These processing instructions are here to ensure HyTime conformance --> <!DOCTYPE HTML PUBLIC "-//W3O//DTD HTML 3.0//EN" [ <!ENTITY target-doc SYSTEM "http://www.w3.org/foo.html" CDATA SGML> <!-- The target document is declared as a data entity conforming to the SGML notation declared at the bottom of this DTD --> <!-- Other entity declarations will go here --> ]> <HTML>...... <A linkends="nmloc-target"><!-- one link end has been omitted and it corresponds to the element A itself --> Here is the anchor that will lead me to the target document. <NMLOC id=nmloc-target><NMLIST docorsub=target-doc>target-id</NMLOC> <!-- You can see that the target-id is in the content of the NMLIST element. --> ......</HTML>

The target document will look like this: <?HyTime VERSION "ISO/IEC 10744:1992" HYQCNT=32> <?HyTime MODULE base> <?HyTime MODULE locs> <?HyTime MODULE links> <!-- These processing instructions are here to ensure HyTime conformance --> <!DOCTYPE HTML PUBLIC "-//W3O//DTD HTML 3.0//EN" [ <!-- Other entity declarations will go here --> ]> <HTML>......<P id=target-id>Here is the paragraph which is the target of the link in the source document</P>......</HTML>

These levels of indirection are necessary or at least will be when you will have multiple targets for a given anchor. For instance you will be able to link the A element in the source document to several targets by having several NMLIST elements with different DOCORSUB attributes in the NMLOC element.

We could enforce the syntax of the SHAPE attribute by imposing a lexical pattern on its value. --> <![ %HTML.Recommended; [ <!ELEMENT A - - %A.content -(A) +(NMLOC) > <!ATTLIST A HyTime NAME #FIXED ilink anchrole CDATA #FIXED "source target" -- roles of the link anchors -- linkends IDREFS #REQUIRED -- link ends -- extra NAMES "A A" -- HyTime traversal rules -- intra NAMES "A A" -- HyTime traversal rules -- %attrs; %url.link; -- standard link attributes -- %linkName; -- name attribute is deprecated; use ID instead -- shape %SHAPE; #IMPLIED -- for shaped hotzones in FIGs -- %linkExtraAttributes; > <!ELEMENT NMLOC - - (NMLIST*) > <!ATTLIST NMLOC HyTime NAME #FIXED nameloc id ID #REQUIRED > <!ELEMENT NMLIST - O (#PCDATA) > <!ATTLIST NMLIST HyTime NAME #FIXED nmlist nametype (entity|element|unified) element obnames (obnames|nobnames) obnames docorsub ENTITY #IMPLIED > ]]>

<![ %HTML.Deprecated; [ <!ELEMENT A - - %A.content -(A) > <!ATTLIST A %attrs; href %URI; #IMPLIED %url.link; -- standard link attributes -- %linkName; -- name attribute is deprecated; use ID instead -- shape %SHAPE; #IMPLIED -- for shaped hotzones in FIGs -- %linkExtraAttributes; > ]]>

<!--=================== Images =========================================-->

<!-- Desired widths are used for negotiating image size with the module responsible for painting the image. -->

<!-- The SRC attribute should have an entity declared value. To insert an image, the file containing the image should be declared as an entity in the document type declaration subset.

For instance: <!DOCTYPE HTML PUBLIC "-//W3O//DTD HTML 3.0//EN" [ <!ENTITY img1 SYSTEM "http://www.w3.org/images/foo.gif" NDATA gif> ]> <HTML>.......<IMG SRC=img1>........</HTML>

Notice the "NDATA gif" at the end of the entity declaration. It means that the entity is a non-SGML data entity and that it is conforming with the GIF notation declared at the end of the present DTD file.

When a W3 client receives a document it knows at the end of the document type declaration what entities are going to be used in the document instance and therefore get prepared in advance for further processing.

All the attributes whose specification is a URL should have an entity value which would "point" to the entity declaration that would have the URL as its external identifier. This level of indirection may seem heavy but it is useful for document interchange (see the MIME/SGML works for SGML document interchange on the net: sgml-internet@ebt.com). Furthermore it fits exactly the spirit of SGML and will allow a simple and clean move towards HyTime, especially for hyperlinks. -->

<!ELEMENT IMG - O EMPTY -- Embedded image -- > <![ %HTML.Recommended [ <!ATTLIST IMG %attrs; src ENTITY #REQUIRED -- entity name of the image to embed -- %url.link; -- standard link attributes -- alt CDATA #IMPLIED -- for display in place of image -- align (top|middle|bottom) top -- relative to baseline -- width NUMBER #IMPLIED -- desired width in em's or pixels -- height NUMBER #IMPLIED -- desired height in em's or pixels -- units (em|pixels) pixels -- units for width and height -- ismap (ismap) #IMPLIED -- pass clicks to server -- > ]]> <![ %HTML.Deprecated [ <!ATTLIST IMG %attrs; src %URI #REQUIRED -- URI of image to embed -- %url.link; -- standard link attributes -- alt CDATA #IMPLIED -- for display in place of image -- align (top|middle|bottom) top -- relative to baseline -- width NUMBER #IMPLIED -- desired width in em's or pixels -- height NUMBER #IMPLIED -- desired height in em's or pixels -- units (em|pixels) pixels -- units for width and height -- ismap (ismap) #IMPLIED -- pass clicks to server -- > ]]>

<!--=================== Paragraphs======================================-->

<!ELEMENT P - O (%text)+ > <!ATTLIST P %attrs; align (left|center|right|justify) #IMPLIED %needs; -- for control of text flow -- nowrap (nowrap) #IMPLIED -- disable wordwrap -- >

<!--=================== Headings, Titles, Sections =====================-->

<!ELEMENT HR - O EMPTY -- customizable horizontal rule --> <![ %HTML.Recommended; [ <!ATTLIST HR %attrs; src ENTITY #IMPLIED -- entity name of custom rule graphic See comments on IMG element -- %url.link; -- standard link attributes -- %needs; -- for control of text flow -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST HR %attrs; src %URI; #IMPLIED -- URI of custom rule graphic -- %url.link; -- standard link attributes -- %needs; -- for control of text flow -- > ]]>

<!-- Headers can be numbered, although this is a matter for style sheets. The style sheet controls the numbering style:

a) whether the parent numbering is inherited, e.g. 5.i.c where 5 is the current sequence number for H1 headers, and 1 is the number for H2 headers and 3 for H3 headers.

b) what style is used for current sequence number e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman or a numbering scheme appropriate for the current language

The skip attribute is used to skip over sequence numbers for items which have been left out of the list, e.g. skip=3 advances the sequence number past 3 omitted items. The seqnum sets the sequence number to a specified value. Note that the style sheet may take advantage of the sequence number for higher level headers.

The dingbat or src attributes may be used to specify a bullet like image to be placed adjacent to the header. Defining this in the header element simplifies the document markup and avoids the need to use the clear or needs attribute in the following element to prevent it flowing around this image. -->

<!ELEMENT (%heading) - - (%text;)+ > <![ %HTML.Recommended; [ <!ATTLIST (%heading) %attrs; align (left|center|right|justify) #IMPLIED %needs; -- for control of text flow -- seqnum NUMBER #IMPLIED -- starting sequence number -- skip NUMBER 0 -- skip seq nums for missing items -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons or other graphic -- %url.link; -- standard link attributes -- nowrap (nowrap) #IMPLIED -- disable wordwrap -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST (%heading) %attrs; align (left|center|right|justify) #IMPLIED %needs; -- for control of text flow -- seqnum NUMBER #IMPLIED -- starting sequence number -- skip NUMBER 0 -- skip seq nums for missing items -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons -- src (%URI;) #IMPLIED -- bullet defined by graphic -- %url.link; -- standard link attributes -- nowrap (nowrap) #IMPLIED -- disable wordwrap -- > ]]>

<!ELEMENT TITLE - - (#PCDATA) -- The TITLE element is not considered part of the flow of text. It should be displayed, for example as the page header or window title. -- >

<!--=================== Text Flows =====================================-->

<!ELEMENT PRE - - (%pre.content)+ > <!ATTLIST PRE %attrs; width NUMBER #IMPLIED %needs; -- for control of text flow -- >

<![ %HTML.Deprecated [ <!ENTITY % literal "CDATA" -- special non-conforming parsing mode where the only markup signal is the end tag in full --> <!ELEMENT XMP - - %literal > <!ELEMENT LISTING - - %literal > <!ELEMENT PLAINTEXT - O %literal > ]]>

<!--=================== Lists ==========================================-->

<!ELEMENT DL - - (LH?, (DT|DD)+) -- this is perhaps too lax?--> <!ATTLIST DL %attrs; %needs; -- for control of text flow -- compact (compact) #IMPLIED -- more compact style -- >

<!ELEMENT DT - O (%text)+ > <!ELEMENT DD - O %flow; > <!ATTLIST (DT|DD) %attrs; %needs; -- for control of text flow -- >

<!ELEMENT (OL|UL) - - (LH?, LI+) --should we allow a list header?-->

<!-- style sheet controls numbering style a) whether the parent numbering is inherited, e.g. 5.1.c b) what style is used for current sequence number e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman or a numbering scheme for the current language -->

<!ATTLIST OL %attrs; %needs; -- for control of text flow -- continue (continue) #IMPLIED -- don't restart sequence number -- seqnum NUMBER #IMPLIED -- starting sequence number -- compact (compact) #IMPLIED -- reduced interitem spacing -- >

<!-- Unordered lists:

o single or multicolumn with horizontal or vertical wrapping

o plain or bulletted list items

o bullets can be customised via: - entities (dingbats in HTMLicons) - external graphic via URL - individual attributes on LI tags -->

<![ %HTML.Recommended; [ <!ATTLIST UL %attrs; %needs; -- for control of text flow -- wrap (vert|horiz|none) none -- multicolumn list style -- plain (plain) #IMPLIED -- suppress bullets -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons -- -- bullet defined by graphic -- %url.link; -- standard link attributes -- compact (compact) #IMPLIED -- reduced interitem spacing -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST UL %attrs; %needs; -- for control of text flow -- wrap (vert|horiz|none) none -- multicolumn list style -- plain (plain) #IMPLIED -- suppress bullets -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons -- src (%URI;) #IMPLIED -- bullet defined by graphic -- %url.link; -- standard link attributes -- compact (compact) #IMPLIED -- reduced interitem spacing -- > ]]>

<!ELEMENT LH - O (%text;)+ -- list header --> <!ATTLIST LH %attrs; >

<!-- For unordered lists, you can override the standard bullet with a custom graphic specified via a URI e.g. src="splash.gif" or a reference to one of the HTMLicons graphics e.g. dingbat=folder

The skip attribute is used with ordered lists to skip over sequence numbers for items which have been left out of the list, e.g. skip=3 advances the sequence number past 3 omitted items. -->

<!ELEMENT LI - O %flow; -- list item -->

<![ %HTML.Recommended; [ <!ATTLIST LI %attrs; %needs; -- for control of text flow -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons -- -- custom bullet graphic -- %url.link; -- standard link attributes -- skip NUMBER 0 -- skip seq nums for missing items --> ]]>

<![ %HTML.Deprecated; [ <!ATTLIST LI %attrs; %needs; -- for control of text flow -- dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons -- src (%URI;) #IMPLIED -- custom bullet graphic -- %url.link; -- standard link attributes -- skip NUMBER 0 -- skip seq nums for missing items --> ]]>

<!-- DIR and MENU are now subsumed by UL with type=plain. Use the wrap attribute to control wrapping style for multicolumn lists -->

<![ %HTML.Deprecated [ <!ELEMENT (DIR|MENU) - - (LI)+ -(%block) > <!ATTLIST (DIR|MENU) compact (compact) #IMPLIED > ]]>

<!--================ Forms =============================================-->

<!-- As HTML 2.0 plus a few extensions:

a) A RANGE control which varies between pair of values specified with the size attribute, e.g. SIZE="1, 10"

b) FILE widget for uploading one or more files to a server

c) SCRIBBLE on image widget that sends the "ink" to the server

d) AUDIO widget for playing and recording audio samples

e) SUBMIT/RESET buttons can now be customised with an image. This subsumes the IMAGE type which is now deprecated.

f) Graphical SELECTion menus are now supported, using the new SHAPE attribute on OPTION elements.

Further extensions are in the pipeline (e.g. table entry, multiple data formats for textarea fields and client-side scripts with custom widgets) but will have to wait until the backlog of implementation work diminishes. -->

<!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA) > <![ %HTML.Recommended; [ <!ATTLIST FORM action ENTITY #REQUIRED -- server-side form handler -- method (%HTTP-Method) GET -- see HTTP specification -- enctype %Content-Type; "application/x-www-form-urlencoded" script ENTITY #IMPLIED -- link to client-side script -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST FORM action %URI #REQUIRED -- server-side form handler -- method (%HTTP-Method) GET -- see HTTP specification -- enctype %Content-Type; "application/x-www-form-urlencoded" script %URI #IMPLIED -- link to client-side script -- > ]]>

<!ELEMENT INPUT - O EMPTY >

<![ %HTML.Recommended; [ <!ATTLIST INPUT %attrs; type %InputType TEXT name CDATA #IMPLIED -- required for all but submit and reset -- value CDATA #IMPLIED src ENTITY #IMPLIED -- for fields with background images -- %url.link; -- standard link attributes -- checked (checked) #IMPLIED -- for radio buttons and check boxes -- size CDATA #IMPLIED -- like NUMBERS, but delimited with comma, not space -- maxlength NUMBER #IMPLIED align (top|middle|bottom) top -- relative to baseline -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST INPUT %attrs; type %InputType TEXT name CDATA #IMPLIED -- required for all but submit and reset -- value CDATA #IMPLIED src %URI #IMPLIED -- for fields with background images -- %url.link; -- standard link attributes -- checked (checked) #IMPLIED -- for radio buttons and check boxes -- size CDATA #IMPLIED -- like NUMBERS, but delimited with comma, not space -- maxlength NUMBER #IMPLIED align (top|middle|bottom) top -- relative to baseline -- > ]]>

<!-- SRC attribute added for graphical selection menus -->

<!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT) > <![ %HTML.Recommended; [ <!ATTLIST SELECT %attrs; name CDATA #REQUIRED size NUMBER #IMPLIED multiple (multiple) #IMPLIED src ENTITY #IMPLIED -- for graphical selection menus -- %url.link; -- standard link attributes -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST SELECT %attrs; name CDATA #REQUIRED size NUMBER #IMPLIED multiple (multiple) #IMPLIED src %URI #IMPLIED -- for graphical selection menus -- %url.link; -- standard link attributes -- > ]]>

<!ELEMENT OPTION - O (#PCDATA) > <!ATTLIST OPTION %attrs; selected (selected) #IMPLIED value CDATA #IMPLIED -- default to element content -- shape %SHAPE; #IMPLIED -- for graphical selection menus -- >

<!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT) > <!ATTLIST TEXTAREA %attrs; name CDATA #REQUIRED rows NUMBER #REQUIRED cols NUMBER #REQUIRED >

<!--======================= Captions ===================================-->

<!ELEMENT CAPTION - - (%text;)+ -- table or figure caption --> <!ATTLIST CAPTION %attrs; align (top|bottom|left|right) #IMPLIED >

<!--======================= Tables =====================================-->

<!-- Tables and figures can be aligned in several ways:

bleedleft flush left with the left (window) border left flush left with the left text margin center centered (text flow is disabled for this mode) right flush right with the right text margin bleedright flush right with the right (window) border justify when applicable the table/figure should stretch to fill space between the text margins

Note: text will flow around the table or figure if the browser judges there is enough room and the alignment is not centered or justified. The table or figure may itself be part of the text flow around some earlier figure. You can in this case use the clear or needs attributes to move the new table or figure down the page beyond the obstructing earlier figure. Similarly, you can use the clear or needs attributes with other elements such as headers and lists to move them further down the page. -->

<!ENTITY % block.align "align (bleedleft|left|center|right|bleedright|justify) center" >

<!-- The HTML 3.0 table model has been chosen for its simplicity and the ease in writing filters from common DTP packages.

By default the table is automatically sized according to the cell contents and the current window size. Specifying the columns widths using the colspec attribute allows browsers to start displaying the table without having to wait for last row.

The colspec attribute is a list of column widths and alignment specifications. The columns are listed from left to right with a letter followed by a number, e.g. COLSPEC="L20C8L40". The letter is L for left, C for center and R for right alignment of cell contents. The number specifies the width in em's, pixels or as a fractional value of the table width, as according to the associated units attribute. This approach is more compact than used with most SGML table models and chosen to speed hand entry.

To assist with rendering to speech, row and column headers can be given short names using the AXIS attribute. The AXES attribute is used to explicitly specify the row and column names for use with each cell. Otherwise browsers can follow up columns and left along rows (right for some languages) to find the corresponding header cells.

Table content model: To avoid wide cells, Braille needs some kind of note element. The cell content is moved to a note, and a reference to this is placed in the cell in question. Couldn't we just use foot notes (FN) here?

To assist with formatting tables to paged media, we probably want to differentiate leading and trailing rows that are to be duplicated when splitting tables across page boundaries. The recommended way is to subclass rows with the CLASS attribute For example: <TR CLASS=Header>, <TR CLASS=Footer> are used for header and footer rows. Paged browsers insert footer rows at the bottom of the current page and header rows at the top of the new page, followed by the remaining body rows. -->

<!ELEMENT TABLE - - (CAPTION?, TR*) -- mixed headers and data --> <!ATTLIST TABLE %attrs; %needs; -- for control of text flow -- border (border) #IMPLIED -- draw borders -- colspec CDATA #IMPLIED -- column widths and alignment -- units (em|pixels|relative) em -- units for column widths -- %block.align; -- horizontal alignment -- nowrap (nowrap) #IMPLIED -- don't wrap words -- >

<!ENTITY % cell "TH | TD" > <!ENTITY % vertical.align "top|middle|bottom|baseline" >

<!-- Browsers should tolerate an omission of the first <TR> tag as it is implied by the context. Missing trailing <TR>s implied by rowspans should be ignored.

The alignment attributes act as defaults for rows overriding the colspec attribute and being in turn overridden by alignment attributes on cell elements. Use valign=baseline when you want to ensure that text in different cells on the same row is aligned on the same baseline regardless of fonts. It only applies when the cells contain a single line of text. -->

<!ELEMENT TR - O (%cell)* -- acts like row separator --> <!ATTLIST TR %attrs; align (left|center|right|justify) #IMPLIED valign (%vertical.align) top -- vertical alignment -- nowrap (nowrap) #IMPLIED -- don't wrap words -- >

<!-- Note that table cells can include nested tables. Missing cells are considered to be empty, while missing rows should be ignored, i.e. if a cell spans a row and there are no further TR elements then the implied row should be ignored. -->

<!ELEMENT (%cell) - O %body.content > <!ATTLIST (%cell) %attrs; colspan NUMBER 1 -- columns spanned -- rowspan NUMBER 1 -- rows spanned -- align (left|center|right|justify) #IMPLIED valign (%vertical.align) top -- vertical alignment -- nowrap (nowrap) #IMPLIED -- don't wrap words -- axis CDATA #IMPLIED -- axis name, defaults to element content -- axes CDATA #IMPLIED -- comma separated list of axis names -- >

<!--====================== Figures =====================================-->

<!-- The element contains text for use in non-graphical displays. Note that you can use the shape attribute in anchors to specify hotzones on images. This provides for local processing of pointer clicks and a unified method for dealing with graphical and non-graphical displays.

Text is flowed around figures when the figure is left or right aligned. You can request the browser to move down until there is enough room for the next element, see the CLEAR and NEED attributes (in %needs)

Figures offer a path towards embedding arbitrary information formats via some kind of OLE/OpenDoc mechanism. -->

<!ELEMENT FIG - - (OVERLAY*, CAPTION?, %body.content;, CREDIT?) -(FIG|IMG) > <![ %HTML.Recommended; [ <!ATTLIST FIG %attrs; %needs; -- for control of text flow -- src ENTITY #REQUIRED -- URI of document to embed -- %url.link; -- standard link attributes -- %block.align; -- horizontal alignment -- width NUMBER #IMPLIED -- desired width in units -- height NUMBER #IMPLIED -- desired height in units -- units (em|pixels) pixels -- specifies units as em's or pixels -- imagemap ENTITY #IMPLIED -- pass background clicks to server --> ]]>

<![ %HTML.Deprecated; [ <!ATTLIST FIG %attrs; %needs; -- for control of text flow -- src %URI; #REQUIRED -- URI of document to embed -- %url.link; -- standard link attributes -- %block.align; -- horizontal alignment -- width NUMBER #IMPLIED -- desired width in units -- height NUMBER #IMPLIED -- desired height in units -- units (em|pixels) pixels -- specifies units as em's or pixels -- imagemap (%URI) #IMPLIED -- pass background clicks to server --> ]]>

<!-- Figure overlays. When combined with local caching, overlays provide a cheap way of modifying a larger base image sent as part of a previous page. -->

<!ELEMENT OVERLAY - O EMPTY -- image overlay --> <![ %HTML.Recommended; [ <!ATTLIST OVERLAY src ENTITY #REQUIRED -- URI of image overlay -- %url.link; -- standard link attributes -- units (em|pixels) pixels -- specifies units as em's or pixels -- x NUMBER 0 -- offset from left in units -- y NUMBER 0 -- offset from top in units -- width NUMBER #IMPLIED -- desired width in units -- height NUMBER #IMPLIED -- desired height in units -- imagemap ENTITY #IMPLIED -- pass background clicks to server --> ]]>

<![ %HTML.Deprecated; [ <!ATTLIST OVERLAY src %URI; #REQUIRED -- URI of image overlay -- %url.link; -- standard link attributes -- units (em|pixels) pixels -- specifies units as em's or pixels -- x NUMBER 0 -- offset from left in units -- y NUMBER 0 -- offset from top in units -- width NUMBER #IMPLIED -- desired width in units -- height NUMBER #IMPLIED -- desired height in units -- imagemap (%URI) #IMPLIED -- pass background clicks to server --> ]]>

<!ELEMENT CREDIT - - (%text;)* -- source of image --> <!ATTLIST CREDIT %attrs; >

<!--======================== Notes =====================================-->

<!ENTITY % note.roles "Simple|Note|Caution|Warning|Footnote" > <!ELEMENT NOTE - - %body.content; -- admonishment --> <![ %HTML.Recommended; [ <!ATTLIST NOTE %attrs; src ENTITY #IMPLIED -- URI of custom graphic -- %url.link; -- standard link attributes -- role (%note.roles) Simple -- kind of note -- %needs; -- for control of text flow -- > ]]>

<![ %HTML.Deprecated; [ <!ATTLIST NOTE %attrs; src %URI; #IMPLIED -- URI of custom graphic -- %url.link; -- standard link attributes -- role (%note.roles) Simple -- kind of note -- %needs; -- for control of text flow -- > ]]>

<!--======================== Math =====================================-->

<!-- Use &thinsp; &emsp; etc for greater control of spacing. -->

<!-- Subscripts and Superscripts

<SUB> and <SUP> are used for subscripts and superscripts.

i j X <SUP>i</SUP>Y<SUP>j</SUP> is X Y

i.e. the space following the X disambiguates the binding. The align attribute can be used for horizontal alignment, e.g. to explicitly place an index above an element: i X<sup align=center>i</sup> produces X

Short references are defined for superscripts, subscripts and boxes to save typing when manually editing HTML math, e.g.

x^2^ is mapped to x<sup>2</sup> y_z_ is mapped to y<sub>z</sub> {a+b} is mapped to <box>a + b</box>

Note that these only apply within the MATH element and can't be used in normal text! -->

<!-- TODO: Rework the SGML declaration to allow ^, _ and { as shortref delimiters. -->

<!ENTITY REF1 STARTTAG "SUP" > <!ENTITY REF2 ENDTAG "SUP" > <!ENTITY REF3 STARTTAG "SUB" > <!ENTITY REF4 ENDTAG "SUB" > <!ENTITY REF5 STARTTAG "BOX" > <!ENTITY REF6 ENDTAG "BOX" >

<!USEMAP MAP1 MATH > <!USEMAP MAP2 SUP > <!USEMAP MAP3 SUB > <!USEMAP MAP4 BOX >

<!SHORTREF MAP1 "^" REF1 "_" REF3 "{" REF5 >

<!SHORTREF MAP2 "^" REF2 "_" REF3 "{" REF5 >

<!SHORTREF MAP3 "_" REF4 "^" REF1 "{" REF5 >

<!SHORTREF MAP4 "}" REF6 "^" REF1 "_" REF3 "{" REF5 >

<!-- The inclusion of %formula and exclusion of %text is used here to alter the content model for the SUB and SUP elements so as to limit them to formulae rather than general text elements. Special entities %math and %notmath are needed to avoid attempting to include and exclude the same elements (or #PCDATA). -->

<!ENTITY % math "BOX | ABOVE | BELOW | ROOT | ARRAY | SUB | SUP | TERM" > <!ENTITY % formula "#PCDATA | %math" >

<!ELEMENT MATH - - (#PCDATA)* -(%notmath) +(%math) > <!ATTLIST MATH id ID #IMPLIED model CDATA #IMPLIED >

<!-- The BOX element acts as brackets. Delimiters are optional and stretch to match the height of the box. The OVER element is used when you want a line between numerator and denominator. This line is suppressed with the alternative ATOP element. Note the use of { and } as shorthand for <BOX> and </BOX> respectively:

1 + X {1 + X<OVER>Y} is _______ Y

a + b {a + b<ATOP>c - d} is c - d

The delimiters are represented using the LEFT and RIGHT elements as in:

{[<LEFT>x + y<RIGHT>]} is [ x + y ] {(<LEFT>a<RIGHT>]} is (a] {||<LEFT>a<RIGHT>||} is || a ||

Use &lbrace; and &rbrace; for "{" and "}" respectively as these symbols are used as shorthand for BOX, e.g.

{&lbrace;<LEFT>a+b<RIGHT>&rbrace;} is {a+b}

You can stretch definite integrals to match the integrand, e.g.

{&int;<SUB>0</SUB><SUP>N</SUP><LEFT>{f(x)<over>1+x} dx}

N / f(x) | ----- dx / 1 + x 0

Note the complex content model for BOX is a work around for the absence of support for infix operators in SGML.

You can get oversize delimiters with the SIZE attribute, for example <BOX SIZE=large>(<LEFT>...<RIGHT>)</BOX>

Note that the names of common functions are recognized by the parser without the need to use "&" and ";" around them, e.g. int, sum, sin, cos, tan, ... -->

<!ELEMENT BOX - - ((%formula)*, (LEFT, (%formula)*)?, ((OVER|ATOP), (%formula)*)?, (RIGHT, (%formula)*)?) > <!ATTLIST BOX size (normal|medium|large|huge) normal -- oversize delims -->

<!ELEMENT (OVER|ATOP|LEFT|RIGHT) - O EMPTY > <!ATTLIST OVER symbol ENTITY #IMPLIED >

<!-- Horizontal line drawn ABOVE contents The symbol attribute allows authors to supply an entity name for an arrow symbol etc. -->

<!ELEMENT ABOVE - - (%formula)+ > <!ATTLIST ABOVE symbol ENTITY #IMPLIED >

<!-- Horizontal line drawn BELOW contents The symbol attribute allows authors to supply an entity name for an arrow symbol etc. -->

<!ELEMENT BELOW - - (%formula)+ > <!ATTLIST BELOW symbol ENTITY #IMPLIED >

<!-- TERM can be used with CLASS and style sheets to control the rendering of terms, e.g. tensors, vectors, physical constants -->

<!ELEMENT TERM - - (%formula)+ > <!ATTLIST TERM class NAMES #IMPLIED >

<!-- Roots e.g.

<ROOT>3<RADICAND>1+x</ROOT> is the cube root of 1 + x

If the radix is empty it defaults to 2 -->

<!ELEMENT ROOT - - (RADIX, RADICAND) > <!ELEMENT RADIX O O (%formula)* -- you can always omit this --> <!ELEMENT RADICAND - O (%formula)* -- what the root applies to -->

<!-- LaTeX like arrays. The coldef attribute specifies a single letter for each column, which also determines how the column should be aligned, e.g. coldef"=ccc"

"l" left "c" center "r" right

The DELIM attribute behaves the same as for BOX. When the LABELS attribute is present, the array is displayed with the first row and the first column as labels displaced from the other elements. In this case, the first element of the first row should normally be left blank.

Use &vdots; &hdots; and &ddots; for vertical, horizontal and diagonal ellipsis dots. Use &dotfill; to fill an array cell with horizontal dots. -->

<!ELEMENT ARRAY - - (AROW)+ > <!ATTLIST ARRAY coldef CDATA #REQUIRED ldelim CDATA #IMPLIED -- stretchy left delimiter -- rdelim CDATA #IMPLIED -- stretchy right delimiter -- labels (labels) #IMPLIED -- TeX's \bordermatrix style -- >

<!ELEMENT AROW - O (ITEM)* > <!ELEMENT ITEM - O (%formula)* > <!ATTLIST ITEM align CDATA #IMPLIED -- overide coldef alignment -- colspan NUMBER 1 -- merge columns as per TABLE -- rowspan NUMBER 1 -- merge rows as per TABLE -- >

<!--================ Document Head =====================================-->

<![ %HTML.Deprecated [ <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE? & META* & LINK* & NEXTID?" > ]]>

<!ENTITY % head.nextid "" >

<!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE? & META* & LINK*" >

<!ELEMENT HEAD O O (%head.content) >

<!ELEMENT LINK - O EMPTY > <!ATTLIST LINK href %URI #REQUIRED %linkExtraAttributes; >

<!ELEMENT ISINDEX - O EMPTY > <!ATTLIST ISINDEX href %URI #IMPLIED -- server handling queries -- prompt CDATA #IMPLIED -- prompt message -- >

<!-- The BASE element gives the base URL for dereferencing relative URLs, e.g.

<BASE href="http://foo.com/images"> ... <IMG SRC="bar.gif">

The image is deferenced to

http://foo.com/images/bar.gif -->

<!ELEMENT BASE - O EMPTY > <!ATTLIST BASE id ID #IMPLIED href %URI; #REQUIRED >

<![ %HTML.Deprecated [ <!ELEMENT NEXTID - O EMPTY > <!ATTLIST NEXTID N CDATA #REQUIRED > ]]>

<!ELEMENT META - O EMPTY -- Generic Metainformation --> <!ATTLIST META http-equiv NAME #IMPLIED -- HTTP response header name -- name NAME #IMPLIED -- metainformation name -- content CDATA #REQUIRED -- associated information -- >

<!-- A style sheet can be associated with the document using the LINK element, e.g. <LINK rel=style href="housestyle.dsssl">. Style overrides can be placed in the document head using the STYLE element, e.g.

<style notation=dsssl-lite> dsss-lite stuff </style>

Later on in the document you can use:

<h2 class=bigcaps>Header with bigger than normal capitals</h2> <p class=abstract>A paragraph with a unique style of its own ...

Statements in the given style notation

The tag names, class and id attributes are used in the style sheet notation to describe how to render matching elements. -->

<!ENTITY % style-notations "dsssl-lite" >

<!ELEMENT STYLE - O (#PCDATA) > <!ATTLIST STYLE notation NOTATION (%style-notations;) #REQUIRED >

<!--====================================================================--> <!-- Notation declarations --> <!-- People can add their own notation declarations in the declaration subset. --> <!NOTATION dsssl PUBLIC "+//ISO/IEC 10179:1995//NOTATION Document Style Semantics and Specification Language//EN" >

<!NOTATION gif PUBLIC "-//W3O//NOTATION Graphics Interchange Format//EN" >

<!NOTATION jpeg PUBLIC "-//W3O//NOTATION Joint Photographers Expert Group//EN" >

<!NOTATION tiff PUBLIC "-//W3O//NOTATION Tagged Image File Format//EN" >

<!NOTATION au PUBLIC "-//W3O//NOTATION Sun Audio//EN" >

<!NOTATION mpeg PUBLIC "-//W3O//NOTATION Motion Picture Expert Group//EN" >

<!-- SGML is declared as a notation of itself for HyTime purposes --> <!NOTATION SGML PUBLIC "+//ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN">

<!-- The END -->

--Meuf_4926_4086 Content-Type: text/plain

Christophe Espert - E-mail: espert@cln46fw.der.edf.fr ======================================================================== EDF - DER | High Text 1, Avenue du General de Gaulle | 5, rue d'Alsace 92141 Clamart CEDEX - FRANCE | 75010 Paris - FRANCE Tel: 33.1.47.65.43.21 ext. 6635 | Tel: 33.1.42.05.93.15 Fax: 33.1.47.65.50.07 | Fax: 33.1.42.05.92.48 ISO 8879:1986 - SGML | ISO/IEC 10744:1992 - HyTime | ISO/DIS 10179 DSSSL

--Meuf_4926_4086--

--Meuf_262_23010 Content-Type: text/plain

Christophe Espert - E-mail: espert@cln46fw.der.edf.fr ======================================================================== EDF - DER | High Text 1, Avenue du General de Gaulle | 5, rue d'Alsace 92141 Clamart CEDEX - FRANCE | 75010 Paris - FRANCE Tel: 33.1.47.65.43.21 ext. 6635 | Tel: 33.1.42.05.93.15 Fax: 33.1.47.65.50.07 | Fax: 33.1.42.05.92.48 ISO 8879:1986 - SGML | ISO/IEC 10744:1992 - HyTime | ISO/DIS 10179 DSSSL

--Meuf_262_23010--