Message-Id: <firstname.lastname@example.org> Date: Tue, 11 Jul 1995 17:21:19 -0400 To: email@example.com From: KRettig@ctt.bellcore.com (Keith Rettig) Subject: Proposal for an Outlining Markup Scheme for HTML 3.0 Per instructions from Bellcore's W3 Representative, Satish Thatte, we are hereby submitting an outline markup scheme to the IETF for review and consideration for implementation into the HTML 3.0 specifications. The following proposal has been reviewed by several members of Bellcore's staff, all of whom have interests and experience in WWW development. The response was positive and encouraging. Proposal for an Outlining Markup Scheme for HTML 3.0 Proposed by Simon Blackwell and Keith M. Rettig Bell Communications Research Objective: An outline-display mechanism similar to that provided by most word processors would be useful for HTML browsers. It would allow the display of large information spaces in an easy to navigate, compact form. It would also provide the user with control over which information is displayed and when. A typical use would be to display a table of contents for online documentation. It is intended to provide a self-contained outline for navigating a "book" or information space. Although an entire book could be represented as an outline and transmitted at once using the notation we describe, this is not the notation's primary intent. From a performance perspective, the entire text of the outline should be transmitted to the browser upon the first client request. Subsequent expansion and contraction of the outline would then be handled by the browser without any additional network traffic or the delays associated therewith. There will be two performance benefits by sending a whole outline at once instead of several levels of outline (such as can be found in the Yahoo database). First, the redundant information (headers, titles, instructions, addresses, etc.) necessary to represent an outline in various levels of expansion through the use of multiple pages need only be represented once in the proposed outline format. This reduces total bandwidth used. Second, by sending the outline of an information space in one page, the number of connections can be reduced. The user functionality required is the ability to click on outline nodes to either expand or contract them. The user must also be able to jump to documents or sections of documents specified in the outline. This feature would be very useful for managing sites with diverse topics within their information space. Codes: <OUTLINE></OUTLINE> Marks the beginning and ending of the outline. <OH></OH> Marks the beginning and ending of an outline header. Outline headers can be expanded or compressed by clicking on expansion toggles as described below. Hyperlinks (HREFs) can be included, as can all other formatting codes such as bold, italics, font control, etc. <OT></OT> Marks the beginning and ending of outline text. Outline text is displayed when its parent outline header is expanded. Hyperlinks (HREFs) can be included, as can all other formatting codes such as bold, italics, font control, etc. Outlines Could Have the Following Attributes: LABELS=3DA.1.a.i.1 Specifies by example the style of automatic numbering that the browser uses when displaying the outline. In this example, the styles should be: Alpha.numeric.small_alpha.roman.numeric Implicit in the use of the LABELS attribute is that starting values other than 1 or A can be specified. For example, if LABELS=3DC.2.a.i.5 then the outline would start at C, the first instance of the second level would start at 2, the first instance of the third level would start at a, the first instance of the fourth level would start at i, and the first instance of the fifth level would start at 5. ALIGN=3DLeft | Justify If ALIGN=3DLeft, the text of a heading will start one character to the right of the sequence number generated for it. If ALIGN=3DJUSTIFY, the text of al= l headings will start in the same horizontal location (whether collapsed or not). This location would be determined by the length of the sequence label for the deepest node displayed. Examples of each follow. ALIGN=3DLeft 1. Section One 1.1 Section One.one 1.1.1 Section One.one.one 22.214.171.124 Section One.one.one.one ALIGN=3DJustify 1. Section One 1.1 Section One.one 1.1.1 Section One.one.one 126.96.36.199 Section One.one.one.one INDENT=3Dnumber The INDENT value is used to specify how many character spaces (or tabs if more appropriate) each level of the hierarchy should be indented further than its parent. The default should be 0, which would provided a left justified outline. Note that the use of an INDENT value other than 0 if ALIGN=3DJUSTIFY could result in a rather wide display. LEVEL=3Dnumber | all The LEVEL value specifies the level to which the outline should be expanded when first displayed. The default value is 1, which provides for an outline with just the top level nodes displayed. A value of all (or 0) should be used as a setting for fully expanding the outline without requiring the developer to keep track of the number of outline levels. If there is a target anchor embedded within the outline and an attempt is made to jump to that anchor (via an HREF), then the outline should expand to the minimal level necessary to expose the text at that target. The LEVEL attribute can also be placed into an <OH> specification. This would be used if you wanted to expand only certain portions of the outline. In these cases, the child LEVEL attribute shall override the parent LEVEL attribute. When the LEVEL attribute is used within an <OH> the number of levels expanded shall be calculated from the <OH> with the attribute. TYPE=3DArrow | Plus | None The TYPE specification is used to specify the control mechanism for expanding and compressing the outline. Using NONE would cause the text (or possibly the labels) of the outline headings to be toggle mechanism, rather than putting a + / - (plus) or =D8 / =82 (arrow) at the start of a heading. = The use of NONE would be incompatible with using HREFs in the outline headings. If TYPE=3DNone, the controls could be color coded (matching the user's preferences) but not underlined, in order to distinguish them from normal text and hyperlinks. Coding Example: An example using the HTML outline mark-up as proposed. <OUTLINE LABELS=3D188.8.131.52.1 ALIGN=3DLeft INDENT=3D2 LEVEL=3D2 TYPE=3DPlus> <OH>Section One <OT>This is an introduction to Section One</OT> <OH>Section One Dot One <OH>Section One Dot One Dot One</OH> <OH>Section One Dot One Dot Two</OH> </OH> <OH><A HREF=3D"somefile.html">Section One Dot Two</A> <OT>This is Section One Dot Two's body.</OT> </OH> </OH> <OH>Section Two <OT>This is an introduction to Section Two</OT> </OH> </OUTLINE> The above would be displayed initially as shown below. Note that the initial expansion is out to 2 levels because of the LEVEL specification. + / - are used to denote the expansion toggles due to the TYPE specification. Numbers are used for labeling the outline headers because of the LABEL specification. - 1. Section One This is an introduction to Section One + 1.1 Section One Dot One + 1.2 Section One Dot Two - 2. Section Two This is an introduction to Section Two Clicking on the + next to 1.1 would cause the browser to redisplay as follow= s: - 1. Section One This is an introduction to Section One - 1.1 Section One Dot One 1.1.1 Section One Dot One Dot One 1.1.2 Section One Dot One Dot Two + 1.2 Section One Dot Two - 2. Section Two This is an introduction to Section Two Clicking on the - next to 2. would cause the browser to redisplay as follows= : - 1. Section One This is an introduction to Section One - 1.1 Section One Dot One 1.1.1 Section One Dot One Dot One 1.1.2 Section One Dot One Dot Two + 1.2 Section One Dot Two + 2. Section Two Clicking on the - next to 1. would cause the browser to redisplay as follows= : + 1. Section One + 2. Section Two Additional Comments: Specifying an OH without either nested OHs or a nested OT, could be useful for generating sequential labels next to the text of the heading. In this case, the browser should skip display of the expansion toggle controls. It is hoped that the browsers would display each outline heading expansion by just inserting the text and not by redrawing the page. An example of such can be found in the Macintosh OS when viewing a directory (folder) in name view and the user clicks the expansion toggle arrow to expand a subdirectory. The text is "frozen" at the level of the expansion text and above while the folder is expanded below without redrawing the "frozen" text. Redrawing the entire page would likely cause disorientation in the user. Since no browser currently supports outlines, we are considering the development of a CGI script which could use files marked up using the proposed syntax above as reference documents. This CGI script could generate appropriately expanded outlines as forms in HTML files which could be returned to the browser. Each displayed row of an outline would be a form with its submit button used to either expand the row further or contract it. Each form would have a hidden field storing state information about the entire outline which would be used to generate the next version of the outline upon an expansion or contraction request. Contact Information: Simon Blackwell 908-699-2413 Bellcore 444 Hoes Lane, RRC-1H222 Piscataway, NJ 08854-4182 firstname.lastname@example.org Keith M. Rettig 908-699-7624 Bellcore 444 Hoes Lane, RRC-1J214 Piscataway, NJ 08854-4182 KRettig@ctt.bellcore.com ******************************************************* Email Keith if you wish to receive this proposal in the MS Word format. Keith.