SGML grew out of a decade of work addressing the need for capturing the logical elements of documents as opposed to the processing functions to be performed on those elements. SGML is essentially an extensible document description language, based on a notation for embedding tags into the body of a document' s text. It is defined by the international standard ISO 8879. The markup structure permitted for each class of documents is defined by an SGML Document Type Definition, usually abbreviated to DTD.
A lot of work is underway to produce DTDs for a range of purposes. These include ISO 12083 for books and ISO 10744 which defines the HyTime architectural forms for hypermedia/time-based documents. The Text Encoding Initiative (TEI) is an international research project for SGML-based document exchange in the humanities. Publishers are cooperating to produce common DTDs for computer manuals, e.g. the DocBook DTD. The CALS programme of the US Department of Defence defines SGML DTDs for documentation for defence procurement contracts.
So what sets HTML+ apart from these efforts? It is impractical to design a DTD to meet the needs of all possible users. Instead, the markup has to be tailored to the needs of a specific community. HTML+ is aimed at fulfilling the dream of a web of information freely accessible over the Internet with links between documents spanning continents. The need to support a very wide range of display types and to keep browser software as simple as possible limits the complexity that can be handled. Similarly the disparate needs of authors has led to the inclusion of limited rendering hints. The features supported arise from several years experience with the World Web and the existing HTML format.
<title>A simple HTML+ Document</title> <h1 id="a1">This is a level one header</h1> <p>This is some normal text which will wrap at the window margin.The text of the document includes tags which are enclosed in <angle brackets>. Many tags require matching end tags for which the tag name is preceded by the "/" character. The tags are used to markup the document's logical elements, for example the title, headers and paragraphs. Tags may also be accompanied by attributes, e.g. the id attribute in the header tag which can be used to name destinations for hypertext links.
You can emphasise <em>parts of the text</em> if you wish. <p>This is a new paragraph. Note that unlike title and header tags
the matching end tag is not needed.
Unlike most document formats, HTML+ leaves out the processing instructions that determine the precise appearance, for instance the font names and point size, the margins, tab settings and how much white space to leave before and after different elements. The rendering software makes these choices for itself (perhaps guided by user preferences). This ensures that browsers can avoid problems with different page sizes or missing fonts. Logical markup also preserves essential distinctions that are often lost by lower level procedural formats, making it easier to carry out operations like indexing and conversion into other document formats.
Note that the tag and attribute names are case insensitive. HTML+ parsers are expected to ignore unrecognised tags and attributes, and to process their contents as if the start/end tags weren't present. SGML minimisation is not supported - this avoids any possibility of confusion with unrecognised tags.
You can provide navigation links for readers which appear as buttons on a toolbar or as entries in a navigation menu. For works using a lot of technical terms or perhaps in an unfamiliar language, you can provide glossaries offering further explanation. Readers can invoke this by double clicking on words, or by drag selection and clicking the Glossary menu item. You can also provide a search field that is always present (and can't be scrolled away), in which readers can enter one or more keywords to search an index. These facilities can be specified explicitly using the LINK element. Implicit links allow you to define the table of contents (toc) as an HTML+ document without needing to place links to the toc in every subdocument. The link back to the toc is implied when you follow hypertext link from the toc to its subdocuments.
<h1>Introduction to HTML+</h1>Header names should be appropriate to the following section of the document, while the title should cover the document as a whole. There are no restrictions on the sequence of headers, e.g. you could use a level three header following a level one header.Header and section elements can take an identifier, unique to the current document, for use as named destinations of hypertext links. This is specified with the ID attribute, e.g.
<h1 id="intro">Introduction to HTML+</h1>This allows authors to create hypertext links to particular sections of documents. It is a good idea to use something obvious when creating an identifier, to help jog your memory at a later date. WYSIWYG editors should automatically generate identifiers. In this case, they should provide a point and click mechanism for defining links so that authors don't need to deal explicitly with identifier names. Automatic generation of IDs for headers, paragraphs and other major elements is important as it makes it easier for other people to create links to your document, by ensuring that there are plenty of ID attributes present as potential destinations.
Should we support headers for which the level is implicitly defined by nestable section elements?(2) We could also support autonumbering of headers. Unfortunately, on further investigation these ideas proved trickier than thought at first, and so have been dropped from this draft.
<P ID="p1">The P element acts as container for the text between the startThis would be rendered as:
tag <P>(3) and end tag </P>. You don't need to give the end
tag as it is implied by the context, e.g. the following <P> tag.
<P ID="p2">If you wish, you may think of the <P> tag as a paragraph
separator. This works since HTML+ formally doesn't require you to wrap
text up as paragraphs.
The P element acts as a container for the text between the start tag <P> and the end tag </P>. You don't need to give the end tag as it is implied by the context, e.g. the following <P> tag.
If you wish, you may think of the <P> tag as a paragraph separator. This works since HTML+ formally doesn't require you to wrap text up as paragraphs.
The following samples of HTML+ all produce exactly the same results when displayed:
<H1>Different ways of using the P element</H1>They all produce:
<P>The first piece of text</P><P>The second piece</P> <H1>Different ways of using the P element</H1>
<P>The first piece of text<P>The second piece <H1>Different ways of using the P element</H1>
The first piece of text<P>The second piece
In some situations you will want to preserve the original line breaks and spacing, for this you should use the LIT or PRE elements, these are described in a later section. You can force line breaks in normal paragraph text with the <BR> element, but the browser may wrap lines arbitrarily at window margins prior to reaching the <BR> element.
The ALIGN attribute can be used to center a paragraph, e.g. <P ALIGN=center>. Other possibilities are ALIGN=left (the default), ALIGN=right, ALIGN=justify and ALIGN=indent. This attribute is a hint and may be ignored by some browsers. Note that when using explicit line breaks (see Section 5.12) you may wish to switch off word wrap with WRAP=OFF.
Browsers, when parsing paragraphs, can choose to simply treat the <P> tag as denoting a paragraph break. If the paragraph style includes a blank line between paragraphs, then additional care is needed after headers and other major elements(4) to avoid inserting an unwanted blank line, e.g. when a <P> tag directly follows a header. This ability to perceive <P> as a paragraph break provides for continuity with HTML, and allows authors to graduate to treating it as a container in their own time.
In some cases it is useful to specify the language used in a given element, with the LANG attribute. The ISO defines abbreviations for most languages, e.g. FR for french as in:
<Q LANG="FR">Je m'aveugle.</Q>. This attribute permits language dependent layout and hyphenation decisions, e.g. Hebrew uses right to left word order.
To allow SGML parsers to recognise entity names, authors should declare them before use, for example:
<!ENTITY % ISOcyr1 PUBLIC "ISO 8879-1986//ENTITIES Russian Cyrillic/EN">This introduces ISOcyr1 as a local name for the ISO public identifier for the cyrillic alphabet and then includes the associated set of entity definitions as part of the current document. This declaration is unnecessary for entities defined within the HTML+ DTD.
%ISOcyr1;
Clicking on a link will normally cause the browser to retrieve the linked document and display it in place of the current one. This example is represented by the following piece of HTML+
Links are defined with the <a href="#z1">A tag</a>. HTML+ supports aThe first link is to an anchor named "z1" in the current document (using an ID attribute on some element). The second is to a file named "links.html" in the same directory as the current document. The link caption is the text between the start and end tags. The HREF attribute defines the link destination using the URL or URN notations. This may be abbreviated in certain circumstances using relative URLs. The link should be rendered in a clearly distinguishable way, e.g. as a raised button, or with underlined text in a particular color or emphasis. For displays without pointing devices, it is suggested that the link is indicated with a reference number in square brackets after the caption, which the reader enters to follow the link. Note that it is illegal for anchors to include headers, paragraphs, lists etc. The anchor text is restricted to normal text with emphasis and inline images.
number of <a href="links.html">different link types.
The A element has several optional attributes:
These tags may be nested to combine effects, e.g. bold-italic-fixed-pitch text, and should be considered as hints rather than as binding obligations on the browser, e.g.
Some <B><I><TT>bold italic fixed pitch text</TT></I></B>.which is rendered as: Some
.
<EM>normal emphasis</EM> typically italic
<STRONG>strong emphasis</STRONG> typically bold
<cmd>cmp</cmd> [<arg>-l</arg>] [<arg>-s</arg>] <var>file1</var> <var>file2</var>
<RENDER TAG="PROPNAME" STYLE="I">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.
This example is produced by the following piece of HTML+
<p><img align=top src="http://spoof.cern.ch/people/tbl.gif"> BeforeThe IMG element specifies an image via a URL. The ALIGN=TOP attribute ensures that the top of the image is level with the top of the current text line. You can also use ALIGN=MIDDLE to align the center of the image with that of the current text line, and 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. If the ALIGN attribute is missing then ALIGN=TOP is assumed.
coming to CERN, Tim worked on, among other things, document production
and text processing. He developed his first hypertext system,
"Enquire",in 1980 for his own use (although unaware of the existence
of the term HyperText). With a background in text processing,
real-time software and communications, Tim decided that high energy
physics needed a networked hypertext system and CERN was an ideal
site for the development of wide-area hypertext ideas. Tim started
the WorldWideWeb project at CERN in 1989. He wrote the application on
the NeXT along with most of the communications software.
Not all display types can show images. The IMAGE element behaves in the same way as IMG(7) but allows you to include descriptive text, which can be shown on text-only displays:
<image align=top src="http://spoof.cern.ch/people/tbl.gif">A photo ofOn text-only displays, the text within the IMAGE element can be shown in place of the image:
Tim Berners-Lee</image> Before coming to CERN, Tim worked on, among
other things, document production and text processing. etc.
[A photo of Tim Berners-Lee] Before coming to CERN, Tim worked on,The SEETHRU attribute can be used to designate a chromakey so that the image background matches the document background. This is an experimental feature and the format of the attribute's value has yet to be defined - suggestions are welcomed.
among other things, document production and text processing. etc.
Images can be made active in one of three ways
<a href="bigpic.giff"><image src="smallpic.gif">Our house</image></a>In this example, readers can click on a small picture embedded in the document to see a larger version, which would take significantly longer to retrieve. When using images as hypertext links, don't forget to include a textual description. This is needed for the link caption for people using text-only displays.
In some cases, servers can handle mouse clicks or drags on the image. This capability is signalled in the header information returned along with the image data. You can also use the ISMAP attribute. This mechanism and the ability to add shaped buttons are defined in detail in the description of figures.
The delay in connecting to the server for each image in turn can be reduced by asking HTTP servers to include images with the HTML+ document as a MIME multipart message (include multipart/mixed with the Accept: header in the request message).
<changed id=z34>text including some changes<changed idref=z34>The same element(8) is used to designate the start and end of changes, using matched ID and IDREF attribute values. This mechanism avoids syntactic problems that would arise from using a conventional start and end tag pair, as changes to a document can span different levels of the document's formal structure. Additional attributes may be used with the CHANGED element to hold related details, e.g. BY, WHEN, WHY, WHAT.
In legal documents and amendments to proposed legislation, there is often the need to show parts of the text as being removed or added to the document. This is commonly shown using strike-through and underlining respectively. The REMOVED and ADDED tags are provided for this purpose:
<P>This bill would require the Legislative Counsel, with the advice ofWhich might be displayed as:
the Joint Rules Committee of the Senate and Assembly, to make
available to the public by means of access by way of <removed>computer
modem</removed> <added>the largest nonproprietary, nonprofit
cooperative public computer network,</added> specified information
concerning bills, the proceedings of the houses and committees of the
Legislature, statutory enactments, and the California Constitution.
Color enhancements may be used to further distinguish the amendments, e.g. red lines for strike-through. This mechanism is not intended for representing revision histories, which are better served by traditional change control mechanisms.
<online>click <a href="info.html">here</a>for more information.</online>In many cases, you can find a way of phrasing the reference so that it makes sense both ways. Browsers can help by referencing hypertext links as footnotes when printed out. See the earlier description of the PRINT attribute for the A tag.
<printed>Further information can be found in [Higgins 84b].</printed>
<P>An alternative is the <BR> element which acts as a forced line break.
<L>22 The Avenue,
<L>Harrow,
<L>London, NW1 5ER
<P>22 The Avenue,<BR>The <L> element is useful when you want to name each line, e.g. <L ID="L23">. You may also want to disable word wrap for the current paragraph, as in <P WRAP=OFF>.
Harrow,<BR>London, NW1 5ER
<P>The following is a quotation from the forward by Yuri Rubinsky to "Thewhich might be rendered as:
SGML Handbook" by Charles F. Goldfarb, published by the Clarendon Press,
Oxford, 1990. <QUOTE>The next five years will see a revolution in computing. Users
will no longer have to work at every computer task as if they had no
need or ability to share data with all their other computer tasks,
they will not need to act as if the computer is simply a replacement
for paper, nor will they have to appease computers or software
programs that seem to be at war with one another.</QUOTE>
The following is a quotation from the forward by Yuri Rubinsky to "The SGML Handbook" by Charles F. Goldfarb, published by the Clarendon Press, Oxford, 1990.
The next five years will see a revolution in computing. Users will no longer have to work at every computer task as if they had no need or ability to share data with all their other computer tasks, they will not need to act as if the computer is simply a replacement for paper, nor will they have to appease computers or software programs that seem to be at war with one another.
<H1>HTML+ (Hypertext markup format)</H1> <ABSTRACT>A proposed standard for a light weight delivery format for
browsing and querying information in a web of globally distributed
hypertext accessible over the Internet
</ABSTRACT> <BYLINE>Editor: Dave Raggett dsr@hplb.hpl.hp.com</BYLINE>
<note role="NOTE" src="info.gif">This is typically rendered as:
The "partial-window-name" parameter must exactly match the beginning
characters of the window name (as it appears on the title bar),
including proper case (capital or lower letters) and any punctuation.
</note>
The text of the ROLE attribute (if given) is inserted at the start of the note in a bold font and followed by a colon. Typical roles are TIP, NOTE, WARNING and ERROR. The SRC attribute may be used to name a URL or URN as an icon which is displayed in the left margin at the start of the note. An upright hand icon is often used for tips; a warning road sign for warnings and a stop sign for errors(11). Horizontal rules are drawn automatically to help readers distinguish the note from the surrounding text. You can place horizontal rules in other parts of your document using the <HR> element which can appear anywhere a <P> element is allowed.
<OL>which is usually rendered as:
<LI>Wake up
<LI>Get dressed
<LI>Have breakfast
<LI>Drive to work
</OL>
<UL>which is usually rendered as:
<LI>Wake up
<LI>Get dressed
<LI>Have breakfast
<LI>Drive to work
</UL>
<UL PLAIN>without the WRAP attribute, this is rendered as:
<LI>icons1/
<LI>icons2/
<LI>icons3/
<LI>src/
<LI>xpm-3-paper.ps
<LI>xpm-3.2-to-3.2a.patch
</UL>
For convenience, the <MENU> and <DIR> elements can be used in place of <UL PLAIN> and
<UL PLAIN WRAP=VERT> respectively.
<DL>This could be rendered as:
<DT>King Henry
<DD>I myself heard the King say he would not be ransomed.
<DT>Williams
<DD>Ay, he said so, to make us fight cheerfully: but when our
throats are cut he may be ransomed, and we none the wiser.
<DT>King Henry
<DD>If I live to see it, I will never trust his word after.
<DT>Williams
<DD>You pay him then! That's a perilous shot out of an elder-gun,
that a poor and a private displeasure can do against a monarch!
You may as well go about to turn the sun to ice, with fanning in
his face with a peacock's feather. You'll never trust his word
after! Come `tis a foolish saying.
</DL>
King Henry: I myself heard the King say he would not be ransomed.
Williams: Ay, he said so, to make us fight cheerfully: but when our throats are cut he may be ransomed, and we none the wiser.
King Henry: If I live to see it, I will never trust his word after.
Williams: You pay him then! That's a perilous shot out of an elder-gun, that a poor and private displeasure can do against a monarch! You may as well go about to turn the sun to ice, with fanning his face with a peacock's feather. You'll never trust his word after! Come `tis a foolish saying.
or as:
<FIG ALIGN=FLOAT SRC="cat.gif">which is rendered as:
<CAPTION>"Not curried fish again!"<CAPTION>
A cartoon of a scrawny cat with its tongue out saying ACK!
</FIG> <P>The text in the following paragraphs will flow around the figure
if there is enough room. The browser is free to position the caption at
the top, bottom or sides of the figure.
Note that browsers can only support a limited range of image types. Currently these are GIF and XBM (X bitmap format). This list will evolve over time.
For some images, HTTP servers will be able to handle mouse/pen clicks or drags on the image. This is signalled in the header information returned along with the image data. Alternatively, the ISMAP attribute can be used to signal this capability. The mouse click is sent to the server indicated by the URL in the SRC attribute, using the same URL plus the suffix "?x=X&y=Y"(13) where X and Y are the coordinates of the click event. Mouse drags can be used to designate a rectangular region of the image. In this case the suffix takes the form: "?x=X&y=Y&w=W&h=H" where (X, Y) is the upper left of the rectangle, and (W, H) define its width and height. The ISMAP mechanism is useful when the active regions in the image change their boundaries with time, e.g.
<fig ismap src="weather.gif">
<caption>Click on your area for a local forecast</caption>
Todays weather map for the US.
</fig>
<FIG SRC="test.gif">Which could be rendered as:
<CAPTION>Click on the triangle or the rectangle</CAPTION>
A line drawing with a
<A SHAPE="0.35,0.1&0.1,0.8&0.35,0.8" HREF="button1.html">
triangle</A> and a
<A SHAPE="0.5,0.25&0.5,0.5&0.8,0.5&0.8,0.25" HREF="button2.html">
rectangle</A>
</FIG>
The example uses scaled coordinates, and shows how you give the vertices of the polygon defining the shape of the button. Like the ISMAP mechanism, you can use pixel-based coordinates by using integer numbers throughout. Note that clicks on shaped buttons take precedence over the ISMAP mechanism for sending events to the server. An efficient algorithm for testing if a mouse/pen click lies inside a polygon is given as a C routine in Appendix III.
The use of the MIME multipart message format would also help to speed up the display of figures by sending image data at the same time as the HTML+ document. Another possibility would be to allow image data to be embedded in the document using an EMBED element in place of the SRC attribute. Binary data could be represented using the MIME character encoding or the more compact ASCII base 85 encoding, as used in Adobe's PDF. The drawback with this approach is the inability to use format negotiation. As a result, the EMBED element has been dropped from the current draft.
Table 1: A simple table ------------------- Year Month Day ------------------- 1972 June 23rd 1982 October 7th -------------------This is defined by the markup:
<table border>The BORDER attribute acts as a hint to the browser to draw lines enclosing each cell. The TH element precedes header cell text and the TD element precedes data cell text. The TR element is used to separate table rows. By default text is centered in each cell. Header text should be shown emphasised, e.g. the browser could use a bold sans serif font for headers and a serif font for the data cells. The next example shows how cells can be merged with their neighbors:
<caption>A simple table</caption>
<th>Year <th>Month <th>Day <tr>
<td>1972 <td>June <td>23rd <tr>
<td>1982 <td>October <td>7th
</table>
Table 2: A more complex table
----------------------------------
height weight
----------------------------------
males height 0.003 yyy
females 1.9 0.002 xxx
----------------------------------
This table is defined by the markup:
<table border>The first cell (a header cell) is merged with the cell below it: <th rowspan=2>. Note that this merged cell is empty - the definition of the next column for the first row starts immediately. Looking again at the first row, the second column is merged with the third: <th colspan=2>. The definition for the third column is skipped as it was covered by the merged cell. The fourth column/first row is also merged, this time with the next row: <th rowspan=2>. The <BR> element has been used here to force a line break between other and category. The <TR> element signifies the end of the first row and the beginning of the second. Note that empty cells at the end of a row can be omitted as the <TR> element unambiguously marks the end of the row.
<caption>A more complex table</caption>
<th rowspan=2><th colspan=2>average<th rowspan=2>other<br>category<tr>
<th>height <th>weight <tr>
<th align=left>males <td>1.9 <td>0.003 <td>yyy <tr>
<th align=left>females <td>1.7 <td>0.002 <td>xxx
</table>
The second row only contains definitions for the second and third columns since the others were merged with cells on the preceding row. The general rule is to avoid defining any cell twice. The last two rows start with headers and the align=left attribute ensures that the browser will align these headers to the left of their cells. The ALIGN attribute can be one of LEFT, CENTER or RIGHT, with CENTER as the default. It can be used with both TH and TD.
The number of columns is given by the row with the largest number of <TH> and <TD> elements, remembering to add in merged cells. The widths of columns are evaluated by finding the minimum and maximum widths needed for each cell, and hence the minimum and maximum width for the column as a whole. All this can be done during a single pass through the <TABLE> element. Caching these min/max values for each column then permits the browser to instantly adjust the table when the window is resized.
<FORM ACTION="mailto:www_admin@info.cern.ch">This fictitious example is a questionnaire that will be emailed to www_admin@info.cern.ch. The FORM element is used to delimit the form. There can be several forms in a single document, but the FORM element can't be nested. The ACTION attribute specifies a URL that designates an HTTP server or an email address. If missing, the URL for the document itself will be assumed. The effect of the action can be modified by including a method prefix, e.g. ACTION="POST http://....". This prefix is used to select the HTTP method when sending the form's contents to an HTTP server. Would it be cleaner to use a separate attribute, e.g. METHOD?
<MH HIDDEN>Subject: WWW Questionaire</MH> Please help up to improve the World Wide Web by filling in the
following questionaire:
<P>Your organization? <INPUT NAME="org" SIZE="48">
<P>Commercial? <INPUT NAME="commerce" TYPE=checkbox>
How many users? <INPUT NAME="users" TYPE=int>
<P>Which browsers do you use?
<UL>
<LI>X Mosaic <INPUT NAME="browsers" TYPE=checkbox VALUE="xmosaic">
<LI>Cello <INPUT NAME="browsers" TYPE=checkbox VALUE="cello">
<LI>Others <TEXTAREA NAME="others" COLS=48 ROWS=4></TEXTAREA>
</UL>
A contact point for your site: <INPUT NAME="contact" SIZE="42">
<P>Many thanks on behalf of the WWW central support team. <P ALIGN=CENTER><INPUT TYPE=submit> <INPUT TYPE=reset>
</FORM>
Servers can disable forms by sending an appropriate header or by an attribute on the optional HTMLPLUS element at the very start of the document, e.g. <htmlplus forms=off>.
The MH element can be used to specify RFC 822 mail headers that are included when sending the form's content either as an email message or as a HTTP request, e.g.
<MH HIDDEN>The MH element can contain several headers separated by line breaks. The text within the MH element is transcribed directly(15), preserving spaces, tabs and line breaks, with each line terminated by a CR LF pair as per the RFC 822 guidelines. The preceding example of a form might be rendered as:
Subject: WWW Questionnaire
Priority: Low
</MH>
Here, the <P> and <UL> elements have been used to lay out the text (and input fields. The browser has changed the background color within the FORM element to distinguish the form from other parts of the document. The browser is responsible for handling the input focus, i.e. which field will currently get keyboard input.
For many platforms there will be existing conventions for forms, e.g. tab and shift-tab keys to move the keyboard focus forwards and backwards between fields, while an Enter key submits the form. In the example, the Submit and Reset buttons are specified explicitly with special purpose fields. The Submit button is used to email the form or send its contents to the server as specified by the ACTION attribute, while the Reset button resets the fields to their initial values. When the form consists of a single text field, it may be appropriate to leave such buttons out and rely on the Enter key.
The INPUT element has the following attributes:
<TEXTAREA NAME="address" ROWS=64 COLS=6>The text up to the end tag is used to initialize the field's value. This end tag is always required even if the field is initially blank. The ROWS and COLS attributes determine the visible dimension of the field in characters. Browsers are recommended to allow text to grow beyond these limits by scrolling as needed. In the initial design for forms, multi-line text fields were supported by the INPUT element with TYPE=TEXT. Unfortunately, this causes problems for fields with long text values as SGML limits the length of attribute literals. The HTML+ DTD allows for up to 1024 characters (the SGML default is only 240 characters!).
Hewlett Packard Laboratories
1501 Page Mill Road
Palo Alto, California 94304-1126
</TEXTAREA>
The RADIO and CHECKBOX fields can be used to specify multiple choice forms in which every alternative is visible as part of the form. An alternative is to use the SELECT element which is generally rendered in a more compact fashion as a pull down combo list. Every alternative is represented by the OPTION element, e.g.
<SELECT NAME="flavor">The SEVERAL attribute is needed when users are allowed to make several selections, e.g. <SELECT SEVERAL>. The ERROR attribute can be used to indicate that the initial selection is in error in some way, e.g. because it is inconsistent with the values of other fields.
<OPTION>Vanilla
<OPTION>Strawberry
<OPTION>Rum and Raisin
<OPTION>Peach and Orange
</SELECT>
The OPTION element can take the following attributes:
URL?org=Acme%20Foods&commerce&users=42Note that "=", "&" and space characters in attribute names and values should be escaped by "%" followed by the hexadecimal code for the character in question, e.g. "%20" should be used in place of the space character. IMAGE fields are only included in the list when clicked, and give rise to something matching:
URL?name.x=23&name.y=29They can be used as iconic controls for other images or data. The object-name.property-name notation paves the way for more complex input controls in the future. In the near future, format negotiation will not change the number of pixels in an image, so using pixel based coordinates is okay. In the longer term, scaled coordinates in the range 0 to 1.0 may prove safer.
Multipart MIME messages are necessary if the form contains scribble or audio fields. Form data can be sent in the same name=value representation as described above. For scribble and audio fields, the value identifies a subsequent part in the multipart message, as specified by the Content-ID: header for each part. Another approach is to send just the SGML elements used to define form fields, i.e. the INPUT, TEXTAREA and SELECT elements. The Content-ID: headers are used to define dummy URLs. It may be possible for servers to use this approach to update forms being viewed by a browser without having to send the entire document.
The LIT element is rendered in a proportional font, e.g.
<LIT>This is rendered literally as:
From Oberon in fairyland,
The king of ghosts and shadows there,
Mad Robin I, at his command,
Am sent to view the night sports here.
What revel rout
Is kept about,
In every corner where I go,
I will o'ersee
And merry be
And make good sport, with ho, ho, ho!
</LIT>
From Oberon in fairyland,The ability to set tab stops in LITeral text makes it much easier to write filters that convert documents written on word processors into HTML+. Tab stops can be set by the TAB element and apply for the scope of the LIT element, e.g.
The king of ghosts and shadows there,
Mad Robin I, at his command,
Am sent to view the night sports here.
What revel rout
Is kept about,
In every corner where I go,
I will o'ersee
And merry be
And make good sport, with a ho, ho, ho!
<tab at=40 align=right>The AT attribute specifies the position of the tab stop, as measured from the left margin in terms of the width of a capital M.(17) The ALIGN attribute can be LEFT, CENTER or RIGHT, defaulting to LEFT. These have the conventional meaning as used on most word processors. If greater control over fonts and layout is needed then authors should make a hypertext link to a document written in a page description format like Adobe's PDF.
For computer output or plain text files, you should use the PRE element which is rendered in a fixed pitch font. The following is part of the man page for the Unix ls command:
<PRE>This is rendered as
The next 9 characters are interpreted as three sets of three
bits each which identify access permissions for owner,
group, and others as follows:
+------------------ 0400 read by owner (<B>r</B> or <B>-</B>)
| +---------------- 0200 write by owner (<B>w</B> or <B>-</B>)
| | +-------------- 0100 execute (search directory) by owner
| | | (<B>x</B>, <B>s</B>, <B>S</N>, or <B>-</B>)
| | | +------------ 0040 read by group (<B>r</B> or <B>-</B>)
| | | | +---------- 0020 write by group (<B>w</B> or <B>-</B>)
| | | | | +-------- 0010 execute/search by group
| | | | | | (<B>x</B>, <B>s</B>, <B>S</B>, or <B>-</B>)
| | | | | | +------ 0004 read by others (<B>r</B> or <B>-</B>)
| | | | | | | +---- 0002 write by others (<B>w</B> or <B>-</B>)
| | | | | | | | +-- 0001 execute/search by others
| | | | | | | | | (<B>x</B>, <B>t</B>, <B>T</B>, or <B>-</B>)
| | | | | | | | |
r w x r w x r w x
</PRE>
The next 9 characters are interpreted as three sets of threeThe SEE ALSO section of the Unix manual pages can be processed to make references to other manual pages into hypertext buttons using the <A> element (see Section 5.2). The example shows how character emphasis can be added to literal or preformatted text.
bits each which identify access permissions for owner,
group, and others as follows:
+------------------ 0400 read by owner (r or -)
| +---------------- 0200 write by owner (w or -)
| | +-------------- 0100 execute (search directory) by owner
| | | (x, s, S, or -)
| | | +------------ 0040 read by group (r or -)
| | | | +---------- 0020 write by group (w or -)
| | | | | +-------- 0010 execute/search by group
| | | | | | (x, s, S, or -)
| | | | | | +------ 0004 read by others (r or -)
| | | | | | | +---- 0002 write by others (w or -)
| | | | | | | | +-- 0001 execute/search by others
| | | | | | | | | (x, t, T, or -)
| | | | | | | | |
r w x r w x r w x
The following is a preliminary proposal for representing equations directly as HTML+ using an SGML-based notation, inspired by the approach taken by LaTeX. It is intended to cover the majority of users needs, rather than aiming for complete coverage. This makes it practical to use a simplified notation compared with richer notations, e.g. the ISO 12083 Maths DTD. An experimental browser supporting the MATH element is being developed at CERN.
Consider the equation:
This can be represented as:
<math>The mathematical symbols are given with their standard ISO entity names. SUB and SUP are used to specify subscripts and superscripts. For integral signs and related operators, the subscript/superscript text is centered over the symbol, otherwise it appears to the right as shown in the preceding example. The BOX and OVER elements allow you to define more complex equations, as in:
H(s) = ∫<sub>0</sub><sup>∞</sup> e<sup>-st</sup> h(t) dt
</math>
which is represented by:
<math>The BOX element can be used to generally group items and can be thought of as non-printing parentheses. The OVER element is optional and divides the box into numerator and denominator. The ARRAY element is used to specify arrays for expressions like:
C <box>dV<sub>out</sub><over>dt</box> = I<sub>b</sub>
&tanh;(<box>κ(V<sub>in</sub>-V<sub>out</sub>)<over>2</box>)
</math>
The ARRAY element has a single attribute ALIGN which specifies the number of columns and the alignment of items within the columns. For each column there is a single letter that specifies how items in that column should be positioned: c for centered, l for flush left or r for flush right. Each item in the array must follow an <ITEM> element.
The preceding example is represented by:
<math>The browser is responsible for working out the vertical and horizontal spacing required for the array. Parentheses(19) are stretched to match the size of the array. Arrays can be used only in the context of the MATH element. The TABLE element should be used for other contexts.
(<array align="c"> <item>
&ldet;<array align="cc">
<item>x<sub>11</sub>
<item>x<sub>12</sub>
<item>x<sub>21</sub>
<item>x<sub>22</sub>
</array><rd>&rdet;
<item> y <item> z
</array>)
</math>
Spaces are significant within the MATH element, and used for disambiguation, as can be seen in the following two examples:
Authors can adjust the default horizontal spacing with the ISO entities:   for thin space (1/6 em) and   for hair space. Horizontal, diagonal and vertical ellipsis are possible with … &dellip; and ⋮ respectively. Common functions like sin, log and tanh should be rendered in a non-italic font. These functions are defined by their entity namesakes. Additional elements are needed to represent roots and for over and under lining.
An open question is how to render maths on dumb terminals. One approach is to translate into an existing convention such as Mathematica. Another is to write equations as they would be spoken aloud. For GUI displays, browsers need to be able to show characters in at least two point sizes as well as being able to stretch parentheses and integral signs etc. to various sizes. The processing time needed to size and position symbols suggests that caching may be useful to speed up subsequent scrolling and refresh operations.
Comments from mathematicians are welcomed. Widespread support for formulae is likely to be delayed until most platforms support the relevant symbols fonts (or Unicode).
Generating a conventional index for a document is a skilled task, and HTML+ allows authors to include directives for automatically creating hypertext indexes. These directives can be included in many HTML+ elements, such as headers, paragraphs and character emphasis using the INDEX attribute. This allows each such element to be referenced in the index under primary or secondary keys, e.g.
<h3 id="z23" index="Radiation damage/shielding from as difficult">Radia tion shielding</h3>This can be used to generate an index like:
Radiation damage classical target theory dominance of in molecular mills shielding from as difficult simple lifetime model track-structure lifetime model Radicals and so on ...In many cases, a given key will be associated with more than one part of the document. In this case you can either use secondary keys to disambiguate the references, as shown above, or allow the indexing program to generate its own names for each reference, e.g. (a), (b), (c), ...
The indexing program creates an HTML+ file that can then be linked to the documents it was produced from. The program may also generate a list of references from occurrences of the CITE element. These can be simply ordered alphabetically. Sophisticated bibliographic references are beyond the scope of HTML+ as they require a much richer system of markup.
<!DOCTYPE htmlplus PUBLIC "-//Internet/RFC xxxx//EN">There are several elements that can only occur at the start of the document before any headers or text elements:
<htmplus forms=off>Another idea is to provide a VERSION attribute for specifying the version number of HTML+ in used by this document. This would provide an alternative to including the version number in the public name given with the DOCTYPE element.
<HEAD>
<ISINDEX>
<LINK REL="Next" HREF="...">
etc.
</HEAD> <BODY>
body elements go here
</BODY>
URL?word+word+wordThis mechanism has to a large extent been superseded by the FORM element. There are still good reasons for keeping it in HTML+. In particular, when reading a long document, having the search field always visible, makes it much easier for people to enter search strings, than if they first had to scroll to the part of the document which included a search form.
The standard values for the REL attribute are (case insensitive):
<LINK IDREF="z36" REL="Sidebar" HREF="sidebar.html">The IDREF attribute localizes the link to an element in the current document with a specific identifier (as defined with the ID attribute). In the absence of the IDREF attribute, the link is associated with the current document as a whole.
Other suggestions for LINK currently lie outside this proposal, pending further work. In some cases, LINK elements may be implied by the context in which this document was reached. This is explained in Section 15.
A book might have the following pieces:
Generating a hypertext version of the index may prove time consuming, and it may be simpler to offer a full text search facility instead. The INDEX attribute can be used with many HTML+ elements to facilitate automatic generation of a conventional looking index, see Section 13.
Implicit links are useful when you want to reuse a given subdocument in another independent book, and for non-HTML+ formats such as scanned page images. To define implicit links, you need to first create a HTML+ document such as a table of contents, and to make each entry into a hypertext link using the <A> element with the attribute REL="SUBDOCUMENT". When the user follows one of these links, the browser scans the current document to locate the next <A> element with the subdocument relationship. If it reaches the end of the document it looks for a LINK element with REL=NEXT. This procedure is used to imply a LINK element in the retrieved subdocument. A similar process is used to imply a LINK element with REL=PREVIOUS. The other links for the current document are simply inherited, i.e. any bookmarks, glossary or index links that hold for the table of contents, also hold for the subdocument.
The browser then retrieves the subdocument and merges the implied LINKs with any that are given explicitly(22). If the user now presses the "Next" button on the toolbar (or menu), the browser follows the implicit link to the next subdocument. The browser needs to look again at the parent document to find the new next subdocument. This mechanism is difficult to explain, but simple to write documents for. All that authors need to do, is to remember to include the subdocument relationship when defining hypertext links.
For a hundred page scanned document where each page is held as a separate file, the "table of contents" is going to be pretty dull, and there is little point creating it as an HTML+ node. Instead, you should use an HTTP server which passes the missing LINK elements as header fields for each page image. The suggested representation for these header fields uses the same attributes and syntax as the LINK element:
WWW-Link: REL="Next" HREF="http://www.w3.org//...."There could be several WWW-Link: headers, one for each implied LINK. This idea puts the burden on the server to supply such links as appropriate to each requested document.
David Raggett, Hewlett Packard Laboratories, October 1993.
"Uniform Resource Locators", Tim Berners-Lee, January 1992.
URL=ftp://info.cern.ch/pub/www/doc/url7a.ps
or http://www.w3.org//hypertext/WWW/Addressing/Addressing.html
"Protocol for the Retrieval and Manipulation of Texual and Hypermedia Information",
Tim Berners-Lee, 1993.
URL=ftp://info.cern.ch/pub/www/doc/http-spec.ps
or http://www.w3.org//hypertext/WWW/Protocols/HTTP/HTTP2.html
"The SGML Handbook", Charles F. GoldFarb, pub. 1990 by the Clarendon Press, Oxford.
The HTML+ Document Type Definition (DTD). The preliminaries are taken from the HTML DTD and declares the character set as Latin-1, disables markup minimisation and sets limits for tag/attribute names to 34 characters, and attribute values to a maximum of 1024 characters.
<!SGML "ISO 8879:1986"
--
Document Type Definition for the HyperText Markup Language Plus
for use with the World Wide Web application (HTML+ DTD). These
initial settings are take from the HTML DTD.
NOTE: This is a definition of HTML with respect to
SGML, and assumes an understanding of SGML terms.
--
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 34
TAGLVL 100
LITLEN 1024
GRPGTCNT 150
GRPCNT 64
FEATURES
MINIMIZE
DATATAG NO
OMITTAG NO
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> decla
ration is fine. Browsers should be forgiving of markup errors.
Common Attributes:
id the id 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.
index allows authors to specify how given headers etc should be
indexed as primary or secondary keys, where "/" separates primary
from secondary keys, ";" separates multiple entries
-->
<!-- 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.
-->
<!ENTITY % URL "CDATA" -- a URL or URN designating a hypertext node -->
<!ENTITY % emph1 "I|B|U|S|SUP|SUB|TT">
<!ENTITY % emph2 "Q|CITE|PERSON|ACRONYM|ABBREV|EM|STRONG">
<!ENTITY % emph3 "CMD|ARG|KBD|VAR|DFN|CODE|SAMP|REMOVED|ADDED">
<!ENTITY % emph "%emph1;|%emph2;|%emph3;">
<!ENTITY % misc "RENDER|FOOTNOTE|MARGIN|INPUT|TEXTAREA|SELECT">
<!ENTITY % text "#PCDATA|A|IMG|IMAGE|%emph;|%misc;|BR|CHANGED">
<!ENTITY % paras "P|PRE|LIT|FIG">
<!ENTITY % lists "UL|OL|DL|MENU|DIR">
<!ENTITY % block "TABLE|FORM|MATH|NOTE|QUOTE|ABSTRACT|BYLINE|HR">
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!ENTITY % table "%text;|P|%heading;|%lists;">
<!ENTITY % math "BOX|%text;">
<!ENTITY % main "%heading;|%block;|%lists;|%paras;|%text;">
<!ENTITY % setup "(TITLE? & ISINDEX? & NEXTID? & LINK* & BASE?)">
<!-- 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)
-->
<!ELEMENT HTMLPLUS O O ((HEAD, BODY) | ((%setup;), (%main;)*))>
<!ATTLIST HTMLPLUS
version CDATA #IMPLIED -- the HTML+ version number --
forms (on|off) on -- used to disable form filling -->
<!ELEMENT HEAD - - (%setup;) -- delimits document wide properties -->
<!ELEMENT BODY - - (%main;)* -- delimits the document's body -->
<!-- Document title -->
<!ELEMENT TITLE - - (#PCDATA | %emph;)+>
<!ATTLIST TITLE
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!-- Document headers -->
<!ELEMENT (%heading;) - - (#PCDATA | %emph;)+>
<!ATTLIST (%heading;)
id ID #IMPLIED -- defines link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!-- character emphasis -->
<!ELEMENT (%emph;) - - (%text;)*>
<!ATTLIST (%emph;)
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT (FOOTNOTE|MARGIN) - - (%text;)* -(FOOTNOTE|MARGIN)>
<!ATTLIST (FOOTNOTE|MARGIN)
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT RENDER -O (EMPTY) -- how to render unknown elements -->
<!ATTLIST RENDER
tag CDATA #IMPLIED -- tag name --
style CDATA #IMPLIED -- comma separated list of styles -->
<!-- Paragraphs which act as containers for the following text -->
<!ELEMENT P - O (L|%text;)+>
<!ATTLIST P
id ID #IMPLIED -- link destination --
align (left|indent|center|right|justify) left
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT L - O (%text;)+>
<!ATTLIST L
id ID #IMPLIED -- link destination --
align (left|indent|center|right|justify) left
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT HR - O EMPTY -- Horizontal Rule -->
<!ELEMENT BR - O EMPTY -- line break in normal text-->
<!ELEMENT PRE - - (TAB|%text;)+ -- preformatted fixed pitch text -->
<!ATTLIST PRE
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT LIT - - (TAB|%text;)+ -- literal variable pitch text -->
<!ATTLIST LIT
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT TAB - O EMPTY -- tabs for imported text -->
<!ATTLIST TAB
at NUMBER #IMPLIED -- measured in widths of a capital M --
align (left|center|right|decimal) left -- tab alignment -->
<!ELEMENT QUOTE - - (P|%text;)* -- block quote -->
<!ATTLIST QUOTE
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT ABSTRACT - - (P|%text;)* -- document summary -->
<!ATTLIST ABSTRACT
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT BYLINE - - (P|%text;)* -- info on author -->
<!ATTLIST BYLINE
id ID #IMPLIED -- link destination --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT NOTE - - (P|%text;)* -- admonishment -->
<!ATTLIST NOTE
id ID #IMPLIED -- link destination --
role CDATA #IMPLIED -- e.g. Tip, Note, Warning, or Error --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT (ADDRESS|BLOCKQUOTE) - - (%text;|P)* --compatibility with HTML-->
<!-- Lists which can be nested -->
<!ELEMENT OL - - (LI | UL | OL)+ -- ordered list -->
<!ATTLIST OL
id ID #IMPLIED
compact (compact) #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT UL - - (LI | UL | OL)+ -- unordered list -->
<!ATTLIST UL
id ID #IMPLIED -- link destination --
compact (compact) #IMPLIED -- reduced interitem spacing --
plain (plain) #IMPLIED -- suppress bullets --
wrap (vert|horiz) vert -- multicolumn list wrap style --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!-- List items for UL and OL lists -->
<!ELEMENT LI - O (DL|P|%text;)+>
<!ATTLIST LI
id ID #IMPLIED
src %URL; #IMPLIED -- icon for use in place of bullet --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT MENU - - (LI)* -- plain single column list -->
<!ATTLIST MENU
id ID #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT DIR - - (LI)* -- plain multi column list -->
<!ATTLIST DIR
id ID #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!-- Definition Lists (terms + definitions) -->
<!ELEMENT DL - - (DT+,DD)+>
<!ATTLIST DL
id ID #IMPLIED
compact (compact) #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT DT - O (%text;)+ -- term text -- >
<!ELEMENT DD - O (P|UL|OL|DL|%text;)+ -- definition text -- >
<!ATTLIST (DT|DD)
id ID #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
<!ATTLIST CAPTION
id ID #IMPLIED
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT TABLE - - (CAPTION?, (TH|TD|TR)*) -- mixed headers and data -->
<!ATTLIST TABLE
id ID #IMPLIED
border (border) #IMPLIED -- draw borders --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT TH - O (%table;)* -- a header cell -->
<!ATTLIST TH
colspan NUMBER 1 -- columns spanned --
rowspan NUMBER 1 --. rows spanned --
align (left|center|right) center -- alignment in cell --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT TD - O (%table;)* -- a data cell -->
<!ATTLIST TD
colspan NUMBER 1 -- columns spanned --
rowspan NUMBER 1 --. rows spanned --
align (left|center|right) center -- alignment in cell --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT TR - O (EMPTY) -- row separator -->
<!ATTLIST TR id ID #IMPLIED>
<!ELEMENT FORM - - (MH, (%main;)*) -(FORM) -- forms can't be nested -->
<!ATTLIST FORM
id ID #IMPLIED
action %URL; #IMPLIED -- defaults for URL for current doc --
method CDATA #IMPLIED -- PUT, POST, DELETE etc. --
lang CDATA #IMPLIED -- ISO language abbreviation --
index CDATA #IMPLIED -- entries for index compilation -->
<!ELEMENT MH - - CDATA -- one or more RFC 822 header fields -->
<!ATTLIST MH hidden (hidden) #IMPLIED -- hide the mail headers from view -->
<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
name CDATA #IMPLIED -- attribute name (may not be unique) --
type CDATA #IMPLIED -- a wide variety of field types --
size CDATA #IMPLIED -- visible size of text fields --
min NUMBER #IMPLIED -- for range controls --
max NUMBER #IMPLIED -- for range controls or text fields --
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 certain fields e.g. IMAGEs --
align (top|middle|bottom) top -- for IMAGE fields only --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT TEXTAREA - - CDATA -- multi-line text fields -->
<!ATTLIST TEXTAREA
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 --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT SELECT - - (OPTION+) -- combo style selection lists -->
<!ATTLIST SELECT
name CDATA #IMPLIED -- attribute name (may not be unique) --
several (several) #IMPLIED -- permits multiple selections --
error (error) #IMPLIED -- if in error --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT OPTION - - CDATA>
<!ATTLIST OPTION
selected (selected) #IMPLIED -- if initially selected --
disabled (disabled) #IMPLIED -- if grayed out --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!ELEMENT FIG - - (CAPTION?,(%text;)*)>
<!ATTLIST FIG
id ID #IMPLIED
align (left|center|right|float) float -- position --
ismap (ismap) #IMPLIED -- server can handle mouse clicks/drags --
src %URL; #IMPLIED -- link to image data --
index CDATA #IMPLIED -- entries for index compilation --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!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 -->
<!ELEMENT IMAGE - - (A|%text;)*>
<!ATTLIST IMAGE
src %URL; #REQUIRED -- where to get image data --
align (top|middle|bottom) top -- top, middle or bottom --
seethru CDATA #IMPLIED -- for transparency --
ismap (ismap) #IMPLIED -- send mouse clicks/drags to server --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!-- proposal for representing formulae -->
<!ELEMENT MATH - - (%math;)*>
<!ATTLIST MATH id ID #IMPLIED>
<!ELEMENT BOX - - ((%math;)*, OVER?, (%math;)*)>
<!ELEMENT OVER - O EMPTY>
<!ELEMENT CHANGED - O EMPTY -- for change bars -->
<!ATTLIST CHANGED -- one of id and idref is always required --
id ID #IMPLIED -- signals start of changes --
idref IDREF #IMPLIED -- signals end of changes -->
<!-- Hypertext Links from points within document nodes -->
<!ELEMENT A - - (#PCDATA | IMG | EM | EMBED)*>
<!ATTLIST A
id ID #IMPLIED -- as target of link --
name CDATA #IMPLIED -- for backwards compatibility with HTML--
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 --
methods CDATA #IMPLIED -- supported public methods --
effect CDATA #IMPLIED -- replace/new/overlay/embed --
print CDATA #IMPLIED -- reference/footnote/section --
title CDATA #IMPLIED -- when otherwise unavailable --
type CDATA #IMPLIED -- for presentation cues --
size NAMES #IMPLIED -- for progress cues --
lang CDATA #IMPLIED -- ISO language abbreviation -->
<!-- Other kinds of relationships between documents -->
<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
idref IDREF #IMPLIED -- starting point --
href %URL; #IMPLIED -- destination node --
rel CDATA #IMPLIED -- forward relationship type --
rev CDATA #IMPLIED -- reverse relationship type --
methods CDATA #IMPLIED -- supported public methods -->
<!-- Original document URL for resolving relative URLs -->
<!ELEMENT BASE - O EMPTY>
<!ATTLIST BASE HREF %URL; #IMPLIED>
<!-- Signifies the document's URL accepts queries -->
<!ELEMENT ISINDEX - O (EMPTY)>
<!ATTLIST ISINDEX href %URL; #IMPLIED -- defaults to document's URL -->
<!-- For use with autonumbering editors - don't reuse ids, allocate next one
starting from this one -->
<!ELEMENT NEXTID - O (EMPTY)>
<!ATTLIST NEXTID N NAME #REQUIRED>
<!-- Mnemonic character entities for 8 bit ANSI Latin-1
ignore when using other character sets -->
<!ENTITY iexcl "¡" -- inverted exclamation mark -->
<!ENTITY cent "¡" -- cent sign -->
<!ENTITY pound "£" -- pound sign -->
<!ENTITY yen "¥" -- yen sign -->
<!ENTITY brvbar "¦" -- broken vertical bar -->
<!ENTITY sect "§" -- section sign -->
<!ENTITY copy "©" -- copyright sign -->
<!ENTITY laquo "«" -- angle quotation mark, left -->
<!ENTITY raquo "»" -- angle quotation mark, right -->
<!ENTITY not "¬" -- negation sign -->
<!ENTITY reg "®" -- circled R registered sign -->
<!ENTITY deg "°" -- degree sign -->
<!ENTITY plusmn "±" -- plus or minus sign -->
<!ENTITY sup2 "²" -- superscript 2 -->
<!ENTITY sup3 "³" -- superscript 3 -->
<!ENTITY micro "µ" -- micro sign -->
<!ENTITY para "¶" -- paragraph sign -->
<!ENTITY sup1 "¹" -- superscript 1 -->
<!ENTITY middot "·" -- center dot -->
<!ENTITY frac14 "¼" -- fraction 1/4 -->
<!ENTITY frac12 "½" -- fraction 1/2 -->
<!ENTITY iquest "¿" -- inverted question mark -->
<!ENTITY frac34 "¾" -- fraction 3/4 -->
<!ENTITY AElig "Æ" -- capital AE diphthong (ligature) -->
<!ENTITY Aacute "Á" -- capital A, acute accent -->
<!ENTITY Acirc "Â" -- capital A, circumflex accent -->
<!ENTITY Agrave "À" -- capital A, grave accent -->
<!ENTITY Aring "Å" -- capital A, ring -->
<!ENTITY Atilde "Ã" -- capital A, tilde -->
<!ENTITY Auml "Ä" -- capital A, dieresis or umlaut mark -->
<!ENTITY Ccedil "Ç" -- capital C, cedilla -->
<!ENTITY ETH "Ð" -- capital Eth, Icelandic -->
<!ENTITY Eacute "É" -- capital E, acute accent -->
<!ENTITY Ecirc "Ê" -- capital E, circumflex accent -->
<!ENTITY Egrave "È" -- capital E, grave accent -->
<!ENTITY Euml "Ë" -- capital E, dieresis or umlaut mark -->
<!ENTITY Iacute "Í" -- capital I, acute accent -->
<!ENTITY Icirc "Î" -- capital I, circumflex accent -->
<!ENTITY Igrave "Ì" -- capital I, grave accent -->
<!ENTITY Iuml "Ï" -- capital I, dieresis or umlaut mark -->
<!ENTITY Ntilde "Ñ" -- capital N, tilde -->
<!ENTITY Oacute "Ó" -- capital O, acute accent -->
<!ENTITY Ocirc "Ô" -- capital O, circumflex accent -->
<!ENTITY Ograve "Ò" -- capital O, grave accent -->
<!ENTITY Oslash "Ø" -- capital O, slash -->
<!ENTITY Otilde "Õ" -- capital O, tilde -->
<!ENTITY Ouml "Ö" -- capital O, dieresis or umlaut mark -->
<!ENTITY THORN "Þ" -- capital THORN, Icelandic -->
<!ENTITY Uacute "Ú" -- capital U, acute accent -->
<!ENTITY Ucirc "Û" -- capital U, circumflex accent -->
<!ENTITY Ugrave "Ù" -- capital U, grave accent -->
<!ENTITY Uuml "Ü" -- capital U, dieresis or umlaut mark -->
<!ENTITY Yacute "Ý" -- capital Y, acute accent -->
<!ENTITY aacute "á" -- small a, acute accent -->
<!ENTITY acirc "â" -- small a, circumflex accent -->
<!ENTITY aelig "æ" -- small ae diphthong (ligature) -->
<!ENTITY agrave "à" -- small a, grave accent -->
<!ENTITY amp "&" -- ampersand -->
<!ENTITY aring "å" -- small a, ring -->
<!ENTITY atilde "ã" -- small a, tilde -->
<!ENTITY auml "ä" -- small a, dieresis or umlaut mark -->
<!ENTITY ccedil "ç" -- small c, cedilla -->
<!ENTITY eacute "é" -- small e, acute accent -->
<!ENTITY ecirc "ê" -- small e, circumflex accent -->
<!ENTITY egrave "è" -- small e, grave accent -->
<!ENTITY eth "ð" -- small eth, Icelandic -->
<!ENTITY euml "ë" -- small e, dieresis or umlaut mark -->
<!ENTITY gt ">" -- greater than -->
<!ENTITY iacute "í" -- small i, acute accent -->
<!ENTITY icirc "î" -- small i, circumflex accent -->
<!ENTITY igrave "ì" -- small i, grave accent -->
<!ENTITY iuml "ï" -- small i, dieresis or umlaut mark -->
<!ENTITY lt "<" -- less than -->
<!ENTITY ntilde "ñ" -- small n, tilde -->
<!ENTITY oacute "ó" -- small o, acute accent -->
<!ENTITY ocirc "ô" -- small o, circumflex accent -->
<!ENTITY ograve "ò" -- small o, grave accent -->
<!ENTITY oslash "ø" -- small o, slash -->
<!ENTITY otilde "õ" -- small o, tilde -->
<!ENTITY ouml "ö" -- small o, dieresis or umlaut mark -->
<!ENTITY szlig "ß" -- small sharp s, German (sz ligature) -->
<!ENTITY thorn "þ" -- small thorn, Icelandic -->
<!ENTITY uacute "ú" -- small u, acute accent -->
<!ENTITY ucirc "û" -- small u, circumflex accent -->
<!ENTITY ugrave "ù" -- small u, grave accent -->
<!ENTITY uuml "ü" -- small u, dieresis or umlaut mark -->
<!ENTITY yacute "ý" -- small y, acute accent -->
<!ENTITY yuml "ÿ" -- small y, dieresis or umlaut mark -->
<!-- The END -->
]>
Appendix II
The proposed character entities for HTML+ and their corresponding character codes for Unicode and the Adobe Latin-1 & Symbol character sets.
-------------------------------------------------------------------------------------------------------
Symbol ISO Adobe name Adobe Unicode Unicode name
8879 Hex
-------------------------------------------------------------------------------------------------------
ISO Latin 1 Entities
" quot quotedbl 22 0022 QUOTATION MARK
& amp ampersand 26 0026 AMPERSAND
< lt less 3C 003C LESS-THAN SIGN
> gt greater 3E 003E GREATER-THAN SIGN
nbsp A0 00A0 NON-BREAKING SPACE
\xc1 iexcl exclamdown A1 00A1 INVERTED EXCLAMATION MARK
xa2 cent cent A2 00A2 CENT SIGN
xa3 pound sterling A3 00A3 POUND SIGN
\xdb curren currency A4 00A4 CURRENCY SIGN
xa5 yen yen A5 00A5 YEN SIGN
brvbar brokenbar A6 00A6 BROKEN VERTICAL BAR
§ sect section A7 00A7 SECTION SIGN
\xac die dieresis A8 00A8 SPACING DIAERESIS
\xa9 copy copyright A9 00A9 COPYRIGHT SIGN
\xbb ordf ordfeminine AA 00AA FEMININE ORDINAL INDICATOR
\xc7 laquo guillemotleft AB 00AB LEFT POINTING GUILLEMET
\xc2 not logicalnot AC 00AC NOT SIGN
- shy hyphen AD 00AD SOFT HYPHEN
\xa8 reg registered AE 00AE REGISTERED TRADE MARK SIGN
\xf8 macron macron AF 00AF SPACING MACRON
° degree degree B0 00B0 DEGREE SIGN
± plusmn plusminus B1 00B1 PLUS-OR-MINUS SIGN
2 sup2 twosuperior B2 00B2 SUPERSCRIPT DIGIT TWO
3 sup3 threesuperior B3 00B3 SUPERSCRIPT DIGIT THREE
' acute acute B4 00B4 SPACING ACUTE
m micro mu B5 00B5 MICRO SIGN
\xa6 para paragraph B6 00B6 PARAGRAPH SIGN
· middot periodcentered B7 00B7 MIDDLE DOT
\xfc Cedilla cedilla B8 00B8 SPACING CEDILLA
1 sup1 onesuperior B9 00B9 SUPERSCRIPT DIGIT ONE
\xbc ordm ordmasculine BA 00BA MASCULINE ORDINAL INDICATOR
\xc8 raquo guillemotright BB 00BB RIGHT POINTING GUILLEMET
1/4 frac14 onequarter BC 00BC FRACTION ONE QUARTER
1/2 frac12 onehalf BD 00BD FRACTION ONE HALF
3/4 frac34 threequarters BE 00BE FRACTION THREE QUARTERS
\xc0 iquest questiondown BF 00BF INVERTED QUESTION MARK
À Agrave Agrave C0 00C0 LATIN CAPITAL LETTER A GRAVE
Á Aacute Aacute C1 00C1 LATIN CAPITAL LETTER A ACUTE
 Acirc Acircumflex C2 00C2 LATIN CAPITAL LETTER A CIRCUMFLEX
à Atilde Atilde C3 00C3 LATIN CAPITAL LETTER A TILDE
Ä Auml Adieresis C4 00C4 LATIN CAPITAL LETTER A DIAERESIS
Å Aring Aring C5 00C5 LATIN CAPITAL LETTER A RING
Æ AElig AE C6 00C6 LATIN CAPITAL LETTER A E
Ç Ccedil CCedilla C7 00C7 LATIN CAPITAL LETTER C CEDILLA
È Egrave Egrave C8 00C8 LATIN CAPITAL LETTER E GRAVE
É Eacute Eacute C9 00C9 LATIN CAPITAL LETTER E ACUTE
Ê Ecirc Ecircumflex CA 00CA LATIN CAPITAL LETTER E CIRCUMFLEX
Ë Euml Edieresis CB 00CB LATIN CAPITAL LETTER E DIAERESIS
Ì Igrave Igrave CC 00CC LATIN CAPITAL LETTER I GRAVE
Í Iacute Iacute CD 00CD LATIN CAPITAL LETTER I ACUTE
Î Icirc Icircumflex CE 00CE LATIN CAPITAL LETTER I CIRCUMFLEX
Ï Iuml Idieresis CF 00CF LATIN CAPITAL LETTER I DIAERESIS
ETH Eth D0 00D0 LATIN CAPITAL LETTER ETH
Ñ Ntilde Ntilde D1 00D1 LATIN CAPITAL LETTER N TILDE
Ò Ograve Ograve D2 00D2 LATIN CAPITAL LETTER O GRAVE
Ó Oacute Oacute D3 00D3 LATIN CAPITAL LETTER O ACUTE
Ô Ocirc Ocircumflex D4 00D4 LATIN CAPITAL LETTER O CIRCUMFLEX
Õ Otilde Otilde D5 00D5 LATIN CAPITAL LETTER O TILDE
Ö Ouml Odieresis D6 00D6 LATIN CAPITAL LETTER O DIAERESIS
xa5 times multiply D7 00D7 MULTIPLICATION SIGN
Ø Oslash Oslash D8 00D8 LATIN CAPITAL LEETER O SLASH
Ù Ugrave Ugrave D9 00D9 LATIN CAPITAL LETTER U GRAVE
Ú Uacute Uacute DA 00DA LATIN CAPITAL LETTER U ACUTE
Û Ucirc Ucircumflex DB 00DB LATIN CAPITAL LETTER U CIRCUMFLEX
Ü Uuml Udieresis DC 00DC LATIN CAPITAL LETTER U DIAERESIS
Yacute Yacute DD 00DD LATIN CAPITAL LETTER Y ACUTE
THORN Thorn DE 00DE LATIN CAPITAL LETTER THORN
ß szlig germandbls DF 00DF LATIN SMALL LETTER SHARP S
à agrave agrave E0 00E0 LATIN SMALL LETTER A GRAVE
á aacute aacute E1 00E1 LATIN SMALL LETTER A ACUTE
â acirc acircumflex E2 00E2 LATIN SMALL LETTER A CIRCUMFLEX
ã atilde atilde E3 00E3 LATIN SMALL LETTER A TILDE
ä auml adieresis E4 00E4 LATIN SMALL LETTER A DIAERESIS
å aring aring E5 00E5 LATIN SMALL LETTER A RING
æ aelig ae E6 00E6 LATIN SMALL LETTER A E
ç ccedil ccedilla E7 00E7 LATIN SMALL LETTER C CEDILLA
è egrave egrave E8 00E8 LATIN SMALL LETTER E GRAVE
é eacute eacute E9 00E9 LATIN SMALL LETTER E ACUTE
ê ecirc ecircumflex EA 00EA LATIN SMALL LETTER E CIRCUMFLEX
ë euml edieresis EB 00EB LATIN SMALL LETTER E DIAERESIS
ì igrave igrave EC 00EC LATIN SMALL LETTER I GRAVE
í iacute iacute ED 00ED LATIN SMALL LETTER I ACUTE
î icirc icircumflex EE 00EE LATIN SMALL LETTER I CIRCUMFLEX
ï iuml idieresis EF 00EF LATIN SMALL LETTER I DIAERESIS
eth eth F0 00F0 LATIN SMALL LETTER ETH
ñ ntilde ntilde F1 00F1 LATIN SMALL LETTER N TILDE
ò ograve ograve F2 00F2 LATIN SMALL LETTER O GRAVE
ó oacute oacute F3 00F3 LATIN SMALL LETTER O ACUTE
ô ocirc ocircumflex F4 00F4 LATIN SMALL LETTER O CIRCUMFLEX
õ otilde otilde F5 00F5 LATIN SMALL LETTER O TILDE
ö ouml odieresis F6 00F6 LATIN SMALL LETTER O DIAERESIS
\xb8 divide divide F7 00F7 DIVISION SIGN
ø oslash oslash F8 00F8 LATIN SMALL LETTER O SLASH
ù ugrave ugrave F9 00F9 LATIN SMALL LETTER U GRAVE
ú uacute uacute FA 00FA LATIN SMALL LETTER U ACUTE
û ucirc ucircumflex FB 00FB LATIN SMALL LETTER U CIRCUMFLEX
ü uuml udieresis FC 00FC LATIN SMALL LETTER U DIAERESIS
yacute yacute FD 00FD LATIN SMALL LETTER Y ACUTE
thorn thorn FE 00FE LATIN SMALL LETTER THORN
\xd8 yuml ydieresis FF 00FF LATIN SMALL LETTER Y DIAERESIS
Adobe Symbol Font Entities
" forall universal 22 2200 FOR ALL
$ exist existential 24 2203 THERE EXISTS
' ni suchthat 27 220B CONTAINS AS MEMBER
* lowast asteriskmath 2A 2217 ASTERISK OPERATOR
- minus minus 2D 2212 MINUS SIGN
@ cong congruent 40 2245 APPROXIMATELY EQUAL TO
A Agr Alpha 41 0391 GREEK CAPITAL LETTER ALPHA
B Bgr Beta 42 0392 GREEK CAPITAL LETTER BETA
C KHgr Chi 43 03A7 GREEK CAPITAL LETTER CHI
D Delta Delta 44 0394 GREEK CAPITAL LETTER DELTA
E Egr Epsilon 45 0395 GREEK CAPITAL LETTER EPSILON
F PHgr Phi 46 03A6 GREEK CAPITAL LETTER PHI
G Gamma Gamma 47 0393 GREEK CAPITAL LETTER GAMMA
H EEgr Eta 48 0397 GREEK CAPITAL LETTER ETA
I Igr Iota 49 0399 GREEK CAPITAL LETTER IOTA
J thetav theta1 4A 03D1 GREEK SMALL LETTER SCRIPT THETA
K Kgr Kappa 4B 039A GREEK CAPITAL LETTER KAPPA
L Lambda Lambda 4C 039B GREEK CAPITAL LETTER LAMBDA
M Mgr Mu 4D 039C GREEK CAPITAL LETTER MU
N Ngr Nu 4E 039D GREEK CAPITAL LETTER NU
O Ogr Omicron 4F 039F GREEK CAPITAL LETTER OMICRON
P Pi Pi 50 03A0 GREEK CAPITAL LETTER Pl
Q Theta Theta 51 0398 GREEK CAPITAL LETTER THETA
R Rgr Rho 52 03A1 GREEK CAPITAL LETTER RHO
S Sigma Sigma 53 03A3 GREEK CAPITAL LETTER SIGMA
T Tgr Tau 54 03A4 GREEK CAPITAL LETTER TAU
U Upsi Upsilon 55 03A5 GREEK CAPITAL LETTER UPSILON
&sfgr; sfgr sigma1 56 03C2 GREEK SMALL LETTER FINAL SIGMA
W Omega Omega 57 03A9 GREEK CAPITAL LETTER OMEGA
X Xi Xi 58 039E GREEK CAPITAL LETTER Xl
Y Psi Psi 59 03A8 GREEK CAPITAL LETTER PSI
Z Zgr Zeta 5A 0396 GREEK CAPITAL LETTER ZETA
\ there4 therefore 5C 2234 THEREFORE
^ perp perpendicular 5E 22A5 UP TACK
` radicalex 60 203E SPACING OVERSCORE
a alpha alpha 61 03B1 GREEK SMALL LETTER ALPHA
b beta beta 62 03B2 GREEK SMALL LETTER BETA
c chi chi 63 03C7 GREEK SMALL LETTER CHI
d delta delta 64 03B4 GREEK SMALL LETTER DELTA
e epsi epsilon 65 03B5 GREEK SMALL LETTER EPSILON
f phis phi 66 03C6 GREEK SMALL LETTER PHI
g gamma gamma 67 03B3 GREEK SMALL LETTER GAMMA
h eta eta 68 03B7 GREEK SMALL LETTER ETA
i iota iota 69 03B9 GREEK SMALL LETTER IOTA
j phiv phi1 6A 03D5 GREEK SMALL LETTER SCRIPT PHI
k kappa kappa 6B 03BA GREEK SMALL LETTER KAPPA
l lambda lambda 6C 03BB GREEK SMALL LETTER LAMBDA
m mu mu 6D 03BC GREEK SMALL LETTER MU
n nu nu 6E 03BD GREEK SMALL LETTER NU
o ogr omicron 6F 03BF GREEK SMALL LETTER OMICRON
p pi pi 70 03C0 GREEK SMALL LETTER Pl
q thetas theta 71 03B8 GREEK SMALL LETTER THETA
r rho rho 72 03C1 GREEK SMALL LETTER RHO
s sigma sigma 73 03C3 GREEK SMALL LETTER SIGMA
t tau tau 74 03C4 GREEK SMALL LETTER TAU
u upsi upsilon 75 03C5 GREEK SMALL LETTER UPSILON
v piv omega1 76 03D6 GREEK SMALL LETTER OMEGA Pl
w omega omega 77 03C9 GREEK SMALL LETTER OMEGA
x xi xi 78 03BE GREEK SMALL LETTER Xl
y psi psi 79 03C8 GREEK SMALL LETTER PSI
z zeta zeta 7A 03B6 GREEK SMALL LETTER ZETA
~ sim similar 7E 223C TILDE OPERATOR
\xa1 Upsilon1 A1 03D2 GREEK CAPITAL LETTER UPSILON HOOK
xa2 vprime minute A2 2032 PRIME
xa3 le lessequal A3 2264 LESS THAN OR EQUAL TO
\xda fraction A4 2044 FRACTION SLASH
infin infinity A5 221E INFINITY
\xa6 fnof florin A6 0192 LATIN SMALL LETTER SCRIPT F
ß clubs club A7 2663 BLACK CLUB SUIT
\xa8 diams diamond A8 2666 BLACK DIAMOND SUIT
\xa9 hearts heart A9 2665 BLACK HEART SUIT
\xaa spades spade AA 2660 BLACK SPADE SUIT
' harr arrowboth AB 2194 LEFT RIGHT ARROW
\xac larr arrowleft AC 2190 LEFT ARROW
\xad uarr arrowup AD 2191 UP ARROW
Æ rarr arrowright AE 2192 RIGHT ARROW
↓ darr arrowdown AF 2193 DOWN ARROW
\xb2 Prime second B2 2033 DOUBLE PRIME
\xb3 ge greaterequal B3 2265 GREATER THAN OR EQUAL TO
\xb5 prop proportional B5 221D PROPORTIONAL TO
\xb6 part partialdiff B6 2202 PARTIAL DIFFERENTIAL
\xb7 bull bullet B7 2022 BULLET
\xb9 ne notequal B9 2260 NOT EQUAL TO
\xba equiv equivalence BA 2261 IDENTICAL TO
\xbb ap approxequal BB 2248 ALMOST EQUAL TO
\xbc hellip ellipsis BC 2026 HORIZONTAL ELLIPSIS
\xbd arrowvertex BD
æ arrowhorizex BE
ø carriagereturn BF 21B5 DOWN ARROW WITH CORNER LEFT
\xc0 aleph aleph C0 2135 FIRST TRANSFINITE CARDINAL
\xc1 image Ifraktur C1 2111 BLACK-LETTER I
\xc2 real Rfraktur C2 211C BLACK-LETTER R
℘ weierp weierstrass C3 2118 SCRIPT P
\xc4 otimes circlemultiply C4 2297 CIRCLED TIMES
\xc5 oplus circleplus C5 2295 CIRCLED PLUS
\xc6 empty emptyset C6 2205 EMPTY SET
\xc7 cap intersection C7 2229 INTERSECTION
\xc8 cup union C8 222A UNION
\xc9 sup propersuperset C9 2283 SUPERSET OF
⊇ supe reflexsuperset CA 2287 SUPERSET OF OR EQUAL TO
À nsub notsubset CB 2284 NOT A SUBSET OF
à sub propersubset CC 2282 SUBSET OF
⊆ sube reflexsubset CD 2286 SUBSET OF OR EQUAL TO
\xce isin element CE 2208 ELEMENT OF
\xcf notin notelement CF 2209 NOT AN ELEMENT OF
-- ang angle D0 2220 ANGLE
--- nabla gradient D1 2207 NABLA
` trade trademarkserif D4 2122 TRADEMARK
' prod product D5 220F N-ARY PRODUCT
\xd6 radic radical D6 221A SQUARE ROOT
· sdot dotmath D7 22C5 DOT OPERATOR
\xd9 and logicaland D9 2227 LOGICAL AND
\xda or logicalor DA 2228 LOGICAL OR
\xdb hArr arrowdblboth DB 21D4 LEFT RIGHT DOUBLE ARROW
\xdc lArr arrowdblleft DC 21D0 LEFT DOUBLE ARROW
\xdd uArr arrowdblup DD 21D1 UP DOUBLE ARROW
\xde rArr arrowdblright DE 21D2 RIGHT DOUBLE ARROW
\xdf dArr arrowdbldown DF 21D3 DOWN DOUBLE ARROW
loz lozenge E0 25CA LOZENGE
· lang angleleft E1 2329 BRA
 sum summation E5 2211 N-ARY SUMMATION
Ê parenlefttp E6
Á parenleftex E7
Ë parenleftbt E8
È lceil bracketlefttp E9 2308 LEFT CEILING
Í bracketleftex EA
Î lfloor bracketleftbt EB 230A LEFT FLOOR
Ï bracelefttp EC
Ì braceleftmid ED
Ó braceleftbt EE
Ô braceex EF
Ò rang angleright F1 232A KET
Ú int integral F2 222B INTEGRAL
Û integraltp F3 2320 TOP HALF INTEGRAL
Ù integralex F4
integralbt F5 2321 BOTTOM HALF INTEGRAL
\xf6 parenrighttp F6
\xf7 parenrightex F7
\xf8 parenrightbt F8
\xf9 rceil bracketrighttp F9 2309 RIGHT CEILING
\xfa bracketrightex FA
° rfloor bracketrightbt FB 230B RIGHT FLOOR
\xfc bracerighttp FC
} bracerightmid FD
\xfe bracerightbt FE
-------------------------------------------------------------------------------------------------------
Many thanks to Bob Stayton for volunteering his time and effort to prepare this table.ANSI C Code for testing if a point lies within a polygon. This may be freely used provided the original copyright message is retained in full.
/*
** Reproduced with thanks from mapper 1.2
** 7/26/93 Kevin Hughes, kevinh@pulua.hcc.hawaii.edu
** polygon code copyright 1992 by Eric Haines, erich@eye.com
*/
#include <stdio.h>
#define MAXLINE 500
#define MAXVERTS 100
#define X 0
#define Y 1
int pointinpoly(double point[2], double pgon[MAXVERTS][2])
{
int i, numverts, inside_flag, xflag0;
int crossings;
double *p, *stop;
double tx, ty, y;
for (i = 0; pgon[i][X] != -1 && i < MAXVERTS; i++)
;
numverts = i;
crossings = 0;
tx = point[X];
ty = point[Y];
y = pgon[numverts - 1][Y];
p = (double *) pgon + 1;
if ((y >= ty) != (*p >= ty))
{
if ((xflag0 = (pgon[numverts - 1][X] >= tx)) ==
(*(double *) pgon >= tx))
{
if (xflag0)
crossings++;
}
else
{
crossings += (pgon[numverts - 1][X] - (y - ty) *
(*(double *) pgon - pgon[numverts - 1][X]) /
(*p - y)) >= tx;
}
}
stop = pgon[numverts];
for (y = *p, p += 2; p < stop; y = *p, p += 2)
{
if (y >= ty)
{
while ((p < stop) && (*p >= ty))
p += 2;
if (p >= stop)
break;
if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx))
{
if (xflag0)
crossings++;
}
else
{
crossings += (*(p - 3) - (*(p - 2) - ty) *
(*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
}
}
else
{
while ((p < stop) && (*p < ty))
p += 2;
if (p >= stop)
break;
if ((xflag0 = (*(p - 3) >= tx)) == (*(p - 1) >= tx))
{
if (xflag0)
crossings++;
}
else
{
crossings += (*(p - 3) - (*(p - 2) - ty) *
(*(p - 1) - *(p - 3)) / (*p - *(p - 2))) >= tx;
}
}
}
inside_flag = crossings & 0x01;
return (inside_flag);
}
Appendix IV
Alphabetically sorted list of HTML+ tags and their