Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
michael@0 | 1 | <!-- This Source Code Form is subject to the terms of the Mozilla Public |
michael@0 | 2 | - License, v. 2.0. If a copy of the MPL was not distributed with this |
michael@0 | 3 | - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
michael@0 | 4 | |
michael@0 | 5 | <HTML> |
michael@0 | 6 | <HEAD> |
michael@0 | 7 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> |
michael@0 | 8 | <META NAME="Author" CONTENT="Kipp E.B. HIckman"> |
michael@0 | 9 | <META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (WinNT; I) [Netscape]"> |
michael@0 | 10 | <TITLE>HTML</TITLE> |
michael@0 | 11 | <BASE HREF="file:///s|/ns/xena/htmlpars/testhtml/"> |
michael@0 | 12 | </HEAD> |
michael@0 | 13 | <BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#800080" ALINK="#0000FF"> |
michael@0 | 14 | |
michael@0 | 15 | <H2> |
michael@0 | 16 | HTML</H2> |
michael@0 | 17 | This documents describes the complete handling of HTML in magellan. The |
michael@0 | 18 | document covers the parsing process - how HTML is lexically analysized |
michael@0 | 19 | and then interprted. After the parsing process is discussed we give a detailed |
michael@0 | 20 | analysis of each HTML tag and the attributes that are supported, the values |
michael@0 | 21 | for the attributes and how the tag is treated by magellan. |
michael@0 | 22 | <H2> |
michael@0 | 23 | Parsing</H2> |
michael@0 | 24 | HTML is tokenized by an HTML scanner. The scanner is fed unicode data to |
michael@0 | 25 | parse. Stream converters are used to translate from various encodings to |
michael@0 | 26 | unicode. The scanner separates the input stream into tokens which consist |
michael@0 | 27 | of: |
michael@0 | 28 | <UL> |
michael@0 | 29 | <LI> |
michael@0 | 30 | text</LI> |
michael@0 | 31 | |
michael@0 | 32 | <LI> |
michael@0 | 33 | tags</LI> |
michael@0 | 34 | |
michael@0 | 35 | <LI> |
michael@0 | 36 | entities</LI> |
michael@0 | 37 | |
michael@0 | 38 | <LI> |
michael@0 | 39 | script-entities</LI> |
michael@0 | 40 | |
michael@0 | 41 | <LI> |
michael@0 | 42 | comments</LI> |
michael@0 | 43 | |
michael@0 | 44 | <LI> |
michael@0 | 45 | conditional comments</LI> |
michael@0 | 46 | </UL> |
michael@0 | 47 | The HTML parsing engine uses the HTML scanner for lexical anlaysis. The |
michael@0 | 48 | parsing engine operates by attacking the input stream in a set of well |
michael@0 | 49 | defined steps: |
michael@0 | 50 | <UL> |
michael@0 | 51 | <LI> |
michael@0 | 52 | The parser processes the head portion of the document first, without emitting |
michael@0 | 53 | any output. This is done to discover a few special features of html:</LI> |
michael@0 | 54 | |
michael@0 | 55 | <UL> |
michael@0 | 56 | <LI> |
michael@0 | 57 | The parser processes META tags looking for META TARGET</LI> |
michael@0 | 58 | |
michael@0 | 59 | <LI> |
michael@0 | 60 | The parser processes META tags looking for META tags which affect the character |
michael@0 | 61 | set. Nav4 handles the very first character set defining meta tag (all others |
michael@0 | 62 | are ignored) by reloading the document with the proper character conversion |
michael@0 | 63 | module inserted into the stream pipeline.</LI> |
michael@0 | 64 | </UL> |
michael@0 | 65 | |
michael@0 | 66 | <LI> |
michael@0 | 67 | After the head portion is processed the parser then proceeds to process |
michael@0 | 68 | the body of the document</LI> |
michael@0 | 69 | </UL> |
michael@0 | 70 | |
michael@0 | 71 | <H3> |
michael@0 | 72 | Tag Processing</H3> |
michael@0 | 73 | Tags are processed by the parser by locating a <B>"tag handler"</B> for |
michael@0 | 74 | the tag. The HTML parser serves as the tag handler for all of the builtin |
michael@0 | 75 | tags documented below. Tag attribute handling is done during translation |
michael@0 | 76 | of tags into content. This mapping translates the tag attributes into content |
michael@0 | 77 | data and into style data. The translation to style data is documented below |
michael@0 | 78 | by indicating the mapping from tag attributes to their CSS1 (plus extensions) |
michael@0 | 79 | equivalents. |
michael@0 | 80 | <H3> |
michael@0 | 81 | Special Hacks</H3> |
michael@0 | 82 | The following list describes hacks added to the magellan parsing engine |
michael@0 | 83 | to deal with navigator compatibility. These are just the parser hacks, |
michael@0 | 84 | not the layout or presentation hacks. Most hacks are intriduced for HTML |
michael@0 | 85 | syntax error recovering. HTML doesn't specify much how to handle those |
michael@0 | 86 | error conditions. Netscape has made big effort to render pages with non-prefect |
michael@0 | 87 | HTML. For many reasons, new browsers need to keep compatible in thsi area. |
michael@0 | 88 | <UL> |
michael@0 | 89 | <LI> |
michael@0 | 90 | Entities can be used as escape in quoted string. For value string in name-value |
michael@0 | 91 | pair, see <A HREF="../testhtml/quote001.html">compatibility test |
michael@0 | 92 | quote001.html</A>. Test line 70 shows that an entity quote at the begining |
michael@0 | 93 | means the value is NOT quoted. Test line 90 shows that if the value is |
michael@0 | 94 | started with a quote, then an entity quote does NOT terminate the value |
michael@0 | 95 | string.</LI> |
michael@0 | 96 | |
michael@0 | 97 | <LI> |
michael@0 | 98 | Wrapping tags are special tags such as title, textarea, server, script, |
michael@0 | 99 | style, and etc.. The comment in ns\lib\libparse\pa_parse.c says:</LI> |
michael@0 | 100 | |
michael@0 | 101 | <BR> /* |
michael@0 | 102 | <BR> * These tags are special in that, after opening one of |
michael@0 | 103 | them, all other tags are ignored until the matching |
michael@0 | 104 | <BR> * closing tag. |
michael@0 | 105 | <BR> */ |
michael@0 | 106 | <BR>During the searching of an end tag, comments and quoted strings are |
michael@0 | 107 | observed. see <A HREF="../testhtml/title01.html">compatibility test title01.html</A>. |
michael@0 | 108 | 6.0 handles comments now, need to add quoted string. |
michael@0 | 109 | <LI> |
michael@0 | 110 | If a <tr> or <td> tag is seen outside any <table> scope, it is |
michael@0 | 111 | ignored. see <A HREF="../testhtml/table110.htm">compatibility test table110.htm</A>.</LI> |
michael@0 | 112 | |
michael@0 | 113 | <LI> |
michael@0 | 114 | <FONT COLOR="#000000">In case of table in table but not in cell, table |
michael@0 | 115 | tags before the last table tag are ignored. We found this problem in some |
michael@0 | 116 | Netscape public pages, see bug #85118. For example, <table> <table |
michael@0 | 117 | border> .....,or <table> <tr> <table border>..., the table |
michael@0 | 118 | will be displayed with border. </FONT> <A HREF="../testhtml/table201.html">compatibility |
michael@0 | 119 | test table201.html</A>. There table and tr tags are buffered for this recovery. |
michael@0 | 120 | When a TD or CAPTION tag is open, the buffer is flushed out, because we |
michael@0 | 121 | cannot buffer contents of TD or CAPTION for performance and memory constrains. |
michael@0 | 122 | They are subdoc's and can be very big. If we see a <table> outside cell |
michael@0 | 123 | after previous table is flushed out, the new <table> tag is ignored. |
michael@0 | 124 | Nav4.0 can discard previous table in such case. <A HREF="../testhtml/tableall.html">tableall.html |
michael@0 | 125 | </A>is the index for table test cases.</LI> |
michael@0 | 126 | |
michael@0 | 127 | <LI> |
michael@0 | 128 | Caption is not a commonly used feature. In Nav4.0, captions can be anywhere. |
michael@0 | 129 | For Captions outside cells, the first one takes effect. For captions inside |
michael@0 | 130 | cells, the last one takes effect, and they also close TD and TR. In 6.0, |
michael@0 | 131 | caption is limited to the standard position: after <table>. Captions |
michael@0 | 132 | in other places are ignored, their contents are treated as text. See test |
michael@0 | 133 | case table05a.html to table05o.html.</LI> |
michael@0 | 134 | |
michael@0 | 135 | <LI> |
michael@0 | 136 | <FONT COLOR="#000000">For <table> <tr> <tr>, the first <tr> |
michael@0 | 137 | takes effect.</FONT></LI> |
michael@0 | 138 | |
michael@0 | 139 | <LI> |
michael@0 | 140 | The nav4 parser notices when it hits EOF and it's in the middle of scanning |
michael@0 | 141 | in a comment. When this happens, the parser goes back and looks for an |
michael@0 | 142 | improperly closed comment (e.g. a simple > instead of a -->). If it finds |
michael@0 | 143 | one, it reparses the input after closing out the comment.</LI> |
michael@0 | 144 | |
michael@0 | 145 | <LI> |
michael@0 | 146 | <FONT COLOR="#FF0000">XXX Brendan also pointed out that there is something |
michael@0 | 147 | similar done for tags, but I don't recall what it is right now.</FONT></LI> |
michael@0 | 148 | |
michael@0 | 149 | <LI> |
michael@0 | 150 | <FONT COLOR="#000000">When Nav4.0 sees the '<' sign, it searchs for |
michael@0 | 151 | '>', observing quoted values. If it cannot find one till EOF, the '<' |
michael@0 | 152 | sign is treated as text. In Xena 6.0, a limit is set for how far the '>' |
michael@0 | 153 | is searched. the default limit is 4096 char, and there is a API HTMLScanner.setMaxTagLength() |
michael@0 | 154 | to changed it. setting -1 means no limit, which is same as Nav4.0.</FONT></LI> |
michael@0 | 155 | </UL> |
michael@0 | 156 | <FONT COLOR="#FF0000">TODO:</FONT> |
michael@0 | 157 | <UL><FONT COLOR="#FF0000">Document the mapping of tag attributes into CSS1 |
michael@0 | 158 | style, including any new "css1" attributes</FONT> |
michael@0 | 159 | <BR> </UL> |
michael@0 | 160 | <B>List of 6.0 features incompatible with 4.0</B> |
michael@0 | 161 | <UL> |
michael@0 | 162 | <LI> |
michael@0 | 163 | Navigator 4.0 value string is truncated at 82 characters. XENA60 limit |
michael@0 | 164 | is MAX_STRING_LENGTH = 2000.</LI> |
michael@0 | 165 | |
michael@0 | 166 | <BR> </UL> |
michael@0 | 167 | |
michael@0 | 168 | <HR WIDTH="100%"> |
michael@0 | 169 | <H2> |
michael@0 | 170 | Tags (Categorically sorted)</H2> |
michael@0 | 171 | All line breaks are conditional. If the x coordinate is at the current |
michael@0 | 172 | left margin then a soft line break does nothing. Hard line breaks are ignored |
michael@0 | 173 | if the last tag did a hard line break. |
michael@0 | 174 | |
michael@0 | 175 | <P><B>divalign</B> = left | right | center | justify |
michael@0 | 176 | <BR><B>alignparam</B> = abscenter | left | right | texttop | absbottom |
michael@0 | 177 | | baseline | center | bottom | top | middle | absmiddle |
michael@0 | 178 | <BR><B>colorspec</B> = named-color | #xyz | #xxyyzz | #xxxyyyzzz | #xxxxyyyyzzzz |
michael@0 | 179 | <BR><B>clip</B> = [auto | value-or-pct-xy](1..4) (pct of width for even |
michael@0 | 180 | coordinates; pct of height for odd coordinates) |
michael@0 | 181 | <BR><B>value-or-pct = </B>an integer with an optional %; ifthe percent |
michael@0 | 182 | is present any following characters are ignored! |
michael@0 | 183 | <BR><B>coord-list</B> = <FONT COLOR="#DD0000">XXX</FONT> |
michael@0 | 184 | <BR><FONT COLOR="#000000"><B>whitespace-strip</B> = remove leading and |
michael@0 | 185 | trailing and any embedded whitespace that is not an actual space (e.g. |
michael@0 | 186 | newlines)</FONT> |
michael@0 | 187 | <H1> |
michael@0 | 188 | Head objects:</H1> |
michael@0 | 189 | <B>TITLE</B> |
michael@0 | 190 | <UL>The TITLE tag is a container tag whose contents are not HTML. The contents |
michael@0 | 191 | are pure text and are processed by the parser until the closing tag is |
michael@0 | 192 | found. There are no attributes on the tag and any whitespace present in |
michael@0 | 193 | the tag is compressed down with leading and trailing whitespace eliminated. |
michael@0 | 194 | The first TITLE tag found by the parser is used as the document's title |
michael@0 | 195 | (subsequent tags are ignored).</UL> |
michael@0 | 196 | <B>BASE</B> |
michael@0 | 197 | <UL>Sets the base element in the head portion of the document. Defines |
michael@0 | 198 | the base URL for <FONT COLOR="#DD0000">all</FONT>? links in the document. |
michael@0 | 199 | <BR>Attributes: |
michael@0 | 200 | <UL><B>HREF</B>=url [This is an absolute URL] |
michael@0 | 201 | <BR><B>TARGET</B>=string [must start with XP_ALPHA|XP_DIGIT|underscore |
michael@0 | 202 | otherwise nav4 ignores it]</UL> |
michael@0 | 203 | </UL> |
michael@0 | 204 | <B>META</B> |
michael@0 | 205 | <UL>Can define several header fields (content-encoding, author, etc.) |
michael@0 | 206 | <BR>Attributes: |
michael@0 | 207 | <UL><B>REL</B>=SMALL_BOOKMARK_ICON|LARGE_BOOKMARK_ICON |
michael@0 | 208 | <UL><B>SRC</B>=string</UL> |
michael@0 | 209 | <B>HTTP-EQUIV</B>="header: value" |
michael@0 | 210 | <UL><B>CONTENT</B>=string</UL> |
michael@0 | 211 | </UL> |
michael@0 | 212 | HTTP-EQUIV values (from libnet/mkutils.c NET_ParseMimeHeader): |
michael@0 | 213 | <UL>ACCEPT-RANGES |
michael@0 | 214 | <BR>CONTENT-DISPOSITION |
michael@0 | 215 | <BR>CONTENT-ENCODING |
michael@0 | 216 | <BR>CONTENT-RANGE |
michael@0 | 217 | <BR>CONTENT-TYPE [ defines character set only ] |
michael@0 | 218 | <BR>CONNECTION |
michael@0 | 219 | <BR>DATE |
michael@0 | 220 | <BR>EXPIRES |
michael@0 | 221 | <BR>EXT-CACHE |
michael@0 | 222 | <BR>LOCATION |
michael@0 | 223 | <BR>LAST-MODIFIED |
michael@0 | 224 | <BR>LINK |
michael@0 | 225 | <BR>PROXY-AUTHENTICATE |
michael@0 | 226 | <BR>PROXY-CONNECTION |
michael@0 | 227 | <BR>PRAGMA |
michael@0 | 228 | <BR>RANGE |
michael@0 | 229 | <BR>REFRESH |
michael@0 | 230 | <BR>SET-COOKIE |
michael@0 | 231 | <BR>SERVER |
michael@0 | 232 | <BR>WWW-AUTHENTICATE |
michael@0 | 233 | <BR>WWW-PROTECTION-TEMPLATE |
michael@0 | 234 | <BR>WINDOW-TARGET</UL> |
michael@0 | 235 | Style sheets and HTML w3c spec adds this: |
michael@0 | 236 | <UL>CONTENT-STYLE-TYPE [ last one wins; overrides header from server if |
michael@0 | 237 | any ]</UL> |
michael@0 | 238 | </UL> |
michael@0 | 239 | <B>LINK</B> |
michael@0 | 240 | <UL>List related resources. Used by extensions mechanism to find tag handlers. |
michael@0 | 241 | <FONT COLOR="#0000FF">/LINK == LINK!</FONT> |
michael@0 | 242 | <BR>Attributes: |
michael@0 | 243 | <UL><B>REL</B>=FONTDEF |
michael@0 | 244 | <UL><B>SRC</B>=url</UL> |
michael@0 | 245 | <B>REL</B>=STYLESHEET [ If MEDIA param is defined it must ==nc screen ] |
michael@0 | 246 | <UL><B>LANGUAGE</B>=LiveScript|Mocha|JavaScript1.1|JavaScript1.2 |
michael@0 | 247 | <BR><B>TYPE</B>="text/javascript" | "text/css" |
michael@0 | 248 | <BR><B>HREF</B>=url |
michael@0 | 249 | <BR><B>ARCHIVE</B>=url |
michael@0 | 250 | <BR><B>CODEBASE</B>=url |
michael@0 | 251 | <BR><B>ID</B>=string |
michael@0 | 252 | <BR><B>SRC</B>=url</UL> |
michael@0 | 253 | </UL> |
michael@0 | 254 | Note: HREF takes precedence over SRC in nav4.</UL> |
michael@0 | 255 | <B>HEAD</B> |
michael@0 | 256 | <UL>/HEAD clears the "in_head" flag (but leaves the "in_body" flag alone. |
michael@0 | 257 | <BR>Text in head clears in_head, and set in_body true, just as if the author |
michael@0 | 258 | forgot the /HEAD tag. |
michael@0 | 259 | <BR>Attributes: none</UL> |
michael@0 | 260 | <B>HTML</B> |
michael@0 | 261 | <UL>Ignored. |
michael@0 | 262 | <BR>Attributes: none</UL> |
michael@0 | 263 | <B>STYLE</B> |
michael@0 | 264 | <UL>Allowed anywhere in the document. Note that entities are not parsed |
michael@0 | 265 | in the style tag's content. |
michael@0 | 266 | <BR>Attributes: |
michael@0 | 267 | <UL><B>LANGUAGE</B>=LiveScript|Mocha|JavaScript1.1|JavaScript1.2 |
michael@0 | 268 | <BR><B>TYPE</B>="text/javascript" | "text/css" |
michael@0 | 269 | <BR><B>HREF</B>=url |
michael@0 | 270 | <BR><B>ARCHIVE</B>=url |
michael@0 | 271 | <BR><B>CODEBASE</B>=url |
michael@0 | 272 | <BR><B>ID</B>=string |
michael@0 | 273 | <BR><B>SRC</B>=url</UL> |
michael@0 | 274 | </UL> |
michael@0 | 275 | <B>FRAMESET</B> |
michael@0 | 276 | <UL>Frameset with rows=1 and cols=1 is ignored. |
michael@0 | 277 | <BR>Attributes: |
michael@0 | 278 | <UL><B>FRAMEBORDER</B>= no | 0 (zero) [default is no_edges=false] |
michael@0 | 279 | <BR><B>BORDER</B>= int [clamped: >= 0 && <= 100] |
michael@0 | 280 | <BR><B>BORDERCOLOR</B>= color |
michael@0 | 281 | <BR><B>ROWS</B>= pct-list |
michael@0 | 282 | <BR><B>COLS</B>= pct-list</UL> |
michael@0 | 283 | </UL> |
michael@0 | 284 | <B>FRAME</B> |
michael@0 | 285 | <UL>Border width of zero disables edges. |
michael@0 | 286 | <BR>Attributes: |
michael@0 | 287 | <UL><B>FRAMEBORDER</B>= no | 0 (zero) [default is framesets value] |
michael@0 | 288 | <BR><B>BORDER</B>= int [clamped; >= 0 && <= 100] |
michael@0 | 289 | <BR><B>BORDERCOLOR</B>= color |
michael@0 | 290 | <BR><B>NORESIZE</B>= true [default is false] |
michael@0 | 291 | <BR><B>SCROLLING</B>= yes | scroll | on | no | noscroll | off |
michael@0 | 292 | <BR><B>SRC</B>= url [clamped: prevent recursion by eliminating any anscestor |
michael@0 | 293 | references] |
michael@0 | 294 | <BR><B>NAME</B>= string |
michael@0 | 295 | <BR><B>MARGINWIDTH</B>= int (clamped: >= 1) |
michael@0 | 296 | <BR><B>MARGINHEIGHT</B>= int (clamped: >= 1)</UL> |
michael@0 | 297 | </UL> |
michael@0 | 298 | <B>NOFRAMES</B> |
michael@0 | 299 | <UL>Used when frames are disabled or for backrev browsers. Has no stylistic |
michael@0 | 300 | consequences.</UL> |
michael@0 | 301 | |
michael@0 | 302 | <H1> |
michael@0 | 303 | |
michael@0 | 304 | <HR WIDTH="100%">Body objects:</H1> |
michael@0 | 305 | <B>BODY</B> |
michael@0 | 306 | <UL>The tag is only processed on open tags and it is always processed. |
michael@0 | 307 | See ns\lib\layout\laytags.c, searching for "case P_BODY". During tag processing |
michael@0 | 308 | the in_head flag is set to false and the in_body flag is set to true. An |
michael@0 | 309 | attribute is ignored if the document already has that attribute set. Attributes |
michael@0 | 310 | can be set by style sheets, or by previous BODY tags. see <A HREF="../testhtml/head02.html">test |
michael@0 | 311 | head02.html</A>. |
michael@0 | 312 | <BR>Attributes: |
michael@0 | 313 | <UL><B>MARGINWIDTH</B>=int [clamped: >= 0 && < (windowWidth/2 |
michael@0 | 314 | - 1)] |
michael@0 | 315 | <BR><B>MARGINHEIGHT</B>=int [clamped: >= 0 && < (windowHeight/2 |
michael@0 | 316 | - 1)] |
michael@0 | 317 | <BR><B>BACKGROUND</B>=url |
michael@0 | 318 | <BR><B>BGCOLOR</B>=colorspec |
michael@0 | 319 | <BR><B>TEXT</B>=colorspec |
michael@0 | 320 | <BR><B>LINK</B>=colorspec |
michael@0 | 321 | <BR><B>VLINK</B>=colorspec |
michael@0 | 322 | <BR><B>ALINK</B>=colorspec |
michael@0 | 323 | <BR><B>ONLOAD, ONUNLOAD, UNFOCUS, ONBLUR, ONHELP</B>=script |
michael@0 | 324 | <BR><B>ID</B>=string</UL> |
michael@0 | 325 | </UL> |
michael@0 | 326 | <B>LAYER, ILAYER</B> |
michael@0 | 327 | <UL>Open layer/ilayer tag automaticly close out an open form if one is |
michael@0 | 328 | open. It does something to the soft linebreak state too. |
michael@0 | 329 | <BR>Attributes: |
michael@0 | 330 | <UL><B>LEFT</B>=value-or-pct (pct of <TT>right-left</TT> margin) |
michael@0 | 331 | <BR><B>PAGEX</B>=x (if no LEFT) |
michael@0 | 332 | <BR><B>TOP</B>=value-or-pct |
michael@0 | 333 | <BR><B>PAGEY</B>=y (if no TOP) |
michael@0 | 334 | <BR><B>CLIP</B>=clip |
michael@0 | 335 | <BR><B>WIDTH</B>=value-or-pct (pct of <TT>right-left</TT> margin) |
michael@0 | 336 | <BR><B>HEIGHT</B>=value-or-pct |
michael@0 | 337 | <BR><B>OVERFLOW</B>=string |
michael@0 | 338 | <BR><B>NAME</B>=string |
michael@0 | 339 | <BR><B>ID</B>=string |
michael@0 | 340 | <BR><B>ABOVE</B>=string |
michael@0 | 341 | <BR><B>BELOW</B>=string |
michael@0 | 342 | <BR><B>ZINDEX</B>=int [any value] |
michael@0 | 343 | <BR><B>VISIBILITY</B>=string |
michael@0 | 344 | <BR><B>BGCOLOR</B>=colorspec |
michael@0 | 345 | <BR><B>BACKGROUND</B>=url</UL> |
michael@0 | 346 | </UL> |
michael@0 | 347 | <B>NOLAYER</B> |
michael@0 | 348 | <UL>Container for content which is used when layers are disabled or unsupported. |
michael@0 | 349 | The content has no style consequences (though it could if somebody stuck |
michael@0 | 350 | in some CSS1 style rules for it).</UL> |
michael@0 | 351 | <B>P</B> |
michael@0 | 352 | <UL>Closes the paragraph. If the attribute is present then an alignment |
michael@0 | 353 | gets pushed on the alignment stack. All values are supported by nav4. |
michael@0 | 354 | <BR>Attributes: |
michael@0 | 355 | <UL><B>ALIGN</B>=divalign</UL> |
michael@0 | 356 | </UL> |
michael@0 | 357 | <B>ADDRESS</B> |
michael@0 | 358 | <UL>There are no attributes. ADDRESS closes out the open paragraph. The |
michael@0 | 359 | open tag does a conditional soft line break and then pushes a merge of |
michael@0 | 360 | the current style with italics enabled onto the style stack. The close |
michael@0 | 361 | always pop the style stack and also does a conditional soft line break.</UL> |
michael@0 | 362 | <B>PLAINTEXT, XMP</B> |
michael@0 | 363 | <UL>PLAINTEXT causes the remaining content to no longer be parsed. XMP |
michael@0 | 364 | causes the content to not parse entities or other tags. The XMP can be |
michael@0 | 365 | closed by it's own tag (on any boundary); PLAINTEXT is not closed (html3.2 |
michael@0 | 366 | allows it to be closed). Both tags change the style to a fixed font of |
michael@0 | 367 | a</UL> |
michael@0 | 368 | <B>LISTING</B> |
michael@0 | 369 | <UL>Closes the paragraph. Does a hard line break on open and close. Open |
michael@0 | 370 | pushes a fixed width font style of a particular font size on the style |
michael@0 | 371 | stack. The close tag pops the top of the style stack. |
michael@0 | 372 | <BR>Attributes: none</UL> |
michael@0 | 373 | <B>PRE</B> |
michael@0 | 374 | <UL>Closes the paragraph. The open tag does a hard line break. A fixed |
michael@0 | 375 | font style (unless VARIABLE is present) is pushed on the style stack. The |
michael@0 | 376 | close tag pops the top of the style stack. It also does a hard line break. |
michael@0 | 377 | <BR>Attributes: |
michael@0 | 378 | <UL><B>WRAP</B> |
michael@0 | 379 | <BR><B>COLS</B>=int [clamped: >= 0] |
michael@0 | 380 | <BR><B>TABSTOP</B>=int [clamped: >= 0; clamped value is replaced with default |
michael@0 | 381 | value] |
michael@0 | 382 | <BR><B>VARIABLE</B></UL> |
michael@0 | 383 | </UL> |
michael@0 | 384 | <B>NOBR</B> |
michael@0 | 385 | <UL>This tag doesn't nest. Instead it just sets or clears a flag in the |
michael@0 | 386 | state machine. It has no effect on any other state.</UL> |
michael@0 | 387 | <B>CENTER</B> |
michael@0 | 388 | <UL>Closes the paragraph. Always does a conditional soft line break. The |
michael@0 | 389 | open tag pushes an alignment on the aligment stack. The close tag pops |
michael@0 | 390 | the top alignment off. |
michael@0 | 391 | <BR>Attributes: none</UL> |
michael@0 | 392 | <B>DIV</B> |
michael@0 | 393 | <UL>Closes the paragraph. Always does a conditional soft line break. COLS |
michael@0 | 394 | defines the number of columns to layout in (like MULTICOL). The open tag |
michael@0 | 395 | pushes an alignment on the alignment stack (if COLS > 1 then it pretends |
michael@0 | 396 | to be a MULTICOL tag). The close tag pops an aligment from the alignment |
michael@0 | 397 | stack. |
michael@0 | 398 | <BR>Attributes: |
michael@0 | 399 | <UL><B>ALIGN</B>=divalign |
michael@0 | 400 | <BR><B>COLS</B>=int [if cols > 1 then DIV acts like a MULTICOL tag else |
michael@0 | 401 | DIV is just a container] |
michael@0 | 402 | <UL><B>GUTTER</B>= int (clamped: >= 1) |
michael@0 | 403 | <BR><B>WIDTH</B>= value-or-pct [pct of right-left margin; clamped >= 1/0 |
michael@0 | 404 | (strange code)]</UL> |
michael@0 | 405 | </UL> |
michael@0 | 406 | </UL> |
michael@0 | 407 | <B>H1-H6</B> |
michael@0 | 408 | <UL>Closes the paragraph. The open tag does a hard line break and pushes |
michael@0 | 409 | a style item which enables bold and disables fixed and italic. The close |
michael@0 | 410 | tag always pops the top item from the style stack. It also does a hard |
michael@0 | 411 | line break. If the <B>ALIGN</B> attribute is present then the open tag |
michael@0 | 412 | pushes an alignment on the alignment stack. The close tag will look at |
michael@0 | 413 | the top of the alignment stack and if its a header of any kind (H1 through |
michael@0 | 414 | H6) then the alignment is popped. In either case the close tag also does |
michael@0 | 415 | a conditional soft line break (this happens before the hard line break). |
michael@0 | 416 | <BR>Attributes: |
michael@0 | 417 | <UL><B>ALIGN</B>=divalign</UL> |
michael@0 | 418 | </UL> |
michael@0 | 419 | A note regarding closing paragraphs: Any time a close paragraph is done |
michael@0 | 420 | (for any tag) if the top of the alignment stack has a tag named "P" then |
michael@0 | 421 | a conditional soft line break is done and the alignment is popped. |
michael@0 | 422 | <H3> |
michael@0 | 423 | |
michael@0 | 424 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 425 | <B>TABLE</B> |
michael@0 | 426 | <UL>Close the paragraph. |
michael@0 | 427 | <BR>Attributes: |
michael@0 | 428 | <UL><B>ALIGN=</B>left|right|center|abscenter |
michael@0 | 429 | <BR><B>BORDER</B>=int [clamped: if null then -1, if < 1 then 1 ] |
michael@0 | 430 | <BR><B>BORDERCOLOR</B>=string [if not supplied then set to the text color |
michael@0 | 431 | ] |
michael@0 | 432 | <BR><B>VSPACE</B>=int [ clamped: >= 0 ] |
michael@0 | 433 | <BR><B>HSPACE</B>=int [ clamped: >= 0 ] |
michael@0 | 434 | <BR><B>BGCOLOR</B>=color |
michael@0 | 435 | <BR><B>BACKGROUND</B>=url |
michael@0 | 436 | <BR><B>WIDTH</B>=value-or-pct [ % of win.width minus margins; clamped: |
michael@0 | 437 | >= 0 ] |
michael@0 | 438 | <BR><B>HEIGHT</B>=value-or-pct [ % of win.height minus margins; clamped: |
michael@0 | 439 | >= 0 ] |
michael@0 | 440 | <BR><B>CELLPADDING</B>=int [clamped: >= 0; separate pads take precedence |
michael@0 | 441 | ] |
michael@0 | 442 | <BR><B>TOPPADDING</B>= int [clamped: >= 0 ] |
michael@0 | 443 | <BR><B>BOTTOMPADDING</B>= int [clamped: >= 0 ] |
michael@0 | 444 | <BR><B>LEFTPADDING</B>= int [clamped: >= 0 ] |
michael@0 | 445 | <BR><B>RIGHTPADDING</B>= int [clamped: >= 0 ] |
michael@0 | 446 | <BR><B>CELLSPACING</B>= int [clamped: >= 0 ] |
michael@0 | 447 | <BR><B>COLS</B>=int [clamped: >= 0]</UL> |
michael@0 | 448 | The code supports more attributes in the Table attribute handler than it |
michael@0 | 449 | does in the code that gets the attributes from the tag! They are border_top, |
michael@0 | 450 | border_left, border_right, border_bottom, border_style (defaults to outset; |
michael@0 | 451 | allows for outset/dotted/none/dashed/solid/double/groove/ridge/inset).</UL> |
michael@0 | 452 | <B>TR</B> |
michael@0 | 453 | <UL>Open TR automatically closes an open table row (and an open table cell |
michael@0 | 454 | if one is open). It also automatically closes a CAPTION tag. |
michael@0 | 455 | <BR>Attributes: |
michael@0 | 456 | <UL><B>BGCOLOR</B>=color |
michael@0 | 457 | <BR><B>BACKGROUND</B>=url |
michael@0 | 458 | <BR><B>VALIGN</B>=top|bottom|middle|center(==middle)|baseline; default |
michael@0 | 459 | is top |
michael@0 | 460 | <BR><B>ALIGN</B>=left|right|middle|center(==middle); default is left</UL> |
michael@0 | 461 | </UL> |
michael@0 | 462 | <B>TH, TD</B> |
michael@0 | 463 | <UL>If no table then the tag is ignored (open or close). If no row is currently |
michael@0 | 464 | opened or the current row is current done (because of a </TR> tag) then |
michael@0 | 465 | a new row is begun. Oddly enough the tag parameters for the row come from |
michael@0 | 466 | the TH/TD tag in this case. An open of either of these tags will automatically |
michael@0 | 467 | close the previous cell. |
michael@0 | 468 | <BR>Attributes: |
michael@0 | 469 | <UL><B>COLSPAN</B>=int [clamped: >= 1 && <= 1000 ] |
michael@0 | 470 | <BR><B>ROWSPAN</B>=int [clamped: >= 1 && <= 10000 ] |
michael@0 | 471 | <BR><B>NOWRAP</B> [boolean: disables wrapping ] |
michael@0 | 472 | <BR><B>BGCOLOR</B>=color [default: inherit from the row; if not row then |
michael@0 | 473 | table; if not table then inherit from an outer table cell; this works because |
michael@0 | 474 | the style is flattened so the outer table cell will have a color] |
michael@0 | 475 | <BR><B>BACKGROUND</B>=url [same rules as bgcolor for inheritance; tile |
michael@0 | 476 | mode is inherited too and not settable by TH/TD attributes (have to use |
michael@0 | 477 | style sheets for that)] |
michael@0 | 478 | <BR><B>VALIGN</B>=top|bottom|middle|center(==middle)|baseline; default |
michael@0 | 479 | is top |
michael@0 | 480 | <BR><B>ALIGN</B>=left|right|middle|center(==middle); default is left |
michael@0 | 481 | <BR><B>WIDTH</B>=value-or-pct [ clamped: >= 0 ] |
michael@0 | 482 | <BR><B>HEIGHT</B>=value-or-pct [ clamped: >= 0 ]</UL> |
michael@0 | 483 | </UL> |
michael@0 | 484 | <B>CAPTION</B> |
michael@0 | 485 | <UL>An open caption tag will automatically close an open table row (and |
michael@0 | 486 | an open cell). |
michael@0 | 487 | <BR>Attributes: |
michael@0 | 488 | <UL><B>ALIGN</B>=bottom</UL> |
michael@0 | 489 | The code sets the vertical alignment to top w/o providing a mechanism for |
michael@0 | 490 | the user to set it (there is no VALIGN attribute).</UL> |
michael@0 | 491 | <B>MULTICOL</B> |
michael@0 | 492 | <UL>The open tag does a hard line break. The close tag checks to see if |
michael@0 | 493 | the state machine has an open multicol and if it does then it does a conditional |
michael@0 | 494 | soft line break and then continues to break until both margins are cleared |
michael@0 | 495 | of floating elements. It recomputes the margins based on the list indenting |
michael@0 | 496 | level (?). After the synthetic table is output the close tag does a hard |
michael@0 | 497 | line break. |
michael@0 | 498 | |
michael@0 | 499 | <P>This tag will treat the input as source for a table with one row and |
michael@0 | 500 | COLS columns. The data is laid out using the width divided by the number |
michael@0 | 501 | of columns. After the total height is known, the content is partitioned |
michael@0 | 502 | as evenly as possible between the columns in the table. |
michael@0 | 503 | <BR>Attributes: |
michael@0 | 504 | <UL><B>COLS</B>=int [clamped: values less than 2 cause the tag to be ignored] |
michael@0 | 505 | <BR><B>GUTTER</B>=int [clamped: >= 1] |
michael@0 | 506 | <BR><B>WIDTH</B>=value-or-pct [pct of right-left margin; clamped: >= 1/0 |
michael@0 | 507 | (strange code)]</UL> |
michael@0 | 508 | </UL> |
michael@0 | 509 | |
michael@0 | 510 | <H3> |
michael@0 | 511 | |
michael@0 | 512 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 513 | <B>BLOCKQUOTE</B> |
michael@0 | 514 | <UL>Closes the paragraph. The open tag does a hard line break. A list with |
michael@0 | 515 | the empty-bullet style is pushed on the list stack (unless TYPE=cite/jwz |
michael@0 | 516 | then a styled list is pushed). The close tag pops any list and does a hard |
michael@0 | 517 | line break. |
michael@0 | 518 | <BR>Attributes: |
michael@0 | 519 | <UL><B>TYPE</B>=cite | jwz</UL> |
michael@0 | 520 | </UL> |
michael@0 | 521 | <B>UL, OL, MENU, DIR</B> |
michael@0 | 522 | <UL>For top-level lists (lists not in lists) a hard break is done on the |
michael@0 | 523 | open tag, otherwise a conditional-soft-break is done. Tag always does a |
michael@0 | 524 | close paragrah. The close tag does a conditional soft line break when nested; |
michael@0 | 525 | when not nested the close tag does a hard line break (even if no list is |
michael@0 | 526 | open). The open tag pushes the list on the list stack. The close tag pops |
michael@0 | 527 | any list off the list stack. |
michael@0 | 528 | <BR>Attributes: |
michael@0 | 529 | <UL><B>TYPE</B>= none | disc | circle | round | square | decimal | lower-roman |
michael@0 | 530 | | upper-roman | lower-alpha | upper-alpha | A | a | I | i [clamped: if |
michael@0 | 531 | none of the above is picked and OL then the bullet type is "number" otherwise |
michael@0 | 532 | the bullet type is "basic"] |
michael@0 | 533 | <BR><B>START</B>=int [clamped: >= 1] |
michael@0 | 534 | <BR><B>COMPACT</B></UL> |
michael@0 | 535 | </UL> |
michael@0 | 536 | <B>DL</B> |
michael@0 | 537 | <UL>Closes the paragraph. For the open tag, if the list is nested then |
michael@0 | 538 | a conditional soft line break is done otherwise a hard line break is done. |
michael@0 | 539 | The open tag pushes a list on the list stack. The close tag pops any list |
michael@0 | 540 | from the list stack. Closing the list acts like other lists closes. |
michael@0 | 541 | <BR>Attributes: |
michael@0 | 542 | <UL><B>COMPACT</B></UL> |
michael@0 | 543 | </UL> |
michael@0 | 544 | <B>LI</B> |
michael@0 | 545 | <UL>Closes the paragraph. The open tag does a conditional soft line break. |
michael@0 | 546 | Close tags are ignored (except for closing the paragraph). |
michael@0 | 547 | <BR>Attributes: |
michael@0 | 548 | <UL><B>TYPE</B>= A | a | I | i (if the containing list is an <B>OL</B>) |
michael@0 | 549 | <BR><B>TYPE</B>= round | circle | square (if the containing list is not |
michael@0 | 550 | <B>OL</B> and not <B>DL</B>) |
michael@0 | 551 | <BR><B>VALUE</B>=int [clamped: >= 1]</UL> |
michael@0 | 552 | The magellan html parser allows the full set of list item styles from the |
michael@0 | 553 | OL/DL tag instead of just the limited set that nav4 allows.</UL> |
michael@0 | 554 | <B>DD</B> |
michael@0 | 555 | <UL>Closes the paragraph. Close tags are ignored (except for closing the |
michael@0 | 556 | paragraph). DD outside a DL just advances the X coordinate of layout by |
michael@0 | 557 | a small constant. DD inside a DL does a conditional soft line break and |
michael@0 | 558 | other margin crud. |
michael@0 | 559 | <BR>Attributes: none.</UL> |
michael@0 | 560 | <B>DT</B> |
michael@0 | 561 | <UL>Closes the paragraph (open or close). Close tags are otherwise ignored. |
michael@0 | 562 | Does a conditional soft line break. Moves the X layout coordinate to the |
michael@0 | 563 | left margin. |
michael@0 | 564 | <BR>Attributes: none</UL> |
michael@0 | 565 | |
michael@0 | 566 | <H3> |
michael@0 | 567 | |
michael@0 | 568 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 569 | <B>A</B> |
michael@0 | 570 | <UL>Open anchors push a style on the style stack if the anchor has an <B>HREF</B>. |
michael@0 | 571 | Close anchors pop as many styles off the top of the style stack that are |
michael@0 | 572 | anchor tags (anchor tags don't nest in other words). In addition, any styles |
michael@0 | 573 | on the stack that have the ANCHOR bit set have it cleared and fiddle with |
michael@0 | 574 | the foreground and background colors. |
michael@0 | 575 | <BR>Attributes: |
michael@0 | 576 | <UL><B>NAME</B>=string |
michael@0 | 577 | <BR><B>HREF</B>=url |
michael@0 | 578 | <UL><B>TARGET</B>=target |
michael@0 | 579 | <BR><B>SUPPRESS</B>=true</UL> |
michael@0 | 580 | </UL> |
michael@0 | 581 | </UL> |
michael@0 | 582 | <B>STRIKE, S, TT, CODE, SAMPLE, KBD, B, STRONG, I, EM, VAR, CITE, BLINK, |
michael@0 | 583 | BIG, SMALL, U, INLINEINPUT, SPELL</B> |
michael@0 | 584 | <UL>The open tag pushes onto the style stack. The close tag always pops |
michael@0 | 585 | the top item from the style stack. |
michael@0 | 586 | <BR>Attributes: none</UL> |
michael@0 | 587 | <B>SUP, SUB</B> |
michael@0 | 588 | <UL>The open tag pushes a font size descrease on the style stack. The close |
michael@0 | 589 | tag always pops the top of the style stack. The open and close tag impacts |
michael@0 | 590 | the baselineThe only difference between SUP and SUB is how they impact |
michael@0 | 591 | the baseline. Note that the baseline information is forgotten after a line |
michael@0 | 592 | break; therefore a close SUP/SUB on the next line will do strange things. |
michael@0 | 593 | <BR>Attributes: none</UL> |
michael@0 | 594 | <B>SPAN</B> |
michael@0 | 595 | <UL>Ignored by the navigator. |
michael@0 | 596 | <BR>Attributes: none</UL> |
michael@0 | 597 | <B>FONT</B> |
michael@0 | 598 | <UL>The open font tag with no attributes resets the font size to the base |
michael@0 | 599 | font size. The open tag always pushes a style stack entry. The close tag |
michael@0 | 600 | always pops the top item off the style stack. |
michael@0 | 601 | <BR>Attributes: |
michael@0 | 602 | <UL><B>SIZE</B>=[+ int | - int | int ] [clamped: >=1 && <= |
michael@0 | 603 | 7] |
michael@0 | 604 | <BR><B>POINT-SIZE=</B>[+ int | - int | int ] [clamped: >= 1 && |
michael@0 | 605 | <= 1600] |
michael@0 | 606 | <BR><B>FONT-WEIGHT</B>=[+ int | - int | int ] [clamped: >= 100 && |
michael@0 | 607 | <= 900] |
michael@0 | 608 | <BR><B>COLOR</B>=colorspec |
michael@0 | 609 | <BR><B>FACE</B>=string</UL> |
michael@0 | 610 | </UL> |
michael@0 | 611 | A note regarding the style stack: The pop of the stack checks to see if |
michael@0 | 612 | the top of the stack is an ANCHOR tag. If it is not an anchor then the |
michael@0 | 613 | top item is unconditionally popped. If the top of the style stack is an |
michael@0 | 614 | anchor tag then the code searches for either the bottom of the stack or |
michael@0 | 615 | the first style stack entry not created by an anchor tag. If the entry |
michael@0 | 616 | is followed by another entry then the entry is removed from the stack (an |
michael@0 | 617 | out-of-order pop in other words). In this case the anchor style stack entry |
michael@0 | 618 | is left untouched. |
michael@0 | 619 | <H3> |
michael@0 | 620 | |
michael@0 | 621 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 622 | <B>text, entities</B> |
michael@0 | 623 | <UL>These are basic content objects that get fed directly to the output. |
michael@0 | 624 | In navigator the text is processed by doing line-breaking (entities have |
michael@0 | 625 | been converted to text already by the parser). The line-breaking is controlled |
michael@0 | 626 | by the margin settings and the list depth, the floating elements, the style |
michael@0 | 627 | attributes (font size, etc.), the preformatted flag, the no-break flag |
michael@0 | 628 | and so on.</UL> |
michael@0 | 629 | <B>IMG, IMAGE</B> |
michael@0 | 630 | <UL>Close tag is ignored. |
michael@0 | 631 | <BR>Attributes: |
michael@0 | 632 | <UL><B>ISMAP</B> |
michael@0 | 633 | <BR><B>USEMAP</B>=url |
michael@0 | 634 | <BR><B>ALIGN</B>=alignparam |
michael@0 | 635 | <BR><B>SRC</B>=url [ whitespace is stripped ] |
michael@0 | 636 | <BR><B>LOWSRC</B>=url |
michael@0 | 637 | <BR><B>ALT</B>=string |
michael@0 | 638 | <BR><B>WIDTH</B>=value-or-pct (pct of <TT>right-left</TT> width) |
michael@0 | 639 | <BR><B>HEIGHT</B>=value-or-pct (pct of window height) |
michael@0 | 640 | <BR><B>BORDER</B>=int [clamped: >= 0] |
michael@0 | 641 | <BR><B>VSPACE</B>=int [clamped: >= 0] |
michael@0 | 642 | <BR><B>HSPACE</B>=int [clamped: >= 0] |
michael@0 | 643 | <BR><B>SUPPRESS</B>=true | false (only in blocked image layout???)</UL> |
michael@0 | 644 | </UL> |
michael@0 | 645 | <B>HR</B> |
michael@0 | 646 | <UL>Closes the paragraph. If an open tag then does a conditional soft line |
michael@0 | 647 | break. The rule inherits alignment from the parent container unless there |
michael@0 | 648 | is no container (then it's centered) or if the tag defines it's own alignment. |
michael@0 | 649 | After the object is inserted into the layout stream a soft line break is |
michael@0 | 650 | inserted as well. |
michael@0 | 651 | <BR>Attributes: |
michael@0 | 652 | <UL><B>ALIGN</B>=divalign (sort of; in laytags.c it's divalign; in layhrule.c |
michael@0 | 653 | it's left or right only) |
michael@0 | 654 | <BR><B>SIZE</B>=int (1 to 100 inclusive) |
michael@0 | 655 | <BR><B>WIDTH</B>=val-or-pct (pct of <TT>right-left</TT> width) |
michael@0 | 656 | <BR><B>NOSHADE</B></UL> |
michael@0 | 657 | </UL> |
michael@0 | 658 | <B>BR</B> |
michael@0 | 659 | <UL>Does an unconditional soft break. If clear is set then it will also |
michael@0 | 660 | soft break until either the left or right or both margins are clear of |
michael@0 | 661 | floating elements. Note that<FONT COLOR="#0000FF"> /BR == BR!</FONT> |
michael@0 | 662 | <BR>Attributes: |
michael@0 | 663 | <UL><B>CLEAR</B>=left | right | all | both</UL> |
michael@0 | 664 | </UL> |
michael@0 | 665 | <B>WBR</B> |
michael@0 | 666 | <UL>Soft word break. |
michael@0 | 667 | <BR>Attributes: none</UL> |
michael@0 | 668 | <B>EMBED</B> |
michael@0 | 669 | <UL>Close tag does nothing. Embed's operate inline just like images (they |
michael@0 | 670 | don't close the paragraph). |
michael@0 | 671 | <BR>Attributes: |
michael@0 | 672 | <UL><B>HIDDEN</B>=no | false | off |
michael@0 | 673 | <BR><B>ALIGN</B>=alignparam |
michael@0 | 674 | <BR><B>SRC</B>=url |
michael@0 | 675 | <BR><B>WIDTH</B>=val-or-pct (pct of <TT>right-left</TT> width) |
michael@0 | 676 | <BR><B>HEIGHT</B>=val-of-pct; if val is < 1 (sometimes) the element |
michael@0 | 677 | gets HIDDEN automatically |
michael@0 | 678 | <BR><B>BORDER</B>=int (unsupported by navigator) |
michael@0 | 679 | <BR><B>VSPACE</B>=int [clamped: >= 0] |
michael@0 | 680 | <BR><B>HSPACE</B>=int [clamped: >= 0]</UL> |
michael@0 | 681 | </UL> |
michael@0 | 682 | <B>NOEBMED</B> |
michael@0 | 683 | <UL>Used when EMBED's are disabled. It is a container for regular content |
michael@0 | 684 | that has no stylistic consequences (no line breaking, no style stack effect, |
michael@0 | 685 | etc.).</UL> |
michael@0 | 686 | <B>APPLET</B> |
michael@0 | 687 | <UL>Applet tags don't nest (there is a notion of current_applet). The open |
michael@0 | 688 | tag automatically closes an open applet tag. |
michael@0 | 689 | <BR>Attributes: |
michael@0 | 690 | <UL><B>ALIGN</B>=alignparam |
michael@0 | 691 | <BR><B>CODE</B>=string |
michael@0 | 692 | <BR><B>CODEBASE</B>=string |
michael@0 | 693 | <BR><B>ARCHIVE</B>=string |
michael@0 | 694 | <BR><B>MAYSCRIPT</B> |
michael@0 | 695 | <BR><B>NAME</B>=string [clamped: white space is stripped out] |
michael@0 | 696 | <BR><B>WIDTH</B>=value-or-pct [pct of right-left width; clamped: >= 1] |
michael@0 | 697 | <BR><B>HEIGHT</B>=value-or-pct [pct of window height; clamped >= 1] |
michael@0 | 698 | <BR><B>BORDER</B>=int [clamped: >= 0] |
michael@0 | 699 | <BR><B>HSPACE</B>=int [clamped: >= 0] |
michael@0 | 700 | <BR><B>VSPACE</B>=int [clamped: >= 0]</UL> |
michael@0 | 701 | If no width is provided: |
michael@0 | 702 | <UL>if a height was provided, use the height. Otherwise, use 90% of the |
michael@0 | 703 | window width if percentage widths are allowed, otherwise use a value of |
michael@0 | 704 | 600. |
michael@0 | 705 | <BR> </UL> |
michael@0 | 706 | If no height is provided: |
michael@0 | 707 | <UL>if a width was provided, use the width. Otherwise, use 50% of the window |
michael@0 | 708 | height if percentage widths are allowed, otherwise use a value of 400.</UL> |
michael@0 | 709 | If the applet is hidden, then the widht/height get forced to zero.</UL> |
michael@0 | 710 | <B>PARAM</B> |
michael@0 | 711 | <UL>The param tag is supported when contained by the APPLET tag or the |
michael@0 | 712 | OBJECT tag. It has no stylistic consequences. The attribute values from |
michael@0 | 713 | the tag are passed to the containing APPLET or OBJECT. Note that <FONT COLOR="#0000FF">/PARAM |
michael@0 | 714 | == PARAM</FONT>. |
michael@0 | 715 | <BR>Attributes: |
michael@0 | 716 | <UL><B>NAME</B>=string [clamped: white space is stripped out] |
michael@0 | 717 | <BR><B>VALUE</B>=string [clamped: white space is stripped out]</UL> |
michael@0 | 718 | White space being stripped is done as follows: leading and trailing whitespace |
michael@0 | 719 | is removed. Any embedded whitespace is left alone except if it's a non-space |
michael@0 | 720 | whitespace in which case it is removed.</UL> |
michael@0 | 721 | <B>OBJECT</B> |
michael@0 | 722 | <UL>The open tag pushes an object onto the object stack. The close tag |
michael@0 | 723 | pops from the object stack. I don't understand how the data stuff works. |
michael@0 | 724 | <BR>Attributes: |
michael@0 | 725 | <UL><B>CLASSID</B>=string (clsid:, java:, javaprogram:, javabean: are the |
michael@0 | 726 | supported prefixes; maybe it's a url if no prefix shown?) |
michael@0 | 727 | <BR><B>TYPE</B>=string (a mime type) |
michael@0 | 728 | <BR><B>DATA</B>=string (data: prefix mentions a url)</UL> |
michael@0 | 729 | There are more attributes that depend on the type of object being embedded |
michael@0 | 730 | in the page. If the object is a java bean (?) then the applet parameters |
michael@0 | 731 | are supported: |
michael@0 | 732 | <UL>CLASSID |
michael@0 | 733 | <BR>HIDDEN |
michael@0 | 734 | <BR>ALIGN |
michael@0 | 735 | <BR>CLASSID (instead of CODE) |
michael@0 | 736 | <BR>CODEBASE |
michael@0 | 737 | <BR>ARCHIVE |
michael@0 | 738 | <BR>MAYSCRIPT |
michael@0 | 739 | <BR>ID (applets use NAME) |
michael@0 | 740 | <BR>WIDTH |
michael@0 | 741 | <BR>HEIGHT |
michael@0 | 742 | <BR>BORDER |
michael@0 | 743 | <BR>HSPACE |
michael@0 | 744 | <BR>VSPACE</UL> |
michael@0 | 745 | </UL> |
michael@0 | 746 | <B>MAP</B> |
michael@0 | 747 | <UL>The open tag automatically closes an open map (maps don't nest). There |
michael@0 | 748 | is no stylistic consequence of the map nor does it provide any visible |
michael@0 | 749 | presentation in the normal layout case (an editor would do something different). |
michael@0 | 750 | The map can be declared anywhere in the document. |
michael@0 | 751 | <BR>Attributes: |
michael@0 | 752 | <UL><B>NAME</B>=string [clamped: white space is stripped out]</UL> |
michael@0 | 753 | </UL> |
michael@0 | 754 | <B>AREA</B> |
michael@0 | 755 | <UL>Does nothing if there is no current map or the tag is a close tag. |
michael@0 | 756 | <BR>Attributes: |
michael@0 | 757 | <UL><B>SHAPE</B>=default | rect | circle | poly | polygon |
michael@0 | 758 | <BR><B>ALT</B>=string [clamped: newlines are stripped] |
michael@0 | 759 | <BR><B>COORDS</B>=coord-list |
michael@0 | 760 | <BR><B>HREF=</B>url |
michael@0 | 761 | <UL><B>TARGET</B>=target (only if HREF is specified)</UL> |
michael@0 | 762 | <B>SUPPRESS</B></UL> |
michael@0 | 763 | </UL> |
michael@0 | 764 | <B>SERVER</B> |
michael@0 | 765 | <UL>A container for server-side javascript. Not evaluated by the client |
michael@0 | 766 | (parsed and ignored). Note: The navigator parser doesn't expand entities |
michael@0 | 767 | in a <B>SERVER </B>tag.</UL> |
michael@0 | 768 | <B>SPACER</B> |
michael@0 | 769 | <UL>Close tag is ignored. Open tag provides whitespace during layout: <B>TYPE</B>=line/vert/vertical |
michael@0 | 770 | causes a conditional soft line break and then adds <B>SIZE </B>to the Y |
michael@0 | 771 | layout coordinate. <B>TYPE</B>=word causes a conditional soft word break |
michael@0 | 772 | and then adds <B>SIZE </B>to the X layout coordinate. <B>TYPE</B>=block |
michael@0 | 773 | causes <FONT COLOR="#DD0000">blockish </FONT>layout stuff to happen. |
michael@0 | 774 | <BR>Attributes: |
michael@0 | 775 | <UL><B>TYPE</B>=line | vert | vertical | block (default: word) |
michael@0 | 776 | <UL><B>ALIGN</B>=alignparam (these 3 params are only for <B>TYPE</B>=block) |
michael@0 | 777 | <BR><B>WIDTH</B>=value-or-pct |
michael@0 | 778 | <BR><B>HEIGHT</B>=value-or-pct</UL> |
michael@0 | 779 | <B>SIZE</B>=int [clampled: >= 0]</UL> |
michael@0 | 780 | </UL> |
michael@0 | 781 | |
michael@0 | 782 | <H3> |
michael@0 | 783 | |
michael@0 | 784 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 785 | <B>SCRIPT</B> |
michael@0 | 786 | <UL>Note: The navigator parser doesn't expand entities in a SCRIPT tag. |
michael@0 | 787 | <BR>Attributes: |
michael@0 | 788 | <UL><B>LANGUAGE</B>=LiveScript | Mocha | JavaScript1.1 | JavaScript1.2 |
michael@0 | 789 | <BR><B>TYPE</B>="text/javascript" | "text/css" |
michael@0 | 790 | <BR><B>HREF</B>=url |
michael@0 | 791 | <BR><B>ARCHIVE</B>=url |
michael@0 | 792 | <BR><B>CODEBASE</B>=url |
michael@0 | 793 | <BR><B>ID</B>=string |
michael@0 | 794 | <BR><B>SRC</B>=url</UL> |
michael@0 | 795 | </UL> |
michael@0 | 796 | <B>NOSCRIPT</B> |
michael@0 | 797 | <UL>Used when scripting is off or by backrev browsers. It is a container |
michael@0 | 798 | that has no stylistic consequences.</UL> |
michael@0 | 799 | |
michael@0 | 800 | <H3> |
michael@0 | 801 | |
michael@0 | 802 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 803 | <B>FORM </B> |
michael@0 | 804 | <UL>Attributes: |
michael@0 | 805 | <UL><B>ACTION</B>=href |
michael@0 | 806 | <BR><B>ENCODING</B>=string |
michael@0 | 807 | <BR><B>TARGET</B>=string |
michael@0 | 808 | <BR><B>METHOD</B>=get | post</UL> |
michael@0 | 809 | </UL> |
michael@0 | 810 | <B>ISINDEX </B> |
michael@0 | 811 | <UL>This tag is a shortcut for creating a form element with a submit button |
michael@0 | 812 | and a single text field. If the PROMPT attribute is not present in the |
michael@0 | 813 | tag then the value used is <B>"This is a searchable index. Enter search |
michael@0 | 814 | keywords:"</B>. |
michael@0 | 815 | |
michael@0 | 816 | <P>Attributes: |
michael@0 | 817 | <UL><B>PROMPT</B>=string |
michael@0 | 818 | <BR><B>ACTION</B>=href |
michael@0 | 819 | <BR><B>ENCODING</B>=string |
michael@0 | 820 | <BR><B>TARGET</B>=string |
michael@0 | 821 | <BR><B>METHOD</B>=get | post</UL> |
michael@0 | 822 | </UL> |
michael@0 | 823 | <B>INPUT </B> |
michael@0 | 824 | <UL>Attributes vary according to type: |
michael@0 | 825 | <UL><B>TYPE</B>= text | radio | checkbox | hidden | submit | reset | password |
michael@0 | 826 | | button | image | file | jot | readonly | object |
michael@0 | 827 | <BR><B>NAME</B>= string |
michael@0 | 828 | <BR> </UL> |
michael@0 | 829 | <B>TYPE</B>=image |
michael@0 | 830 | <UL>attributes are from the IMG tag (!)</UL> |
michael@0 | 831 | <B>TYPE</B>= text | password | file |
michael@0 | 832 | <UL>font style is forced to fixed |
michael@0 | 833 | <BR><B>VALUE</B>= string |
michael@0 | 834 | <BR><B>SIZE</B>= int (clamped; >= 1) |
michael@0 | 835 | <BR><B>MAXLENGTH</B>= int (not clamped!)</UL> |
michael@0 | 836 | <B>TYPE</B>= submit | reset | button | hidden | readonly |
michael@0 | 837 | <UL><B>VALUE</B>=string; default if no value to the attribute varies according |
michael@0 | 838 | to the type: |
michael@0 | 839 | <UL><B>submit</B> -> "Submit Query" |
michael@0 | 840 | <BR><B>reset</B> -> "Reset" |
michael@0 | 841 | <BR>others -> " " (2 spaces) |
michael@0 | 842 | <BR>Note also that the value has newlines stripped from it</UL> |
michael@0 | 843 | <B>WIDTH</B>=int (clamped >=0 && <= 1000) (only for submit, |
michael@0 | 844 | reset or button) |
michael@0 | 845 | <BR><B>HEIGHT</B>=int (clamped >=0 && <= 1000) (only for submit, |
michael@0 | 846 | reset or button)</UL> |
michael@0 | 847 | <B>TYPE</B>=radio | checkbox |
michael@0 | 848 | <UL><B>CHECKED</B> (flag - if present then set to true) |
michael@0 | 849 | <BR><B>VALUE</B>= string (the default value is "on")</UL> |
michael@0 | 850 | </UL> |
michael@0 | 851 | <B>SELECT </B> |
michael@0 | 852 | <UL>Attributes: |
michael@0 | 853 | <UL><B>MULTIPLE</B> (boolean) |
michael@0 | 854 | <BR><B>SIZE</B>= int (clamped >= 1) |
michael@0 | 855 | <BR><B>NAME=</B> string |
michael@0 | 856 | <BR><B>WIDTH</B>= int (clampled >= 0 && <= 1000) |
michael@0 | 857 | <BR><B>HEIGHT</B>= int (clamped >= 0 && <= 1000; only examined |
michael@0 | 858 | for single entry lists (!multiple || size==1))</UL> |
michael@0 | 859 | </UL> |
michael@0 | 860 | <B>OPTION </B> |
michael@0 | 861 | <UL>Lives inside the SELECT tag (ignored otherwise). |
michael@0 | 862 | <BR>Attributes: |
michael@0 | 863 | <UL><B>VALUE</B>=string |
michael@0 | 864 | <BR><B>SELECTED</B> boolean</UL> |
michael@0 | 865 | </UL> |
michael@0 | 866 | <B>TEXTAREA </B> |
michael@0 | 867 | <UL>Attributes: |
michael@0 | 868 | <UL><B>NAME</B>=string |
michael@0 | 869 | <BR><B>ROWS</B>=int (clamped; >= 1) |
michael@0 | 870 | <BR><B>COLS</B>=int (clamped; >= 1) |
michael@0 | 871 | <BR><B>WRAP</B>= off | hard | soft (default is off; any value which is |
michael@0 | 872 | not known turns into soft)</UL> |
michael@0 | 873 | </UL> |
michael@0 | 874 | <B>KEYGEN </B> |
michael@0 | 875 | <UL>Attributes: |
michael@0 | 876 | <UL><B>NAME</B>=string |
michael@0 | 877 | <BR><B>CHALLENGE</B>=string |
michael@0 | 878 | <BR><B>PQG</B>=string |
michael@0 | 879 | <BR><B>KEYTYPE</B>=string</UL> |
michael@0 | 880 | </UL> |
michael@0 | 881 | |
michael@0 | 882 | <H3> |
michael@0 | 883 | |
michael@0 | 884 | <HR ALIGN=LEFT WIDTH="50%"></H3> |
michael@0 | 885 | <B>BASEFONT </B> |
michael@0 | 886 | <UL>Sets the base font value which +/- size values in FONT tags are relative |
michael@0 | 887 | to. |
michael@0 | 888 | <BR>Attributes: |
michael@0 | 889 | <UL>SIZE=+ int | - int | int (just like FONT)</UL> |
michael@0 | 890 | </UL> |
michael@0 | 891 | |
michael@0 | 892 | <H2> |
michael@0 | 893 | |
michael@0 | 894 | <HR WIDTH="100%">Unsupported</H2> |
michael@0 | 895 | <B>NSCP_CLOSE, NSCP_OPEN, NSCP_REBLOCK, MQUOTE, CELL, SUBDOC, CERTIFICATE, |
michael@0 | 896 | INLINEINPUTTHICK, INLINEINPUTDOTTED, COLORMAP, HYPE, SPELL, NSDT</B> |
michael@0 | 897 | <UL>These tags are unsupported because they are used internally by netscape |
michael@0 | 898 | and are never seen in real content. If somebody does use them between 4.0 |
michael@0 | 899 | and magellan, tough beans. We never documented them so they lose.</UL> |
michael@0 | 900 | |
michael@0 | 901 | </BODY> |
michael@0 | 902 | </HTML> |