about summary refs log tree commit diff stats
path: root/WWW/Library
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library')
-rw-r--r--WWW/Library/Implementation/HTFormat.h2
-rw-r--r--WWW/Library/Implementation/HTMLDTD.c1463
-rw-r--r--WWW/Library/Implementation/HTMLDTD.h944
-rw-r--r--WWW/Library/Implementation/HTPlain.c4
-rw-r--r--WWW/Library/Implementation/HTRules.c6
-rw-r--r--WWW/Library/Implementation/HTTCP.c7
-rw-r--r--WWW/Library/Implementation/HTTP.c6
-rw-r--r--WWW/Library/Implementation/HTUtils.h61
-rw-r--r--WWW/Library/Implementation/SGML.c78
-rw-r--r--WWW/Library/Implementation/dtd_util.c318
-rw-r--r--WWW/Library/Implementation/hdr_HTMLDTD.h952
-rw-r--r--WWW/Library/Implementation/src0_HTMLDTD.h1194
-rw-r--r--WWW/Library/Implementation/src1_HTMLDTD.h1194
13 files changed, 3721 insertions, 2508 deletions
diff --git a/WWW/Library/Implementation/HTFormat.h b/WWW/Library/Implementation/HTFormat.h
index 903462bb..c4bc9587 100644
--- a/WWW/Library/Implementation/HTFormat.h
+++ b/WWW/Library/Implementation/HTFormat.h
@@ -163,7 +163,7 @@ The HTPresentation and HTConverter types
 	float quality;		/* Between 0 (bad) and 1 (good) */
 	float secs;
 	float secs_per_byte;
-	long int maxbytes;
+	off_t maxbytes;
 	BOOL get_accept;	/* list in "Accept:" for GET */
 	int accept_opt;		/* matches against LYAcceptMedia */
     };
diff --git a/WWW/Library/Implementation/HTMLDTD.c b/WWW/Library/Implementation/HTMLDTD.c
index 73467c2c..c2c30d6e 100644
--- a/WWW/Library/Implementation/HTMLDTD.c
+++ b/WWW/Library/Implementation/HTMLDTD.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTMLDTD.c,v 1.53 2008/07/05 00:23:48 tom Exp $
+ * $LynxId: HTMLDTD.c,v 1.55 2008/07/07 00:04:46 tom Exp $
  *
  *		Our Static DTD for HTML
  *		-----------------------
@@ -149,921 +149,6 @@ static const char *entities[] =
  *	Lists must be in alphabetical order by attribute name
  *	The tag elements contain the number of attributes
  */
-#ifdef USE_PRETTYSRC
-# define N HTMLA_NORMAL
-# define i HTMLA_ANAME
-# define h HTMLA_HREF
-# define c HTMLA_CLASS
-# define x HTMLA_AUXCLASS
-# define T(t) , t
-#else
-# define T(t)			/*nothing */
-#endif
-/* *INDENT-OFF* */
-static attr a_attr[] = {		/* Anchor attributes */
-	{ "ACCESSKEY"     T(N) },
-	{ "CHARSET"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COORDS"        T(N) },
-	{ "DIR"           T(N) },
-	{ "HREF"          T(h) },
-	{ "ID"            T(i) },
-	{ "ISMAP"         T(N) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "NAME"          T(i) },
-	{ "NOTAB"         T(N) },
-	{ "ONCLICK"       T(N) },
-	{ "ONMOUSEOUT"    T(N) },
-	{ "ONMOUSEOVER"   T(N) },
-	{ "REL"           T(N) },
-	{ "REV"           T(N) },
-	{ "SHAPE"         T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TARGET"        T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "URN"           T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr address_attr[] = {		/* ADDRESS attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr applet_attr[] = {		/* APPLET attributes */
-	{ "ALIGN"         T(N) },
-	{ "ALT"           T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "CODE"          T(N) },
-	{ "CODEBASE"      T(h) },
-	{ "DIR"           T(N) },
-	{ "DOWNLOAD"      T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "HSPACE"        T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(i) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "VSPACE"        T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr area_attr[] = {		/* AREA attributes */
-	{ "ALT"           T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COORDS"        T(N) },
-	{ "DIR"           T(N) },
-	{ "HREF"          T(h) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOHREF"        T(N) },
-	{ "NOTAB"         T(N) },
-	{ "ONCLICK"       T(N) },
-	{ "ONMOUSEOUT"    T(N) },
-	{ "ONMOUSEOVER"   T(N) },
-	{ "SHAPE"         T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TARGET"        T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr base_attr[] = {		/* BASE attributes */
-	{ "HREF"          T(h) },
-	{ "TARGET"        T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr bgsound_attr[] = {		/* BGSOUND attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "LOOP"          T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr body_attr[] = {		/* BODY attributes */
-	{ "ALINK"         T(N) },
-	{ "BACKGROUND"    T(h) },
-	{ "BGCOLOR"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "LINK"          T(N) },
-	{ "ONLOAD"        T(N) },
-	{ "ONUNLOAD"      T(N) },
-	{ "STYLE"         T(N) },
-	{ "TEXT"          T(N) },
-	{ "TITLE"         T(N) },
-	{ "VLINK"         T(N) },
-	{ 0               T(N) } /* Terminate list */
-};
-
-static attr bodytext_attr[] = {		/* BODYTEXT attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DATA"          T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "OBJECT"        T(N) },
-	{ "REF"           T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "VALUE"         T(N) },
-	{ "VALUETYPE"     T(N) },
-	{ 0               T(N) } /* Terminate list */
-};
-
-static attr bq_attr[] = {		/* BQ (BLOCKQUOTE) attributes */
-	{ "CITE"          T(h) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr button_attr[] = {		/* BUTTON attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DISABLED"      T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "ONBLUR"        T(N) },
-	{ "ONFOCUS"       T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "VALUE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr caption_attr[] = {		/* CAPTION attributes */
-	{ "ACCESSKEY"     T(N) },
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr col_attr[] = {		/* COL and COLGROUP attributes */
-	{ "ALIGN"         T(N) },
-	{ "CHAR"          T(N) },
-	{ "CHAROFF"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "SPAN"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "VALIGN"        T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr credit_attr[] = {		/* CREDIT attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr div_attr[] = {		/* DIV attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr embed_attr[] = {		/* EMBED attributes */
-	{ "ALIGN"         T(N) },	/* (including, for now, those from FIG and IMG) */
-	{ "ALT"           T(N) },
-	{ "BORDER"        T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "IMAGEMAP"      T(N) },
-	{ "ISMAP"         T(N) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "NAME"          T(i) },
-	{ "NOFLOW"        T(N) },
-	{ "PARAMS"        T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "USEMAP"        T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr fig_attr[] = {		/* FIG attributes */
-	{ "ALIGN"         T(N) },
-	{ "BORDER"        T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "IMAGEMAP"      T(N) },
-	{ "ISOBJECT"      T(N) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "NOFLOW"        T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr fieldset_attr[] = {		/* FIELDSET attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr fn_attr[] = {		/* FN attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr font_attr[] = {		/* FONT attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COLOR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "END"           T(N) },
-	{ "FACE"          T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "SIZE"          T(N) },
-	{ "STYLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr form_attr[] = {		/* FORM attributes */
-	{ "ACCEPT-CHARSET" T(N) },	/* HTML 4.0 draft - kw */
-	{ "ACTION"        T(h) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ENCTYPE"       T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "METHOD"        T(N) },
-	{ "ONSUBMIT"      T(N) },
-	{ "SCRIPT"        T(N) },
-	{ "STYLE"         T(N) },
-	{ "SUBJECT"       T(N) },
-	{ "TARGET"        T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr frame_attr[] = {		/* FRAME attributes */
-	{ "ID"            T(i) },
-	{ "LONGDESC"      T(h) },
-	{ "MARGINHEIGHT"  T(N) },
-	{ "MARGINWIDTH"   T(N) },
-	{ "NAME"          T(N) },
-	{ "NORESIZE"      T(N) },
-	{ "SCROLLING"     T(N) },
-	{ "SRC"           T(h) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr frameset_attr[] = {		/* FRAMESET attributes */
-	{ "COLS"          T(N) },
-	{ "ROWS"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr gen_attr[] = {		/* Minimum HTML 3.0 */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr dl_attr[] = {		/* DL (and DLC) attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COMPACT"       T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr h_attr[] = {		/* H1 - H6 attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DINGBAT"       T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "SEQNUM"        T(N) },
-	{ "SKIP"          T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr hr_attr[] = {		/* HR attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "MD"            T(N) },
-	{ "NOSHADE"       T(N) },
-	{ "SIZE"          T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr iframe_attr[] = {		/* IFRAME attributes */
-	{ "ALIGN"         T(N) },
-	{ "FRAMEBORDER"   T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "LONGDESC"      T(h) },
-	{ "MARGINHEIGHT"  T(N) },
-	{ "MARGINWIDTH"   T(N) },
-	{ "NAME"          T(N) },
-	{ "SCROLLING"     T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr img_attr[] = {		/* IMG attributes */
-	{ "ALIGN"         T(N) },
-	{ "ALT"           T(N) },
-	{ "BORDER"        T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "ISMAP"         T(N) },
-	{ "ISOBJECT"      T(N) },
-	{ "LANG"          T(N) },
-	{ "LONGDESC"      T(h) },
-	{ "MD"            T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "USEMAP"        T(h) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr input_attr[] = {		/* INPUT attributes */
-	{ "ACCEPT"        T(N) },
-	{ "ACCEPT-CHARSET" T(N) },	/* RFC 2070 HTML i18n - kw */
-	{ "ALIGN"         T(N) },
-	{ "ALT"           T(N) },
-	{ "CHECKED"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DISABLED"      T(N) },
-	{ "ERROR"         T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MAX"           T(N) },
-	{ "MAXLENGTH"     T(N) },
-	{ "MD"            T(N) },
-	{ "MIN"           T(N) },
-	{ "NAME"          T(N) },
-	{ "NOTAB"         T(N) },
-	{ "ONBLUR"        T(N) },
-	{ "ONCHANGE"      T(N) },
-	{ "ONCLICK"       T(N) },
-	{ "ONFOCUS"       T(N) },
-	{ "ONSELECT"      T(N) },
-	{ "SIZE"          T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "VALUE"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr isindex_attr[] = {		/* ISINDEX attributes */
-	{ "ACTION"        T(h) },	/* Not in spec.  Lynx treats it as HREF. - FM */
-	{ "DIR"           T(N) },
-	{ "HREF"          T(h) },	/* HTML 3.0 attribute for search action. - FM */
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "PROMPT"        T(N) },	/* HTML 3.0 attribute for prompt string. - FM */
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr keygen_attr[] = {		/* KEYGEN attributes */
-	{ "CHALLENGE"     T(N) },
-	{ "CLASS"         T(c) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr label_attr[] = {		/* LABEL attributes */
-	{ "ACCESSKEY"     T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "FOR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "ONCLICK"       T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr legend_attr[] = {		/* LEGEND attributes */
-	{ "ACCESSKEY"     T(N) },
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr link_attr[] = {		/* LINK attributes */
-	{ "CHARSET"       T(N) },	/* RFC 2070 HTML i18n -- hint for UA -- - kw */
-	{ "CLASS"         T(c) },
-	{ "HREF"          T(h) },
-	{ "ID"            T(i) },
-	{ "MEDIA"         T(N) },
-	{ "REL"           T(N) },
-	{ "REV"           T(N) },
-	{ "STYLE"         T(N) },
-	{ "TARGET"        T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr li_attr[] = {		/* LI attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DINGBAT"       T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "SKIP"          T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "VALUE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr map_attr[] = {		/* MAP attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(i) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr math_attr[] = {		/* MATH attributes */
-	{ "BOX"           T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr meta_attr[] = {		/* META attributes */
-	{ "CONTENT"       T(N) },
-	{ "HTTP-EQUIV"    T(N) },
-	{ "NAME"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr nextid_attr[] = {		/* NEXTID attributes */
-	{ "N"             T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr note_attr[] = {		/* NOTE attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "ROLE"          T(x) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr object_attr[] = {		/* OBJECT attributes */
-	{ "ALIGN"         T(N) },
-	{ "BORDER"        T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLASSID"       T(h) },
-	{ "CODEBASE"      T(h) },
-	{ "CODETYPE"      T(N) },
-	{ "DATA"          T(h) },
-	{ "DECLARE"       T(N) },
-	{ "DIR"           T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "HSPACE"        T(N) },
-	{ "ID"            T(i) },
-	{ "ISMAP"         T(N) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "NOTAB"         T(N) },
-	{ "SHAPES"        T(N) },
-	{ "STANDBY"       T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "USEMAP"        T(h) },
-	{ "VSPACE"        T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr ol_attr[] = {		/* OL attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COMPACT"       T(N) },
-	{ "CONTINUE"      T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "SEQNUM"        T(N) },
-	{ "START"         T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr option_attr[] = {		/* OPTION attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DISABLED"      T(N) },
-	{ "ERROR"         T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "SELECTED"      T(N) },
-	{ "SHAPE"         T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "VALUE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr overlay_attr[] = {		/* OVERLAY attributes */
-	{ "CLASS"         T(c) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "IMAGEMAP"      T(N) },
-	{ "MD"            T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ "X"             T(N) },
-	{ "Y"             T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr p_attr[] = {		/* P attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr param_attr[] = {		/* PARAM attributes */
-	{ "ACCEPT"        T(N) },
-	{ "ACCEPT-CHARSET" T(N) },
-	{ "ACCEPT-ENCODING" T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DATA"          T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "OBJECT"        T(N) },
-	{ "REF"           T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "VALUE"         T(N) },
-	{ "VALUEREF"      T(N) },
-	{ "VALUETYPE"     T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr script_attr[] = {		/* SCRIPT attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "EVENT"         T(N) },
-	{ "FOR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "LANGUAGE"      T(N) },
-	{ "NAME"          T(N) },
-	{ "SCRIPTENGINE"  T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr select_attr[] = {		/* SELECT attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DISABLED"      T(N) },
-	{ "ERROR"         T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "MULTIPLE"      T(N) },
-	{ "NAME"          T(N) },
-	{ "NOTAB"         T(N) },
-	{ "ONBLUR"        T(N) },
-	{ "ONCHANGE"      T(N) },
-	{ "ONFOCUS"       T(N) },
-	{ "SIZE"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr style_attr[] = {		/* STYLE attributes */
-	{ "DIR"           T(N) },
-	{ "LANG"          T(N) },
-	{ "NOTATION"      T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr tab_attr[] = {		/* TAB attributes */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DP"            T(N) },
-	{ "ID"            T(i) },
-	{ "INDENT"        T(N) },
-	{ "LANG"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TO"            T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr table_attr[] = {		/* TABLE attributes */
-	{ "ALIGN"         T(N) },
-	{ "BACKGROUND"    T(h) },
-	{ "BORDER"        T(N) },
-	{ "CELLPADDING"   T(N) },
-	{ "CELLSPACING"   T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COLS"          T(N) },
-	{ "COLSPEC"       T(N) },
-	{ "DIR"           T(N) },
-	{ "DP"            T(N) },
-	{ "FRAME"         T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOFLOW"        T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "RULES"         T(N) },
-	{ "STYLE"         T(N) },
-	{ "SUMMARY"       T(N) },
-	{ "TITLE"         T(N) },
-	{ "UNITS"         T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr td_attr[] = {		/* TD and TH attributes */
-	{ "ALIGN"         T(N) },
-	{ "AXES"          T(N) },
-	{ "AXIS"          T(N) },
-	{ "BACKGROUND"    T(h) },
-	{ "CHAR"          T(N) },
-	{ "CHAROFF"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COLSPAN"       T(N) },
-	{ "DIR"           T(N) },
-	{ "DP"            T(N) },
-	{ "HEIGHT"        T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "ROWSPAN"       T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "VALIGN"        T(N) },
-	{ "WIDTH"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr textarea_attr[] = {		/* TEXTAREA attributes */
-	{ "ACCEPT-CHARSET" T(N) },	/* RFC 2070 HTML i18n - kw */
-	{ "ALIGN"         T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COLS"          T(N) },
-	{ "DIR"           T(N) },
-	{ "DISABLED"      T(N) },
-	{ "ERROR"         T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NAME"          T(N) },
-	{ "NOTAB"         T(N) },
-	{ "ONBLUR"        T(N) },
-	{ "ONCHANGE"      T(N) },
-	{ "ONFOCUS"       T(N) },
-	{ "ONSELECT"      T(N) },
-	{ "ROWS"          T(N) },
-	{ "STYLE"         T(N) },
-	{ "TABINDEX"      T(N) },
-	{ "TITLE"         T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr tr_attr[] = {	/* TR, THEAD, TFOOT, and TBODY attributes */
-	{ "ALIGN"         T(N) },
-	{ "CHAR"          T(N) },
-	{ "CHAROFF"       T(N) },
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "DIR"           T(N) },
-	{ "DP"            T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "NOWRAP"        T(N) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "VALIGN"        T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-
-static attr ul_attr[] = {		/* UL attributes */
-	{ "CLASS"         T(c) },
-	{ "CLEAR"         T(N) },
-	{ "COMPACT"       T(N) },
-	{ "DINGBAT"       T(N) },
-	{ "DIR"           T(N) },
-	{ "ID"            T(i) },
-	{ "LANG"          T(N) },
-	{ "MD"            T(N) },
-	{ "PLAIN"         T(N) },
-	{ "SRC"           T(h) },
-	{ "STYLE"         T(N) },
-	{ "TITLE"         T(N) },
-	{ "TYPE"          T(N) },
-	{ "WRAP"          T(N) },
-	{ 0               T(N) }	/* Terminate list */
-};
-/* *INDENT-ON* */
-
-#undef N
-#undef i
-#undef h
-#undef c
-#undef x
-
-#undef T
 
 /* From Peter Flynn's intro to the HTML Pro DTD:
 
@@ -1104,259 +189,6 @@ static attr ul_attr[] = {		/* UL attributes */
    %formula;
  */
 
-/*	Extra element info
- *	------------------
- *
- *	Order and number of tags should match the tags_* tables
- *	further below and definitions in HTMLDTD.html.
- *
- *	The interspersed comments give the original Lynx tags[] entries
- *	for orientation, so they do not necessarily reflect what will
- *	be used with the T_* info (which is in tags_new[]).
- *
- *	An important design goal was that info for each tag should fit on
- *	one 80 character screen line :).  The price to pay is that it's
- *	a bit cryptic, to say the least...  - kw
- */
-/*	 1	   2	     3	       4	 5	   6	     7	       8 */
-/*345678901234567890123456789012345678901234567890123456789012345678901234567890 */
-/* *INDENT-OFF* */
-/*			self	contain icont'n contn'd icont'd canclos flags*/
- /* { "A"	, a_attr,	HTML_A_ATTRIBUTES,	SGML_MIXED }, */
-#define T_A		0x0008, 0x0B007,0x0FF17,0x37787,0x77BA7,0x8604F,0x00014
- /* { "ABBR"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_ABBR		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
- /* { "ACRONYM" , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_ACRONYM	0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
- /* { "ADDRESS" , address_attr, HTML_ADDRESS_ATTRIBUTES, SGML_MIXED }, */
-#define T_ADDRESS	0x0200, 0x0F14F,0x8FFFF,0x36680,0xB6FAF,0x80317,0x00000
- /* { "APPLET"	, applet_attr,	HTML_APPLET_ATTRIBUTES, SGML_MIXED }, */
-#define T_APPLET	0x2000, 0x0B0CF,0x8FFFF,0x37F9F,0xB7FBF,0x8300F,0x00000
- /* { "AREA"	, area_attr,	HTML_AREA_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_AREA		0x8000, 0x00000,0x00000,0x08000,0x3FFFF,0x00F1F,0x00001
- /* { "AU"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_AU		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
- /* { "AUTHOR"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_AUTHOR	0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
- /* { "B"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_B		0x0001, 0x8B04F,0xAFFFF,0xA778F,0xF7FBF,0x00001,0x00014
- /* { "BANNER"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BANNER	0x0200, 0x0FB8F,0x0FFFF,0x30000,0x30000,0x8031F,0x00000
- /* { "BASE"	, base_attr,	HTML_BASE_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_BASE		0x40000,0x00000,0x00000,0x50000,0x50000,0x8000F,0x00001
- /* { "BASEFONT", font_attr,	HTML_FONT_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_BASEFONT	0x1000, 0x00000,0x00000,0x377AF,0x37FAF,0x8F000,0x00001
- /* { "BDO"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BDO		0x0100, 0x0B04F,0x8FFFF,0x36680,0xB6FAF,0x0033F,0x00000
- /* { "BGSOUND" , bgsound_attr, HTML_BGSOUND_ATTRIBUTES, SGML_EMPTY }, */
-#define T_BGSOUND	0x1000, 0x00000,0x00000,0x777AF,0x77FAF,0x8730F,0x00001
- /* { "BIG"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BIG		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
- /* { "BLINK"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BLINK		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00001,0x00014
- /* { "BLOCKQUOTE", bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BLOCKQUOTE	0x0200, 0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
- /* { "BODY"	, body_attr,	HTML_BODY_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BODY		0x20000,0x2FB8F,0x2FFFF,0x30000,0x30000,0xDFF7F,0x00003
- /* { "BODYTEXT", bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED }, */
-#define T_BODYTEXT	0x20000,0x0FB8F,0xAFFFF,0x30200,0xB7FAF,0x8F17F,0x00003
- /* { "BQ"	, bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED }, */
-#define T_BQ		0x0200, 0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
- /* { "BR"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_BR		0x1000, 0x00000,0x00000,0x377BF,0x77FBF,0x8101F,0x00001
-#define T_BUTTON	0x2000, 0x0BB07,0x0FF37,0x0378F,0x37FBF,0x8135F,0x00000
- /* { "CAPTION" , caption_attr, HTML_CAPTION_ATTRIBUTES, SGML_MIXED }, */
-#define T_CAPTION	0x0100, 0x0B04F,0x8FFFF,0x06A00,0xB6FA7,0x8035F,0x00000
- /* { "CENTER"	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED }, */
-#define T_CENTER	0x0200, 0x8FBCF,0x8FFFF,0xB6680,0xB6FA7,0x8071F,0x00000
- /* { "CITE"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_CITE		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
- /* { "CODE"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_CODE		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00000
- /* { "COL"	, col_attr,	HTML_COL_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_COL		0x4000, 0x00000,0x00000,0x00820,0x36FA7,0x88F5F,0x00001
- /* { "COLGROUP", col_attr,	HTML_COL_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_COLGROUP	0x0020, 0x04000,0x04000,0x00800,0x36FA7,0x8875F,0x00001
- /* { "COMMENT" , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_COMMENT	0x0004, 0x00000,0x00000,0xA77AF,0x7FFFF,0x00003,0x00000
- /* { "CREDIT"	, credit_attr,	HTML_CREDIT_ATTRIBUTES, SGML_MIXED }, */
-#define T_CREDIT	0x0100, 0x0B04F,0x8FFFF,0x06A00,0xB7FBF,0x8030F,0x00000
- /* { "DD"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_DD		0x0400, 0x0FBCF,0x8FFFF,0x00800,0xB6FFF,0x8071F,0x00001
- /* { "DEL"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DEL		0x0002, 0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
- /* { "DFN"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DFN		0x0002, 0x8B0CF,0x8FFFF,0x8778F,0xF7FBF,0x00003,0x00000
- /* { "DIR"	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DIR		0x0800, 0x0B400,0x0F75F,0x37680,0x36FB7,0x84F7F,0x00000
- /* { "DIV"	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DIV		0x0200, 0x8FB8F,0x8FFFF,0xB66A0,0xB7FFF,0x8031F,0x00004
- /* { "DL"	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DL		0x0800, 0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
- /* { "DLC"	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_DLC		0x0800, 0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
- /* { "DT"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_DT		0x0400, 0x0B04F,0x0B1FF,0x00800,0x17FFF,0x8071F,0x00001
- /* { "EM"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_EM		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
- /* { "EMBED"	, embed_attr,	HTML_EMBED_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_EMBED		0x2000, 0x8F107,0x8FFF7,0xB6FBF,0xB7FBF,0x1FF7F,0x00001
- /* { "FIELDSET", fieldset_attr,HTML_FIELDSET_ATTRIBUTES, SGML_MIXED }, */
-#define T_FIELDSET	0x0200, 0x8FB4F,0x8FF7F,0x86787,0xB7FF7,0x8805F,0x00000
- /* { "FIG"	, fig_attr,	HTML_FIG_ATTRIBUTES,	SGML_MIXED }, */
-#define T_FIG		0x0200, 0x0FB00,0x8FFFF,0x36680,0xB6FBF,0x8834F,0x00000
- /* { "FN"	, fn_attr,	HTML_FN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_FN		0x0200, 0x8FBCF,0x8FFFF,0xB6680,0xB7EBF,0x8114F,0x00000
- /* { "FONT"	, font_attr,	HTML_FONT_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_FONT		0x0001, 0x8B04F,0x8FFFF,0xB778F,0xF7FBF,0x00001,0x00014
- /* { "FORM"	, form_attr,	HTML_FORM_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_FORM		0x0080, 0x0FF6F,0x0FF7F,0x36E07,0x32F07,0x88DFF,0x00000
- /* { "FRAME"	, frame_attr,	HTML_FRAME_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_FRAME		0x10000,0x00000,0x00000,0x10000,0x10000,0x9FFFF,0x00001
- /* { "FRAMESET", frameset_attr,HTML_FRAMESET_ATTRIBUTES, SGML_MIXED }, */
-#define T_FRAMESET	0x10000,0x90000,0x90000,0x90000,0x93000,0x9FFFF,0x00000
- /* { "H1"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H1		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "H2"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H2		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "H3"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H3		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "H4"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H4		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "H5"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H5		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "H6"	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED }, */
-#define T_H6		0x0100, 0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
- /* { "HEAD"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_HEAD		0x40000,0x4F000,0x47000,0x10000,0x10000,0x9FF7F,0x00007
- /* { "HR"	, hr_attr,	HTML_HR_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_HR		0x4000, 0x00000,0x00000,0x3FE80,0x3FFBF,0x87F37,0x00001
- /* { "HTML"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_HTML		0x10000,0x7FB8F,0x7FFFF,0x00000,0x00000,0x1FFFF,0x00003
-#define T_HY		0x1000, 0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
- /* { "I"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_I		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
-#define T_IFRAME	0x2000, 0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0xD335F,0x00000
- /* { "IMG"	, img_attr,	HTML_IMG_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_IMG		0x1000, 0x00000,0x00000,0x3779F,0x37FBF,0x80000,0x00001
- /* { "INPUT"	, input_attr,	HTML_INPUT_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_INPUT		0x0040, 0x00000,0x00000,0x03F87,0x37F87,0x8904F,0x00001
- /* { "INS"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_INS		0x0002, 0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
- /* { "ISINDEX" , isindex_attr, HTML_ISINDEX_ATTRIBUTES,SGML_EMPTY }, */
-#define T_ISINDEX	0x8000, 0x00000,0x00000,0x7778F,0x7FFAF,0x80007,0x00001
- /* { "KBD"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_KBD		0x0002, 0x00000,0x00000,0x2778F,0x77FBF,0x00003,0x00000
- /* { "KEYGEN"	, keygen_attr,	HTML_KEYGEN_ATTRIBUTES, SGML_EMPTY }, */
-#define T_KEYGEN	0x0040, 0x00000,0x00000,0x07FB7,0x37FB7,0x80070,0x00001
- /* { "LABEL"	, label_attr,	HTML_LABEL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_LABEL		0x0002, 0x0304F,0x0FFFF,0x0679F,0x36FBF,0x00007,0x00000
-#define T_LEGEND	0x0002, 0x0B04F,0x8FF7F,0x00200,0xB7FA7,0x00003,0x00000
- /* { "LH"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_LH		0x0400, 0x0BB7F,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
- /* { "LI"	, li_attr,	HTML_LI_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_LI		0x0400, 0x0BBFF,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
- /* { "LINK"	, link_attr,	HTML_LINK_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_LINK		0x8000, 0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
- /* { "LISTING" , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL }, */
-#define T_LISTING	0x0800, 0x00000,0x00000,0x36600,0x36F00,0x80F1F,0x00000
- /* { "MAP"	, map_attr,	HTML_MAP_ATTRIBUTES,	SGML_MIXED }, */
-#define T_MAP		0x8000, 0x08000,0x08000,0x37FCF,0x37FBF,0x0071F,0x00000
- /* { "MARQUEE" , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_MARQUEE	0x4000, 0x0000F,0x8F01F,0x37787,0xB7FA7,0x8301C,0x00000
- /* { "MATH"	, math_attr,	HTML_MATH_ATTRIBUTES,	SGML_LITTERAL }, */
-#define T_MATH		0x0004, 0x0B05F,0x8FFFF,0x2778F,0xF7FBF,0x0001F,0x00000
- /* { "MENU"	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_MENU		0x0800, 0x0B400,0x0F75F,0x17680,0x36FB7,0x88F7F,0x00000
- /* { "META"	, meta_attr,	HTML_META_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_META		0x8000, 0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
- /* { "NEXTID"	, nextid_attr,	1,			SGML_EMPTY }, */
-#define T_NEXTID	0x1000, 0x00000,0x00000,0x50000,0x1FFF7,0x00001,0x00001
- /* { "NOFRAMES", gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_NOFRAMES	0x20000,0x2FB8F,0x0FFFF,0x17000,0x17000,0x0CF5F,0x00000
- /* { "NOTE"	, note_attr,	HTML_NOTE_ATTRIBUTES,	SGML_MIXED }, */
-#define T_NOTE		0x0200, 0x0BBAF,0x8FFFF,0x376B0,0xB7FFF,0x8031F,0x00000
- /* { "OBJECT"	, object_attr,	HTML_OBJECT_ATTRIBUTES, SGML_LITTERAL }, */
-#define T_OBJECT	0x2000, 0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00020
-#define T_OBJECT_PCDATA	0x2000, 0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00008
- /* { "OL"	, ol_attr,	HTML_OL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_OL		0x0800, 0x0C400,0x8FFFF,0x37680,0xB7FB7,0x88F7F,0x00000
- /* { "OPTION"	, option_attr,	HTML_OPTION_ATTRIBUTES, SGML_EMPTY }, */
-#define T_OPTION	0x8000, 0x00000,0x00000,0x00040,0x37FFF,0x8031F,0x00001
- /* { "OVERLAY" , overlay_attr, HTML_OVERLAY_ATTRIBUTES, SGML_EMPTY }, */
-#define T_OVERLAY	0x4000, 0x00000,0x00000,0x00200,0x37FBF,0x83F7F,0x00001
- /* { "P"	, p_attr,	HTML_P_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_P		0x0100, 0x0B04F,0x8FFFF,0x36680,0xB6FA7,0x80117,0x00001
- /* { "PARAM"	, param_attr,	HTML_PARAM_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_PARAM		0x1000, 0x00000,0x00000,0x33500,0x37FFF,0x81560,0x00001
- /* { "PLAINTEXT", gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL }, */
-#define T_PLAINTEXT	0x10000,0xFFFFF,0xFFFFF,0x90000,0x90000,0x3FFFF,0x00001
- /* { "PRE"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_PRE		0x0200, 0x0F04F,0x0F05E,0x36680,0x36FF0,0x8071E,0x00000
- /* { "Q"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_Q		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00000
- /* { "S"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_S		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
- /* { "SAMP"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_SAMP		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
- /* { "SCRIPT"	, script_attr,	HTML_SCRIPT_ATTRIBUTES, SGML_LITTERAL }, */
-#define T_SCRIPT	0x2000, 0x00000,0x00000,0x77F9F,0x77FFF,0x87F5F,0x00000
- /* { "SELECT"	, select_attr,	HTML_SELECT_ATTRIBUTES, SGML_MIXED }, */
-#define T_SELECT	0x0040, 0x08000,0x08000,0x03FAF,0x33FBF,0x80F5F,0x00008
-#define T_SHY		0x1000, 0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
- /* { "SMALL"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_SMALL		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
- /* { "SPAN"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_SPAN		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x80003,0x00000
- /* { "SPOT"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_SPOT		0x0008, 0x00000,0x00000,0x3FFF7,0x3FFF7,0x00008,0x00001
- /* { "STRIKE"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_STRIKE	0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
- /* { "STRONG"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_STRONG	0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
- /* { "STYLE"	, style_attr,	HTML_STYLE_ATTRIBUTES,	SGML_LITTERAL }, */
-#define T_STYLE		0x40000,0x00000,0x00000,0x7638F,0x76FAF,0x8001F,0x00000
- /* { "SUB"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_SUB		0x0004, 0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
- /* { "SUP"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_SUP		0x0004, 0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
- /* { "TAB"	, tab_attr,	HTML_TAB_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TAB		0x1000, 0x00000,0x00000,0x3778F,0x57FAF,0x00001,0x00001
- /* { "TABLE"	, table_attr,	HTML_TABLE_ATTRIBUTES,	SGML_MIXED }, */
-#define T_TABLE		0x0800, 0x0F1E0,0x8FFFF,0x36680,0xB6FA7,0x8C57F,0x00000
- /* { "TBODY"	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TBODY		0x0020, 0x00020,0x8FFFF,0x00880,0xB7FB7,0x8C75F,0x00003
- /* { "TD"	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TD		0x0400, 0x0FBCF,0x8FFFF,0x00020,0xB7FB7,0x8C75F,0x00001
- /* { "TEXTAREA", textarea_attr,HTML_TEXTAREA_ATTRIBUTES, SGML_LITTERAL }, */
-#define T_TEXTAREA	0x0040, 0x00000,0x00000,0x07F8F,0x33FBF,0x80F5F,0x00040
- /* { "TEXTFLOW", bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED }, */
-#define T_TEXTFLOW	0x20000,0x8FBFF,0x9FFFF,0x977B0,0xB7FB7,0x9B00F,0x00003
- /* { "TFOOT"	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TFOOT		0x0020, 0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
- /* { "TH"	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TH		0x0400, 0x0FBCF,0x0FFFF,0x00020,0xB7FB7,0x8CF5F,0x00001
- /* { "THEAD"	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_THEAD		0x0020, 0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
- /* { "TITLE",	  gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_RCDATA }, */
-#define T_TITLE		0x40000,0x00000,0x00000,0x50000,0x50000,0x0031F,0x0000C
- /* { "TR"	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY }, */
-#define T_TR		0x0020, 0x00400,0x8FFFF,0x00820,0xB7FB7,0x8C75F,0x00001
- /* { "TT"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_TT		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00010
- /* { "U"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_U		0x0001, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
- /* { "UL"	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED }, */
-#define T_UL		0x0800, 0x0C480,0x8FFFF,0x36680,0xB7FFF,0x8075F,0x00000
- /* { "VAR"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED }, */
-#define T_VAR		0x0002, 0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
-#define T_WBR		0x0001, 0x00000,0x00000,0x3778F,0x77FBF,0x8101F,0x00001
- /* { "XMP"	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL }, */
-#define T_XMP		0x0800, 0x00000,0x00000,0x367E0,0x36FFF,0x0875F,0x00001
-
-#define T__UNREC_	0x0000, 0x00000,0x00000,0x00000,0x00000,0x00000,0x00000
-/* *INDENT-ON* */
-
 /*	Elements
  *	--------
  *
@@ -1365,288 +197,17 @@ static attr ul_attr[] = {		/* UL attributes */
  *
  *  The T_* extra info is listed here, even though most fields are not used
  *  in SGML.c if Old_DTD is set (with the exception of some Tgf_* flags).
- *  This simplifies comparison of the tags_old[] table (otherwise unchanged
- *  from original Lynx treatment) with the tags_new[] table below. - kw
+ *  This simplifies comparison of the tags_table0[] table (otherwise unchanged
+ *  from original Lynx treatment) with the tags_table1[] table below. - kw
  *
  *    Name*,	Attributes,	No. of attributes,     content,   extra info...
  */
-#undef P
-#undef P_
-#ifdef USE_COLOR_STYLE
-#define P_(x) x , (sizeof x) -1
-#define NULL_HTTag_ NULL, 0
-#else
-#define P_(x) x
-#define NULL_HTTag_ NULL
-#endif
-
-#ifdef EXP_JUSTIFY_ELTS
-#define P(x) P_(x), 1
-#define P0(x) P_(x), 0
-#define NULL_HTTag NULL_HTTag_,0
-#else
-#define P(x) P_(x)
-#define P0(x) P_(x)
-#define NULL_HTTag NULL_HTTag_
-#endif
-/* *INDENT-OFF* */
-static const HTTag tags_old[HTML_ALL_ELEMENTS] = {
- { P("A")	, a_attr,	HTML_A_ATTRIBUTES,	SGML_EMPTY,T_A},
- { P("ABBR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_ABBR},
- { P("ACRONYM") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_ACRONYM},
- { P("ADDRESS") , address_attr, HTML_ADDRESS_ATTRIBUTES, SGML_MIXED,T_ADDRESS},
- { P("APPLET")	, applet_attr,	HTML_APPLET_ATTRIBUTES, SGML_MIXED,T_APPLET},
- { P("AREA")	, area_attr,	HTML_AREA_ATTRIBUTES,	SGML_EMPTY,T_AREA},
- { P("AU")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_AU},
- { P("AUTHOR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_AUTHOR},
- { P("B")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_B},
- { P0("BANNER")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BANNER},
- { P("BASE")	, base_attr,	HTML_BASE_ATTRIBUTES,	SGML_EMPTY,T_BASE},
- { P("BASEFONT"), font_attr,	HTML_FONT_ATTRIBUTES,	SGML_EMPTY,T_BASEFONT},
- { P("BDO")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BDO},
- { P("BGSOUND") , bgsound_attr, HTML_BGSOUND_ATTRIBUTES, SGML_EMPTY,T_BGSOUND},
- { P("BIG")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BIG},
- { P("BLINK")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_BLINK},
- { P("BLOCKQUOTE"), bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED,T_BLOCKQUOTE},
- { P("BODY")	, body_attr,	HTML_BODY_ATTRIBUTES,	SGML_MIXED,T_BODY},
- { P("BODYTEXT"), bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED,T_BODYTEXT},
- { P("BQ")	, bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED,T_BQ},
- { P("BR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_BR},
- { P("BUTTON")	, button_attr,	HTML_BUTTON_ATTRIBUTES, SGML_MIXED,T_BUTTON},
- { P("CAPTION") , caption_attr, HTML_CAPTION_ATTRIBUTES, SGML_MIXED,T_CAPTION},
- { P("CENTER")	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED,T_CENTER},
- { P("CITE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_CITE},
- { P("CODE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_CODE},
- { P("COL")	, col_attr,	HTML_COL_ATTRIBUTES,	SGML_EMPTY,T_COL},
- { P("COLGROUP"), col_attr,	HTML_COL_ATTRIBUTES,	SGML_EMPTY,T_COLGROUP},
- { P("COMMENT") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_COMMENT},
- { P("CREDIT")	, credit_attr,	HTML_CREDIT_ATTRIBUTES, SGML_MIXED,T_CREDIT},
- { P("DD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_DD},
- { P("DEL")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DEL},
- { P("DFN")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DFN},
- { P("DIR")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_DIR},
- { P("DIV")	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED,T_DIV},
- { P("DL")	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED,T_DL},
- { P("DLC")	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED,T_DLC},
- { P("DT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_DT},
- { P("EM")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_EM},
- { P("EMBED")	, embed_attr,	HTML_EMBED_ATTRIBUTES,	SGML_EMPTY,T_EMBED},
- { P("FIELDSET"), fieldset_attr,HTML_FIELDSET_ATTRIBUTES, SGML_MIXED,T_FIELDSET},
- { P("FIG")	, fig_attr,	HTML_FIG_ATTRIBUTES,	SGML_MIXED,T_FIG},
- { P("FN")	, fn_attr,	HTML_FN_ATTRIBUTES,	SGML_MIXED,T_FN},
- { P("FONT")	, font_attr,	HTML_FONT_ATTRIBUTES,	SGML_EMPTY,T_FONT},
- { P("FORM")	, form_attr,	HTML_FORM_ATTRIBUTES,	SGML_EMPTY,T_FORM},
- { P("FRAME")	, frame_attr,	HTML_FRAME_ATTRIBUTES,	SGML_EMPTY,T_FRAME},
- { P("FRAMESET"), frameset_attr,HTML_FRAMESET_ATTRIBUTES, SGML_MIXED,T_FRAMESET},
- { P0("H1")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H1},
- { P0("H2")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H2},
- { P0("H3")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H3},
- { P0("H4")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H4},
- { P0("H5")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H5},
- { P0("H6")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H6},
- { P("HEAD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_HEAD},
- { P("HR")	, hr_attr,	HTML_HR_ATTRIBUTES,	SGML_EMPTY,T_HR},
- { P("HTML")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_HTML},
- { P("HY")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_HY},
- { P("I")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_I},
- { P("IFRAME")	, iframe_attr,	HTML_IFRAME_ATTRIBUTES, SGML_MIXED,T_IFRAME},
- { P("IMG")	, img_attr,	HTML_IMG_ATTRIBUTES,	SGML_EMPTY,T_IMG},
- { P("INPUT")	, input_attr,	HTML_INPUT_ATTRIBUTES,	SGML_EMPTY,T_INPUT},
- { P("INS")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_INS},
- { P("ISINDEX") , isindex_attr, HTML_ISINDEX_ATTRIBUTES,SGML_EMPTY,T_ISINDEX},
- { P("KBD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_KBD},
- { P("KEYGEN")	, keygen_attr,	HTML_KEYGEN_ATTRIBUTES, SGML_EMPTY,T_KEYGEN},
- { P("LABEL")	, label_attr,	HTML_LABEL_ATTRIBUTES,	SGML_MIXED,T_LABEL},
- { P("LEGEND")	, legend_attr,	HTML_LEGEND_ATTRIBUTES, SGML_MIXED,T_LEGEND},
- { P("LH")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_LH},
- { P("LI")	, li_attr,	HTML_LI_ATTRIBUTES,	SGML_EMPTY,T_LI},
- { P("LINK")	, link_attr,	HTML_LINK_ATTRIBUTES,	SGML_EMPTY,T_LINK},
- { P("LISTING") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_LISTING},
- { P("MAP")	, map_attr,	HTML_MAP_ATTRIBUTES,	SGML_MIXED,T_MAP},
- { P("MARQUEE") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_MARQUEE},
- { P("MATH")	, math_attr,	HTML_MATH_ATTRIBUTES,	SGML_LITTERAL,T_MATH},
- { P("MENU")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_MENU},
- { P("META")	, meta_attr,	HTML_META_ATTRIBUTES,	SGML_EMPTY,T_META},
- { P("NEXTID")	, nextid_attr,	1,			SGML_EMPTY,T_NEXTID},
- { P("NOFRAMES"), gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_NOFRAMES},
- { P("NOTE")	, note_attr,	HTML_NOTE_ATTRIBUTES,	SGML_MIXED,T_NOTE},
- { P("OBJECT")	, object_attr,	HTML_OBJECT_ATTRIBUTES, SGML_LITTERAL,T_OBJECT},
- { P("OL")	, ol_attr,	HTML_OL_ATTRIBUTES,	SGML_MIXED,T_OL},
- { P("OPTION")	, option_attr,	HTML_OPTION_ATTRIBUTES, SGML_EMPTY,T_OPTION},
- { P("OVERLAY") , overlay_attr, HTML_OVERLAY_ATTRIBUTES, SGML_EMPTY,T_OVERLAY},
- { P("P")	, p_attr,	HTML_P_ATTRIBUTES,	SGML_EMPTY,T_P},
- { P("PARAM")	, param_attr,	HTML_PARAM_ATTRIBUTES,	SGML_EMPTY,T_PARAM},
- { P("PLAINTEXT"), gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_PLAINTEXT},
- { P0("PRE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_PRE},
- { P("Q")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_Q},
- { P("S")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_S},
- { P("SAMP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SAMP},
- { P("SCRIPT")	, script_attr,	HTML_SCRIPT_ATTRIBUTES, SGML_LITTERAL,T_SCRIPT},
- { P("SELECT")	, select_attr,	HTML_SELECT_ATTRIBUTES, SGML_MIXED,T_SELECT},
- { P("SHY")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_SHY},
- { P("SMALL")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SMALL},
- { P("SPAN")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SPAN},
- { P("SPOT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_SPOT},
- { P("STRIKE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_STRIKE},
- { P("STRONG")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_STRONG},
- { P("STYLE")	, style_attr,	HTML_STYLE_ATTRIBUTES,	SGML_LITTERAL,T_STYLE},
- { P("SUB")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SUB},
- { P("SUP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SUP},
- { P("TAB")	, tab_attr,	HTML_TAB_ATTRIBUTES,	SGML_EMPTY,T_TAB},
- { P("TABLE")	, table_attr,	HTML_TABLE_ATTRIBUTES,	SGML_MIXED,T_TABLE},
- { P("TBODY")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY,T_TBODY},
- { P("TD")	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_EMPTY,T_TD},
- { P("TEXTAREA"), textarea_attr,HTML_TEXTAREA_ATTRIBUTES, SGML_LITTERAL,T_TEXTAREA},
- { P("TEXTFLOW"), bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED,T_TEXTFLOW},
- { P("TFOOT")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY,T_TFOOT},
- { P("TH")	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_EMPTY,T_TH},
- { P("THEAD")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY,T_THEAD},
- { P("TITLE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_RCDATA,T_TITLE},
- { P("TR")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_EMPTY,T_TR},
- { P("TT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_TT},
- { P("U")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_U},
- { P("UL")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_UL},
- { P("VAR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_VAR},
- { P("WBR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_WBR},
- { P0("XMP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_XMP},
- /*  additional (alternative variants), not counted in HTML_ELEMENTS: */
-/* This one will be used as a temporary substitute within the parser when
-   it has been signalled to parse OBJECT content as MIXED. - kw */
- { P("OBJECT")	, object_attr,	HTML_OBJECT_ATTRIBUTES, SGML_MIXED,T_OBJECT_PCDATA},
-};
-
-static const HTTag tags_new[HTML_ALL_ELEMENTS] = {
- { P("A")	, a_attr,	HTML_A_ATTRIBUTES,	SGML_MIXED,T_A},
- { P("ABBR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_ABBR},
- { P("ACRONYM") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_ACRONYM},
- { P("ADDRESS") , address_attr, HTML_ADDRESS_ATTRIBUTES, SGML_MIXED,T_ADDRESS},
- { P("APPLET")	, applet_attr,	HTML_APPLET_ATTRIBUTES, SGML_MIXED,T_APPLET},
- { P("AREA")	, area_attr,	HTML_AREA_ATTRIBUTES,	SGML_EMPTY,T_AREA},
- { P("AU")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_AU},
- { P("AUTHOR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_AUTHOR},
- { P("B")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_B},
- { P0("BANNER")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BANNER},
- { P("BASE")	, base_attr,	HTML_BASE_ATTRIBUTES,	SGML_EMPTY,T_BASE},
- { P("BASEFONT"), font_attr,	HTML_FONT_ATTRIBUTES,	SGML_EMPTY,T_BASEFONT},
- { P("BDO")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BDO},
- { P("BGSOUND") , bgsound_attr, HTML_BGSOUND_ATTRIBUTES, SGML_EMPTY,T_BGSOUND},
- { P("BIG")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BIG},
- { P("BLINK")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_BLINK},
- { P("BLOCKQUOTE"), bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED,T_BLOCKQUOTE},
- { P("BODY")	, body_attr,	HTML_BODY_ATTRIBUTES,	SGML_MIXED,T_BODY},
- { P("BODYTEXT"), bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED,T_BODYTEXT},
- { P("BQ")	, bq_attr,	HTML_BQ_ATTRIBUTES,	SGML_MIXED,T_BQ},
- { P("BR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_BR},
- { P("BUTTON")	, button_attr,	HTML_BUTTON_ATTRIBUTES, SGML_MIXED,T_BUTTON},
- { P("CAPTION") , caption_attr, HTML_CAPTION_ATTRIBUTES, SGML_MIXED,T_CAPTION},
- { P("CENTER")	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED,T_CENTER},
- { P("CITE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_CITE},
- { P("CODE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_CODE},
- { P("COL")	, col_attr,	HTML_COL_ATTRIBUTES,	SGML_EMPTY,T_COL},
- { P("COLGROUP"), col_attr,	HTML_COL_ATTRIBUTES,	SGML_ELEMENT,T_COLGROUP},
- { P("COMMENT") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_PCDATA,T_COMMENT},
- { P("CREDIT")	, credit_attr,	HTML_CREDIT_ATTRIBUTES, SGML_MIXED,T_CREDIT},
- { P("DD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DD},
- { P("DEL")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DEL},
- { P("DFN")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DFN},
- { P("DIR")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_DIR},
- { P("DIV")	, div_attr,	HTML_DIV_ATTRIBUTES,	SGML_MIXED,T_DIV},
- { P("DL")	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED,T_DL},
- { P("DLC")	, dl_attr, 	HTML_DL_ATTRIBUTES,	SGML_MIXED,T_DLC},
- { P("DT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_DT},
- { P("EM")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_EM},
- { P("EMBED")	, embed_attr,	HTML_EMBED_ATTRIBUTES,	SGML_EMPTY,T_EMBED},
- { P("FIELDSET"), fieldset_attr,HTML_FIELDSET_ATTRIBUTES, SGML_MIXED,T_FIELDSET},
- { P("FIG")	, fig_attr,	HTML_FIG_ATTRIBUTES,	SGML_MIXED,T_FIG},
- { P("FN")	, fn_attr,	HTML_FN_ATTRIBUTES,	SGML_MIXED,T_FN},
- { P("FONT")	, font_attr,	HTML_FONT_ATTRIBUTES,	SGML_MIXED,T_FONT},
- { P("FORM")	, form_attr,	HTML_FORM_ATTRIBUTES,	SGML_MIXED,T_FORM},
- { P("FRAME")	, frame_attr,	HTML_FRAME_ATTRIBUTES,	SGML_EMPTY,T_FRAME},
- { P("FRAMESET"), frameset_attr,HTML_FRAMESET_ATTRIBUTES, SGML_ELEMENT,T_FRAMESET},
- { P0("H1")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H1},
- { P0("H2")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H2},
- { P0("H3")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H3},
- { P0("H4")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H4},
- { P0("H5")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H5},
- { P0("H6")	, h_attr,	HTML_H_ATTRIBUTES,	SGML_MIXED,T_H6},
- { P("HEAD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_ELEMENT,T_HEAD},
- { P("HR")	, hr_attr,	HTML_HR_ATTRIBUTES,	SGML_EMPTY,T_HR},
- { P("HTML")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_HTML},
- { P("HY")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_HY},
- { P("I")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_I},
- { P("IFRAME")	, iframe_attr,	HTML_IFRAME_ATTRIBUTES, SGML_MIXED,T_IFRAME},
- { P("IMG")	, img_attr,	HTML_IMG_ATTRIBUTES,	SGML_EMPTY,T_IMG},
- { P("INPUT")	, input_attr,	HTML_INPUT_ATTRIBUTES,	SGML_EMPTY,T_INPUT},
- { P("INS")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_INS},
- { P("ISINDEX") , isindex_attr, HTML_ISINDEX_ATTRIBUTES,SGML_EMPTY,T_ISINDEX},
- { P("KBD")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_KBD},
- { P("KEYGEN")	, keygen_attr,	HTML_KEYGEN_ATTRIBUTES, SGML_EMPTY,T_KEYGEN},
- { P("LABEL")	, label_attr,	HTML_LABEL_ATTRIBUTES,	SGML_MIXED,T_LABEL},
- { P("LEGEND")	, legend_attr,	HTML_LEGEND_ATTRIBUTES, SGML_MIXED,T_LEGEND},
- { P("LH")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_LH},
- { P("LI")	, li_attr,	HTML_LI_ATTRIBUTES,	SGML_MIXED,T_LI},
- { P("LINK")	, link_attr,	HTML_LINK_ATTRIBUTES,	SGML_EMPTY,T_LINK},
- { P("LISTING") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_LISTING},
- { P("MAP")	, map_attr,	HTML_MAP_ATTRIBUTES,	SGML_ELEMENT,T_MAP},
- { P("MARQUEE") , gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_MARQUEE},
- { P("MATH")	, math_attr,	HTML_MATH_ATTRIBUTES,	SGML_PCDATA,T_MATH},
- { P("MENU")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_MENU},
- { P("META")	, meta_attr,	HTML_META_ATTRIBUTES,	SGML_EMPTY,T_META},
- { P("NEXTID")	, nextid_attr,	1,			SGML_EMPTY,T_NEXTID},
- { P("NOFRAMES"), gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_NOFRAMES},
- { P("NOTE")	, note_attr,	HTML_NOTE_ATTRIBUTES,	SGML_MIXED,T_NOTE},
- { P("OBJECT")	, object_attr,	HTML_OBJECT_ATTRIBUTES, SGML_LITTERAL,T_OBJECT},
- { P("OL")	, ol_attr,	HTML_OL_ATTRIBUTES,	SGML_MIXED,T_OL},
- { P("OPTION")	, option_attr,	HTML_OPTION_ATTRIBUTES, SGML_PCDATA,T_OPTION},
- { P("OVERLAY") , overlay_attr, HTML_OVERLAY_ATTRIBUTES, SGML_PCDATA,T_OVERLAY},
- { P("P")	, p_attr,	HTML_P_ATTRIBUTES,	SGML_MIXED,T_P},
- { P("PARAM")	, param_attr,	HTML_PARAM_ATTRIBUTES,	SGML_EMPTY,T_PARAM},
- { P("PLAINTEXT"), gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_PLAINTEXT},
- { P0("PRE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_PRE},
- { P("Q")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_Q},
- { P("S")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_S},
- { P("SAMP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SAMP},
- { P("SCRIPT")	, script_attr,	HTML_SCRIPT_ATTRIBUTES, SGML_SCRIPT,T_SCRIPT},
- { P("SELECT")	, select_attr,	HTML_SELECT_ATTRIBUTES, SGML_ELEMENT,T_SELECT},
- { P("SHY")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_SHY},
- { P("SMALL")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SMALL},
- { P("SPAN")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SPAN},
- { P("SPOT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_SPOT},
- { P("STRIKE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_STRIKE},
- { P("STRONG")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_STRONG},
- { P("STYLE")	, style_attr,	HTML_STYLE_ATTRIBUTES,	SGML_CDATA,T_STYLE},
- { P("SUB")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SUB},
- { P("SUP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_SUP},
- { P("TAB")	, tab_attr,	HTML_TAB_ATTRIBUTES,	SGML_EMPTY,T_TAB},
- { P("TABLE")	, table_attr,	HTML_TABLE_ATTRIBUTES,	SGML_ELEMENT,T_TABLE},
- { P("TBODY")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_ELEMENT,T_TBODY},
- { P("TD")	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_MIXED,T_TD},
- { P("TEXTAREA"), textarea_attr,HTML_TEXTAREA_ATTRIBUTES, SGML_PCDATA,T_TEXTAREA},
- { P("TEXTFLOW"), bodytext_attr,HTML_BODYTEXT_ATTRIBUTES, SGML_MIXED,T_TEXTFLOW},
- { P("TFOOT")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_ELEMENT,T_TFOOT},
- { P("TH")	, td_attr,	HTML_TD_ATTRIBUTES,	SGML_MIXED,T_TH},
- { P("THEAD")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_ELEMENT,T_THEAD},
- { P("TITLE")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_PCDATA,T_TITLE},
- { P("TR")	, tr_attr,	HTML_TR_ATTRIBUTES,	SGML_MIXED,T_TR},
- { P("TT")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_TT},
- { P("U")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_U},
- { P("UL")	, ul_attr,	HTML_UL_ATTRIBUTES,	SGML_MIXED,T_UL},
- { P("VAR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_MIXED,T_VAR},
- { P("WBR")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_EMPTY,T_WBR},
- { P0("XMP")	, gen_attr,	HTML_GEN_ATTRIBUTES,	SGML_LITTERAL,T_XMP},
- /*  additional (alternative variants), not counted in HTML_ELEMENTS: */
-/* This one will be used as a temporary substitute within the parser when
-   it has been signalled to parse OBJECT content as MIXED. - kw */
- { P("OBJECT")	, object_attr,	HTML_OBJECT_ATTRIBUTES, SGML_MIXED,T_OBJECT_PCDATA},
-};
-/* *INDENT-ON* */
 
-#undef P
-#undef P0
-#undef P_
+#include <src0_HTMLDTD.h>
+#include <src1_HTMLDTD.h>
 
-/* Dummy space, will be filled with the contents of either tags_new
-   or tags_old on calling HTSwitchDTD - kw */
+/* Dummy space, will be filled with the contents of either tags_table1
+   or tags_table0 on calling HTSwitchDTD - kw */
 
 static HTTag tags[HTML_ALL_ELEMENTS];
 
@@ -1659,11 +220,11 @@ const SGML_dtd HTML_dtd =
 };
 
 /* This function fills the "tags" part of the HTML_dtd structure with
-   what we want to use, either tags_old or tags_new.  Note that it
+   what we want to use, either tags_table0 or tags_table1.  Note that it
    has to be called at least once before HTML_dtd is used, otherwise
    the HTML_dtd contents will be invalid!  This could be coded in a way
    that would make an initialisation call unnecessary, but my C knowledge
-   is limited and I didn't want to list the whole tags_new table
+   is limited and I didn't want to list the whole tags_table1 table
    twice... - kw */
 void HTSwitchDTD(int new_flag)
 {
@@ -1671,13 +232,13 @@ void HTSwitchDTD(int new_flag)
 	CTRACE((tfp,
 		"HTMLDTD: Copying %s DTD element info of size %d, %d * %d\n",
 		new_flag ? "strict" : "tagsoup",
-		(int) (new_flag ? sizeof(tags_new) : sizeof(tags_old)),
+		(int) (new_flag ? sizeof(tags_table1) : sizeof(tags_table0)),
 		HTML_ALL_ELEMENTS,
 		(int) sizeof(HTTag)));
     if (new_flag)
-	memcpy(tags, tags_new, HTML_ALL_ELEMENTS * sizeof(HTTag));
+	memcpy(tags, tags_table1, HTML_ALL_ELEMENTS * sizeof(HTTag));
     else
-	memcpy(tags, tags_old, HTML_ALL_ELEMENTS * sizeof(HTTag));
+	memcpy(tags, tags_table0, HTML_ALL_ELEMENTS * sizeof(HTTag));
 }
 
 HTTag HTTag_unrecognized =
diff --git a/WWW/Library/Implementation/HTMLDTD.h b/WWW/Library/Implementation/HTMLDTD.h
index 48b919e8..10b0308f 100644
--- a/WWW/Library/Implementation/HTMLDTD.h
+++ b/WWW/Library/Implementation/HTMLDTD.h
@@ -1,4 +1,7 @@
-/*				 The HTML DTD -- software interface in libwww
+/*
+ * $LynxId: HTMLDTD.h,v 1.32 2008/07/06 17:38:13 tom Exp $
+ *
+			      The HTML DTD -- software interface in libwww
 			      HTML DTD - SOFTWARE INTERFACE
 
    SGML purists should excuse the use of the term "DTD" in this file to
@@ -28,945 +31,8 @@ extern "C" {
 			      !(HTML_dtd.tags[e].flags & Tgf_nreie))
 #define ReallyEmptyTag(t) ((t->contents == SGML_EMPTY) && \
 			   !(t->flags & Tgf_nreie))
-/*
-
-Element Numbers
-
- *//*
-
-   Must Match all tables by element!
-   These include tables in HTMLDTD.c and code in HTML.c.
-
- */ typedef enum {
-	HTML_A,
-	HTML_ABBR,
-	HTML_ACRONYM,
-	HTML_ADDRESS,
-	HTML_APPLET,
-	HTML_AREA,
-	HTML_AU,
-	HTML_AUTHOR,
-	HTML_B,
-	HTML_BANNER,
-	HTML_BASE,
-	HTML_BASEFONT,
-	HTML_BDO,
-	HTML_BGSOUND,
-	HTML_BIG,
-	HTML_BLINK,
-	HTML_BLOCKQUOTE,
-	HTML_BODY,
-	HTML_BODYTEXT,
-	HTML_BQ,
-	HTML_BR,
-	HTML_BUTTON,
-	HTML_CAPTION,
-	HTML_CENTER,
-	HTML_CITE,
-	HTML_CODE,
-	HTML_COL,
-	HTML_COLGROUP,
-	HTML_COMMENT,
-	HTML_CREDIT,
-	HTML_DD,
-	HTML_DEL,
-	HTML_DFN,
-	HTML_DIR,
-	HTML_DIV,
-	HTML_DL,
-	HTML_DLC,
-	HTML_DT,
-	HTML_EM,
-	HTML_EMBED,
-	HTML_FIELDSET,
-	HTML_FIG,
-	HTML_FN,
-	HTML_FONT,
-	HTML_FORM,
-	HTML_FRAME,
-	HTML_FRAMESET,
-	HTML_H1,
-	HTML_H2,
-	HTML_H3,
-	HTML_H4,
-	HTML_H5,
-	HTML_H6,
-	HTML_HEAD,
-	HTML_HR,
-	HTML_HTML,
-	HTML_HY,
-	HTML_I,
-	HTML_IFRAME,
-	HTML_IMG,
-	HTML_INPUT,
-	HTML_INS,
-	HTML_ISINDEX,
-	HTML_KBD,
-	HTML_KEYGEN,
-	HTML_LABEL,
-	HTML_LEGEND,
-	HTML_LH,
-	HTML_LI,
-	HTML_LINK,
-	HTML_LISTING,
-	HTML_MAP,
-	HTML_MARQUEE,
-	HTML_MATH,
-	HTML_MENU,
-	HTML_META,
-	HTML_NEXTID,
-	HTML_NOFRAMES,
-	HTML_NOTE,
-	HTML_OBJECT,
-	HTML_OL,
-	HTML_OPTION,
-	HTML_OVERLAY,
-	HTML_P,
-	HTML_PARAM,
-	HTML_PLAINTEXT,
-	HTML_PRE,
-	HTML_Q,
-	HTML_S,
-	HTML_SAMP,
-	HTML_SCRIPT,
-	HTML_SELECT,
-	HTML_SHY,
-	HTML_SMALL,
-	HTML_SPAN,
-	HTML_SPOT,
-	HTML_STRIKE,
-	HTML_STRONG,
-	HTML_STYLE,
-	HTML_SUB,
-	HTML_SUP,
-	HTML_TAB,
-	HTML_TABLE,
-	HTML_TBODY,
-	HTML_TD,
-	HTML_TEXTAREA,
-	HTML_TEXTFLOW,
-	HTML_TFOOT,
-	HTML_TH,
-	HTML_THEAD,
-	HTML_TITLE,
-	HTML_TR,
-	HTML_TT,
-	HTML_U,
-	HTML_UL,
-	HTML_VAR,
-	HTML_WBR,
-	HTML_XMP,
-	HTML_ALT_OBJECT
-    } HTMLElement;
-
-/* Notes: HTML.c uses a different extension of the HTML_ELEMENTS space
-          privately, see HTNestedList.h. */
-/*        Don't replace HTML_ELEMENTS with TABLESIZE(mumble_dtd.tags). */
-/* Keep the following defines in synch with the above enum! */
-
-/* HTML_ELEMENTS:     number of elements visible to Lynx code in general,
-                      alphabetic (ASCII) order. */
-#define HTML_ELEMENTS 118
-
-/* HTML_ALL_ELEMENTS: number of elements visible to SGML parser,
-                      additional variant(s) at end. */
-#define HTML_ALL_ELEMENTS 119
-
-/*
-
-Attribute numbers
-
- */
-
-/*
-
-   Identifier is HTML_<element>_<attribute>.
-   These must match the tables in HTML.c!
-
- */
-#define HTML_A_ACCESSKEY        0
-#define HTML_A_CHARSET          1	/* i18n draft, added tentatively - KW */
-#define HTML_A_CLASS            2
-#define HTML_A_CLEAR            3
-#define HTML_A_COORDS           4
-#define HTML_A_DIR              5
-#define HTML_A_HREF             6
-#define HTML_A_ID               7
-#define HTML_A_ISMAP            8
-#define HTML_A_LANG             9
-#define HTML_A_MD              10
-#define HTML_A_NAME            11
-#define HTML_A_NOTAB           12
-#define HTML_A_ONCLICK         13
-#define HTML_A_ONMOUSEOUT      14
-#define HTML_A_ONMOUSEOVER     15
-#define HTML_A_REL             16
-#define HTML_A_REV             17
-#define HTML_A_SHAPE           18
-#define HTML_A_STYLE           19
-#define HTML_A_TABINDEX        20
-#define HTML_A_TARGET          21
-#define HTML_A_TITLE           22
-#define HTML_A_TYPE            23
-#define HTML_A_URN             24
-#define HTML_A_ATTRIBUTES      25
-
-#define HTML_ADDRESS_CLASS      0
-#define HTML_ADDRESS_CLEAR      1
-#define HTML_ADDRESS_DIR        2
-#define HTML_ADDRESS_ID         3
-#define HTML_ADDRESS_LANG       4
-#define HTML_ADDRESS_NOWRAP     5
-#define HTML_ADDRESS_STYLE      6
-#define HTML_ADDRESS_TITLE      7
-#define HTML_ADDRESS_ATTRIBUTES 8
-
-#define HTML_APPLET_ALIGN       0
-#define HTML_APPLET_ALT         1
-#define HTML_APPLET_CLASS       2
-#define HTML_APPLET_CLEAR       3
-#define HTML_APPLET_CODE        4
-#define HTML_APPLET_CODEBASE    5
-#define HTML_APPLET_DIR         6
-#define HTML_APPLET_DOWNLOAD    7
-#define HTML_APPLET_HEIGHT      8
-#define HTML_APPLET_HSPACE      9
-#define HTML_APPLET_ID         10
-#define HTML_APPLET_LANG       11
-#define HTML_APPLET_NAME       12
-#define HTML_APPLET_STYLE      13
-#define HTML_APPLET_TITLE      14
-#define HTML_APPLET_VSPACE     15
-#define HTML_APPLET_WIDTH      16
-#define HTML_APPLET_ATTRIBUTES 17
-
-#define HTML_AREA_ALT           0
-#define HTML_AREA_CLASS         1
-#define HTML_AREA_CLEAR         2
-#define HTML_AREA_COORDS        3
-#define HTML_AREA_DIR           4
-#define HTML_AREA_HREF          5
-#define HTML_AREA_ID            6
-#define HTML_AREA_LANG          7
-#define HTML_AREA_NOHREF        8
-#define HTML_AREA_NONOTAB       9
-#define HTML_AREA_ONCLICK      10
-#define HTML_AREA_ONMOUSEOUT   11
-#define HTML_AREA_ONMOUSEOVER  12
-#define HTML_AREA_SHAPE        13
-#define HTML_AREA_STYLE        14
-#define HTML_AREA_TABINDEX     15
-#define HTML_AREA_TARGET       16
-#define HTML_AREA_TITLE        17
-#define HTML_AREA_ATTRIBUTES   18
-
-#define HTML_BASE_HREF          0
-#define HTML_BASE_TARGET        1
-#define HTML_BASE_TITLE         2
-#define HTML_BASE_ATTRIBUTES    3
-
-#define HTML_BGSOUND_CLASS      0
-#define HTML_BGSOUND_CLEAR      1
-#define HTML_BGSOUND_DIR        2
-#define HTML_BGSOUND_ID         3
-#define HTML_BGSOUND_LANG       4
-#define HTML_BGSOUND_LOOP       5
-#define HTML_BGSOUND_SRC        6
-#define HTML_BGSOUND_STYLE      7
-#define HTML_BGSOUND_TITLE      8
-#define HTML_BGSOUND_ATTRIBUTES 9
-
-#define HTML_BODY_ALINK         0
-#define HTML_BODY_BACKGROUND    1
-#define HTML_BODY_BGCOLOR       2
-#define HTML_BODY_CLASS         3
-#define HTML_BODY_CLEAR         4
-#define HTML_BODY_DIR           5
-#define HTML_BODY_ID            6
-#define HTML_BODY_LANG          7
-#define HTML_BODY_LINK          8
-#define HTML_BODY_ONLOAD        9
-#define HTML_BODY_ONUNLOAD     10
-#define HTML_BODY_STYLE        11
-#define HTML_BODY_TEXT         12
-#define HTML_BODY_TITLE        13
-#define HTML_BODY_VLINK        14
-#define HTML_BODY_ATTRIBUTES   15
-
-#define HTML_BODYTEXT_CLASS     0
-#define HTML_BODYTEXT_CLEAR     1
-#define HTML_BODYTEXT_DATA      2
-#define HTML_BODYTEXT_DIR       3
-#define HTML_BODYTEXT_ID        4
-#define HTML_BODYTEXT_LANG      5
-#define HTML_BODYTEXT_NAME      6
-#define HTML_BODYTEXT_OBJECT    7
-#define HTML_BODYTEXT_REF       8
-#define HTML_BODYTEXT_STYLE     9
-#define HTML_BODYTEXT_TITLE    10
-#define HTML_BODYTEXT_TYPE     11
-#define HTML_BODYTEXT_VALUE    12
-#define HTML_BODYTEXT_VALUETYPE  13
-#define HTML_BODYTEXT_ATTRIBUTES 14
-
-#define HTML_BQ_CITE             0
-#define HTML_BQ_CLASS            1
-#define HTML_BQ_CLEAR            2
-#define HTML_BQ_DIR              3
-#define HTML_BQ_ID               4
-#define HTML_BQ_LANG             5
-#define HTML_BQ_NOWRAP           6
-#define HTML_BQ_STYLE            7
-#define HTML_BQ_TITLE            8
-#define HTML_BQ_ATTRIBUTES       9
-
-#define HTML_BUTTON_CLASS       0
-#define HTML_BUTTON_CLEAR       1
-#define HTML_BUTTON_DIR         2
-#define HTML_BUTTON_DISABLED    3
-#define HTML_BUTTON_ID          4
-#define HTML_BUTTON_LANG        5
-#define HTML_BUTTON_NAME        6
-#define HTML_BUTTON_ONFOCUS     7
-#define HTML_BUTTON_ONBLUR      8
-#define HTML_BUTTON_STYLE       9
-#define HTML_BUTTON_TABINDEX   10
-#define HTML_BUTTON_TITLE      11
-#define HTML_BUTTON_TYPE       12
-#define HTML_BUTTON_VALUE      13
-#define HTML_BUTTON_ATTRIBUTES 14
-
-#define HTML_CAPTION_ACCESSKEY  0
-#define HTML_CAPTION_ALIGN      1
-#define HTML_CAPTION_CLASS      2
-#define HTML_CAPTION_CLEAR      3
-#define HTML_CAPTION_DIR        4
-#define HTML_CAPTION_ID         5
-#define HTML_CAPTION_LANG       6
-#define HTML_CAPTION_STYLE      7
-#define HTML_CAPTION_TITLE      8
-#define HTML_CAPTION_ATTRIBUTES 9
-
-#define HTML_COL_ALIGN          0
-#define HTML_COL_CHAR           1
-#define HTML_COL_CHAROFF        2
-#define HTML_COL_CLASS          3
-#define HTML_COL_CLEAR          4
-#define HTML_COL_DIR            5
-#define HTML_COL_ID             6
-#define HTML_COL_LANG           7
-#define HTML_COL_SPAN           8
-#define HTML_COL_STYLE          9
-#define HTML_COL_TITLE         10
-#define HTML_COL_VALIGN        11
-#define HTML_COL_WIDTH         12
-#define HTML_COL_ATTRIBUTES    13
-
-#define HTML_CREDIT_CLASS       0
-#define HTML_CREDIT_CLEAR       1
-#define HTML_CREDIT_DIR         2
-#define HTML_CREDIT_ID          3
-#define HTML_CREDIT_LANG        4
-#define HTML_CREDIT_STYLE       5
-#define HTML_CREDIT_TITLE       6
-#define HTML_CREDIT_ATTRIBUTES  7
-
-#define HTML_DIV_ALIGN          0
-#define HTML_DIV_CLASS          1
-#define HTML_DIV_CLEAR          2
-#define HTML_DIV_DIR            3
-#define HTML_DIV_ID             4
-#define HTML_DIV_LANG           5
-#define HTML_DIV_STYLE          6
-#define HTML_DIV_TITLE          7
-#define HTML_DIV_ATTRIBUTES     8
-
-#define HTML_DL_CLASS           0
-#define HTML_DL_CLEAR           1
-#define HTML_DL_COMPACT         2
-#define HTML_DL_DIR             3
-#define HTML_DL_ID              4
-#define HTML_DL_LANG            5
-#define HTML_DL_STYLE           6
-#define HTML_DL_TITLE           7
-#define HTML_DL_ATTRIBUTES      8
-
-#define HTML_EMBED_ALIGN        0
-#define HTML_EMBED_ALT          1
-#define HTML_EMBED_BORDER       2
-#define HTML_EMBED_CLASS        3
-#define HTML_EMBED_CLEAR        4
-#define HTML_EMBED_DIR          5
-#define HTML_EMBED_HEIGHT       6
-#define HTML_EMBED_ID           7
-#define HTML_EMBED_IMAGEMAP     8
-#define HTML_EMBED_ISMAP        9
-#define HTML_EMBED_LANG        10
-#define HTML_EMBED_MD          11
-#define HTML_EMBED_NAME        12
-#define HTML_EMBED_NOFLOW      13
-#define HTML_EMBED_PARAMS      14
-#define HTML_EMBED_SRC         15
-#define HTML_EMBED_STYLE       16
-#define HTML_EMBED_TITLE       17
-#define HTML_EMBED_UNITS       18
-#define HTML_EMBED_USEMAP      19
-#define HTML_EMBED_WIDTH       20
-#define HTML_EMBED_ATTRIBUTES  21
-
-#define HTML_FIELDSET_CLASS     0
-#define HTML_FIELDSET_CLEAR     1
-#define HTML_FIELDSET_DIR       2
-#define HTML_FIELDSET_ID        3
-#define HTML_FIELDSET_LANG      4
-#define HTML_FIELDSET_STYLE     5
-#define HTML_FIELDSET_TITLE     6
-#define HTML_FIELDSET_ATTRIBUTES 7
-
-#define HTML_FIG_ALIGN          0
-#define HTML_FIG_BORDER         1
-#define HTML_FIG_CLASS          2
-#define HTML_FIG_CLEAR          3
-#define HTML_FIG_DIR            4
-#define HTML_FIG_HEIGHT         5
-#define HTML_FIG_ID             6
-#define HTML_FIG_IMAGEMAP       7
-#define HTML_FIG_ISOBJECT       8
-#define HTML_FIG_LANG           9
-#define HTML_FIG_MD            10
-#define HTML_FIG_NOFLOW        11
-#define HTML_FIG_SRC           12
-#define HTML_FIG_STYLE         13
-#define HTML_FIG_TITLE         14
-#define HTML_FIG_UNITS         15
-#define HTML_FIG_WIDTH         16
-#define HTML_FIG_ATTRIBUTES    17
-
-#define HTML_FN_CLASS           0
-#define HTML_FN_CLEAR           1
-#define HTML_FN_DIR             2
-#define HTML_FN_ID              3
-#define HTML_FN_LANG            4
-#define HTML_FN_STYLE           5
-#define HTML_FN_TITLE           6
-#define HTML_FN_ATTRIBUTES      7
-
-#define HTML_FONT_CLASS         0
-#define HTML_FONT_CLEAR         1
-#define HTML_FONT_COLOR         2
-#define HTML_FONT_DIR           3
-#define HTML_FONT_FACE          4
-#define HTML_FONT_ID            5
-#define HTML_FONT_LANG          6
-#define HTML_FONT_SIZE          7
-#define HTML_FONT_STYLE         8
-#define HTML_FONT_ATTRIBUTES    9
-
-#define HTML_FORM_ACCEPT_CHARSET  0	/* HTML 4.0 draft - kw */
-#define HTML_FORM_ACTION        1
-#define HTML_FORM_CLASS         2
-#define HTML_FORM_CLEAR         3
-#define HTML_FORM_DIR           4
-#define HTML_FORM_ENCTYPE       5
-#define HTML_FORM_ID            6
-#define HTML_FORM_LANG          7
-#define HTML_FORM_METHOD        8
-#define HTML_FORM_ONSUBMIT      9
-#define HTML_FORM_SCRIPT       10
-#define HTML_FORM_STYLE        11
-#define HTML_FORM_SUBJECT      12
-#define HTML_FORM_TARGET       13
-#define HTML_FORM_TITLE        14
-#define HTML_FORM_ATTRIBUTES   15
-
-#define HTML_FRAME_ID            0
-#define HTML_FRAME_LONGDESC      1
-#define HTML_FRAME_MARGINHEIGHT  2
-#define HTML_FRAME_MARGINWIDTH   3
-#define HTML_FRAME_NAME          4
-#define HTML_FRAME_NORESIZE      5
-#define HTML_FRAME_SCROLLING     6
-#define HTML_FRAME_SRC           7
-#define HTML_FRAME_ATTRIBUTES    8
-
-#define HTML_FRAMESET_COLS      0
-#define HTML_FRAMESET_ROWS      1
-#define HTML_FRAMESET_ATTRIBUTES 2
-
-#define HTML_GEN_CLASS          0
-#define HTML_GEN_CLEAR          1
-#define HTML_GEN_DIR            2
-#define HTML_GEN_ID             3
-#define HTML_GEN_LANG           4
-#define HTML_GEN_STYLE          5
-#define HTML_GEN_TITLE          6
-#define HTML_GEN_ATTRIBUTES     7
-
-#define HTML_H_ALIGN            0
-#define HTML_H_CLASS            1
-#define HTML_H_CLEAR            2
-#define HTML_H_DINGBAT          3
-#define HTML_H_DIR              4
-#define HTML_H_ID               5
-#define HTML_H_LANG             6
-#define HTML_H_MD               7
-#define HTML_H_NOWRAP           8
-#define HTML_H_SEQNUM           9
-#define HTML_H_SKIP            10
-#define HTML_H_SRC             11
-#define HTML_H_STYLE           12
-#define HTML_H_TITLE           13
-#define HTML_H_ATTRIBUTES      14
-
-#define HTML_HR_ALIGN           0
-#define HTML_HR_CLASS           1
-#define HTML_HR_CLEAR           2
-#define HTML_HR_DIR             3
-#define HTML_HR_ID              4
-#define HTML_HR_MD              5
-#define HTML_HR_NOSHADE         6
-#define HTML_HR_SIZE            7
-#define HTML_HR_SRC             8
-#define HTML_HR_STYLE           9
-#define HTML_HR_TITLE          10
-#define HTML_HR_WIDTH          11
-#define HTML_HR_ATTRIBUTES     12
-
-#define HTML_IFRAME_ALIGN         0
-#define HTML_IFRAME_FRAMEBORDER   1
-#define HTML_IFRAME_HEIGHT        2
-#define HTML_IFRAME_ID            3
-#define HTML_IFRAME_LONGDESC      4
-#define HTML_IFRAME_MARGINHEIGHT  5
-#define HTML_IFRAME_MARGINWIDTH   6
-#define HTML_IFRAME_NAME          7
-#define HTML_IFRAME_SCROLLING     8
-#define HTML_IFRAME_SRC           9
-#define HTML_IFRAME_STYLE        10
-#define HTML_IFRAME_WIDTH        11
-#define HTML_IFRAME_ATTRIBUTES   12
-
-#define HTML_IMG_ALIGN           0
-#define HTML_IMG_ALT             1
-#define HTML_IMG_BORDER          2
-#define HTML_IMG_CLASS           3
-#define HTML_IMG_CLEAR           4
-#define HTML_IMG_DIR             5
-#define HTML_IMG_HEIGHT          6
-#define HTML_IMG_ID              7
-#define HTML_IMG_ISMAP           8
-#define HTML_IMG_ISOBJECT        9
-#define HTML_IMG_LANG           10
-#define HTML_IMG_LONGDESC       11
-#define HTML_IMG_MD             12
-#define HTML_IMG_SRC            13
-#define HTML_IMG_STYLE          14
-#define HTML_IMG_TITLE          15
-#define HTML_IMG_UNITS          16
-#define HTML_IMG_USEMAP         17
-#define HTML_IMG_WIDTH          18
-#define HTML_IMG_ATTRIBUTES     19
-
-#define HTML_INPUT_ACCEPT       0
-#define HTML_INPUT_ACCEPT_CHARSET  1	/* RFC 2070 HTML i18n - kw */
-#define HTML_INPUT_ALIGN        2
-#define HTML_INPUT_ALT          3
-#define HTML_INPUT_CHECKED      4
-#define HTML_INPUT_CLASS        5
-#define HTML_INPUT_CLEAR        6
-#define HTML_INPUT_DIR          7
-#define HTML_INPUT_DISABLED     8
-#define HTML_INPUT_ERROR        9
-#define HTML_INPUT_HEIGHT      10
-#define HTML_INPUT_ID          11
-#define HTML_INPUT_LANG        12
-#define HTML_INPUT_MAX         13
-#define HTML_INPUT_MAXLENGTH   14
-#define HTML_INPUT_MD          15
-#define HTML_INPUT_MIN         16
-#define HTML_INPUT_NAME        17
-#define HTML_INPUT_NOTAB       18
-#define HTML_INPUT_ONBLUR      19
-#define HTML_INPUT_ONCHANGE    20
-#define HTML_INPUT_ONCLICK     21
-#define HTML_INPUT_ONFOCUS     22
-#define HTML_INPUT_ONSELECT    23
-#define HTML_INPUT_SIZE        24
-#define HTML_INPUT_SRC         25
-#define HTML_INPUT_STYLE       26
-#define HTML_INPUT_TABINDEX    27
-#define HTML_INPUT_TITLE       28
-#define HTML_INPUT_TYPE        29
-#define HTML_INPUT_VALUE       30
-#define HTML_INPUT_WIDTH       31
-#define HTML_INPUT_ATTRIBUTES  32
-
-#define HTML_ISINDEX_ACTION     0	/* Treat as synonym for HREF. - FM */
-#define HTML_ISINDEX_DIR        1
-#define HTML_ISINDEX_HREF       2	/* HTML 3.0 "action". - FM */
-#define HTML_ISINDEX_ID         3
-#define HTML_ISINDEX_LANG       4
-#define HTML_ISINDEX_PROMPT     5	/* HTML 3.0 "prompt". - FM */
-#define HTML_ISINDEX_TITLE      6
-#define HTML_ISINDEX_ATTRIBUTES 7
-
-#define HTML_KEYGEN_CHALLENGE   0
-#define HTML_KEYGEN_CLASS       1
-#define HTML_KEYGEN_DIR         2
-#define HTML_KEYGEN_ID          3
-#define HTML_KEYGEN_LANG        4
-#define HTML_KEYGEN_NAME        5
-#define HTML_KEYGEN_STYLE       6
-#define HTML_KEYGEN_TITLE       7
-#define HTML_KEYGEN_ATTRIBUTES  8
-
-#define HTML_LABEL_ACCESSKEY    0
-#define HTML_LABEL_CLASS        1
-#define HTML_LABEL_CLEAR        2
-#define HTML_LABEL_DIR          3
-#define HTML_LABEL_FOR          4
-#define HTML_LABEL_ID           5
-#define HTML_LABEL_LANG         6
-#define HTML_LABEL_ONCLICK      7
-#define HTML_LABEL_STYLE        8
-#define HTML_LABEL_TITLE        9
-#define HTML_LABEL_ATTRIBUTES  10
-
-#define HTML_LEGEND_ACCESSKEY   0
-#define HTML_LEGEND_ALIGN       1
-#define HTML_LEGEND_CLASS       2
-#define HTML_LEGEND_CLEAR       3
-#define HTML_LEGEND_DIR         4
-#define HTML_LEGEND_ID          5
-#define HTML_LEGEND_LANG        6
-#define HTML_LEGEND_STYLE       7
-#define HTML_LEGEND_TITLE       8
-#define HTML_LEGEND_ATTRIBUTES  9
-
-#define HTML_LI_CLASS           0
-#define HTML_LI_CLEAR           1
-#define HTML_LI_DINGBAT         2
-#define HTML_LI_DIR             3
-#define HTML_LI_ID              4
-#define HTML_LI_LANG            5
-#define HTML_LI_MD              6
-#define HTML_LI_SKIP            7
-#define HTML_LI_SRC             8
-#define HTML_LI_STYLE           9
-#define HTML_LI_TITLE          10
-#define HTML_LI_TYPE           11
-#define HTML_LI_VALUE          12
-#define HTML_LI_ATTRIBUTES     13
-
-#define HTML_LINK_CHARSET       0	/* RFC 2070 HTML i18n - kw */
-#define HTML_LINK_CLASS         1
-#define HTML_LINK_HREF          2
-#define HTML_LINK_ID            3
-#define HTML_LINK_MEDIA         4
-#define HTML_LINK_REL           5
-#define HTML_LINK_REV           6
-#define HTML_LINK_STYLE         7
-#define HTML_LINK_TARGET        8
-#define HTML_LINK_TITLE         9
-#define HTML_LINK_TYPE         10
-#define HTML_LINK_ATTRIBUTES   11
-
-#define HTML_MAP_CLASS          0
-#define HTML_MAP_CLEAR          1
-#define HTML_MAP_DIR            2
-#define HTML_MAP_ID             3
-#define HTML_MAP_LANG           4
-#define HTML_MAP_NAME           5
-#define HTML_MAP_STYLE          6
-#define HTML_MAP_TITLE          7
-#define HTML_MAP_ATTRIBUTES     8
-
-#define HTML_MATH_BOX           0
-#define HTML_MATH_CLASS         1
-#define HTML_MATH_CLEAR         2
-#define HTML_MATH_DIR           3
-#define HTML_MATH_ID            4
-#define HTML_MATH_LANG          5
-#define HTML_MATH_STYLE         6
-#define HTML_MATH_TITLE         7
-#define HTML_MATH_ATTRIBUTES    8
-
-#define HTML_META_CONTENT       0
-#define HTML_META_HTTP_EQUIV    1	/* For parsing in HTML.c - FM */
-#define HTML_META_NAME          2
-#define HTML_META_ATTRIBUTES    3
-
-#define NEXTID_N                0
-
-#define HTML_NOTE_CLASS         0
-#define HTML_NOTE_CLEAR         1
-#define HTML_NOTE_DIR           2
-#define HTML_NOTE_ID            3
-#define HTML_NOTE_LANG          4
-#define HTML_NOTE_MD            5
-#define HTML_NOTE_ROLE          6	/* Old name for CLASS - FM */
-#define HTML_NOTE_SRC           7
-#define HTML_NOTE_STYLE         8
-#define HTML_NOTE_TITLE         9
-#define HTML_NOTE_ATTRIBUTES   10
-
-#define HTML_OBJECT_ALIGN       0
-#define HTML_OBJECT_BORDER      1
-#define HTML_OBJECT_CLASS       2
-#define HTML_OBJECT_CLASSID     3
-#define HTML_OBJECT_CODEBASE    4
-#define HTML_OBJECT_CODETYPE    5
-#define HTML_OBJECT_DATA        6
-#define HTML_OBJECT_DECLARE     7
-#define HTML_OBJECT_DIR         8
-#define HTML_OBJECT_HEIGHT      9
-#define HTML_OBJECT_HSPACE     10
-#define HTML_OBJECT_ID         11
-#define HTML_OBJECT_ISMAP      12
-#define HTML_OBJECT_LANG       13
-#define HTML_OBJECT_NAME       14
-#define HTML_OBJECT_NOTAB      15
-#define HTML_OBJECT_SHAPES     16
-#define HTML_OBJECT_STANDBY    17
-#define HTML_OBJECT_STYLE      18
-#define HTML_OBJECT_TABINDEX   19
-#define HTML_OBJECT_TITLE      20
-#define HTML_OBJECT_TYPE       21
-#define HTML_OBJECT_USEMAP     22
-#define HTML_OBJECT_VSPACE     23
-#define HTML_OBJECT_WIDTH      24
-#define HTML_OBJECT_ATTRIBUTES 25
-
-#define HTML_OL_CLASS           0
-#define HTML_OL_CLEAR           1
-#define HTML_OL_COMPACT         2
-#define HTML_OL_CONTINUE        3
-#define HTML_OL_DIR             4
-#define HTML_OL_ID              5
-#define HTML_OL_LANG            6
-#define HTML_OL_SEQNUM          7
-#define HTML_OL_START           8
-#define HTML_OL_STYLE           9
-#define HTML_OL_TITLE          10
-#define HTML_OL_TYPE           11
-#define HTML_OL_ATTRIBUTES     12
-
-#define HTML_OPTION_CLASS       0
-#define HTML_OPTION_CLEAR       1
-#define HTML_OPTION_DIR         2
-#define HTML_OPTION_DISABLED    3
-#define HTML_OPTION_ERROR       4
-#define HTML_OPTION_ID          5
-#define HTML_OPTION_LANG        6
-#define HTML_OPTION_SELECTED    7
-#define HTML_OPTION_SHAPE       8
-#define HTML_OPTION_STYLE       9
-#define HTML_OPTION_TITLE      10
-#define HTML_OPTION_VALUE      11
-#define HTML_OPTION_ATTRIBUTES 12
-
-#define HTML_OVERLAY_CLASS      0
-#define HTML_OVERLAY_HEIGHT     1
-#define HTML_OVERLAY_ID         2
-#define HTML_OVERLAY_IMAGEMAP   3
-#define HTML_OVERLAY_MD         4
-#define HTML_OVERLAY_SRC        5
-#define HTML_OVERLAY_STYLE      6
-#define HTML_OVERLAY_TITLE      7
-#define HTML_OVERLAY_UNITS      8
-#define HTML_OVERLAY_WIDTH      9
-#define HTML_OVERLAY_X         10
-#define HTML_OVERLAY_Y         11
-#define HTML_OVERLAY_ATTRIBUTES 12
-
-#define HTML_P_ALIGN            0
-#define HTML_P_CLASS            1
-#define HTML_P_CLEAR            2
-#define HTML_P_DIR              3
-#define HTML_P_ID               4
-#define HTML_P_LANG             5
-#define HTML_P_NOWRAP           6
-#define HTML_P_STYLE            7
-#define HTML_P_TITLE            8
-#define HTML_P_ATTRIBUTES       9
-
-#define HTML_PARAM_ACCEPT       0
-#define HTML_PARAM_ACCEPT_CHARSET  1
-#define HTML_PARAM_ACCEPT_ENCODING 2
-#define HTML_PARAM_CLASS        3
-#define HTML_PARAM_CLEAR        4
-#define HTML_PARAM_DATA         5
-#define HTML_PARAM_DIR          6
-#define HTML_PARAM_ID           7
-#define HTML_PARAM_LANG         8
-#define HTML_PARAM_NAME         9
-#define HTML_PARAM_OBJECT      10
-#define HTML_PARAM_REF         11
-#define HTML_PARAM_STYLE       12
-#define HTML_PARAM_TITLE       13
-#define HTML_PARAM_TYPE        14
-#define HTML_PARAM_VALUE       15
-#define HTML_PARAM_VALUEREF    16	/* Use VALUETYPE (DATA|REF|OBJECT). - FM */
-#define HTML_PARAM_VALUETYPE   17
-#define HTML_PARAM_ATTRIBUTES  18
-
-#define HTML_SCRIPT_CLASS       0
-#define HTML_SCRIPT_CLEAR       1
-#define HTML_SCRIPT_DIR         2
-#define HTML_SCRIPT_EVENT       3
-#define HTML_SCRIPT_FOR         4
-#define HTML_SCRIPT_ID          5
-#define HTML_SCRIPT_LANG        6
-#define HTML_SCRIPT_LANGUAGE    7
-#define HTML_SCRIPT_NAME        8
-#define HTML_SCRIPT_SCRIPTENGINE 9
-#define HTML_SCRIPT_SRC        10
-#define HTML_SCRIPT_STYLE      11
-#define HTML_SCRIPT_TITLE      12
-#define HTML_SCRIPT_TYPE       13
-#define HTML_SCRIPT_ATTRIBUTES 14
-
-#define HTML_SELECT_ALIGN       0
-#define HTML_SELECT_CLASS       1
-#define HTML_SELECT_CLEAR       2
-#define HTML_SELECT_DIR         3
-#define HTML_SELECT_DISABLED    4
-#define HTML_SELECT_ERROR       5
-#define HTML_SELECT_HEIGHT      6
-#define HTML_SELECT_ID          7
-#define HTML_SELECT_LANG        8
-#define HTML_SELECT_MD          9
-#define HTML_SELECT_MULTIPLE   10
-#define HTML_SELECT_NAME       11
-#define HTML_SELECT_NOTAB      12
-#define HTML_SELECT_ONBLUR     13
-#define HTML_SELECT_ONCHANGE   14
-#define HTML_SELECT_ONFOCUS    15
-#define HTML_SELECT_SIZE       16
-#define HTML_SELECT_STYLE      17
-#define HTML_SELECT_TABINDEX   18
-#define HTML_SELECT_TITLE      19
-#define HTML_SELECT_UNITS      20
-#define HTML_SELECT_WIDTH      21
-#define HTML_SELECT_ATTRIBUTES 22
-
-#define HTML_STYLE_DIR          0
-#define HTML_STYLE_LANG         1
-#define HTML_STYLE_NOTATION     2
-#define HTML_STYLE_TITLE        3
-#define HTML_STYLE_ATTRIBUTES   4
-
-#define HTML_TAB_ALIGN          0
-#define HTML_TAB_CLASS          1
-#define HTML_TAB_CLEAR          2
-#define HTML_TAB_DIR            3
-#define HTML_TAB_DP             4
-#define HTML_TAB_ID             5
-#define HTML_TAB_INDENT         6
-#define HTML_TAB_LANG           7
-#define HTML_TAB_STYLE          8
-#define HTML_TAB_TITLE          9
-#define HTML_TAB_TO            10
-#define HTML_TAB_ATTRIBUTES    11
-
-#define HTML_TABLE_ALIGN        0
-#define HTML_TABLE_BACKGROUND   1
-#define HTML_TABLE_BORDER       2
-#define HTML_TABLE_CELLPADDING  3
-#define HTML_TABLE_CELLSPACING  4
-#define HTML_TABLE_CLASS        5
-#define HTML_TABLE_CLEAR        6
-#define HTML_TABLE_COLS         7
-#define HTML_TABLE_COLSPEC      8
-#define HTML_TABLE_DIR          9
-#define HTML_TABLE_DP          10
-#define HTML_TABLE_FRAME       11
-#define HTML_TABLE_ID          12
-#define HTML_TABLE_LANG        13
-#define HTML_TABLE_NOFLOW      14
-#define HTML_TABLE_NOWRAP      15
-#define HTML_TABLE_RULES       16
-#define HTML_TABLE_STYLE       17
-#define HTML_TABLE_SUMMARY     18
-#define HTML_TABLE_TITLE       19
-#define HTML_TABLE_UNITS       20
-#define HTML_TABLE_WIDTH       21
-#define HTML_TABLE_ATTRIBUTES  22
-
-#define HTML_TD_ALIGN           0
-#define HTML_TD_AXES            1
-#define HTML_TD_AXIS            2
-#define HTML_TD_BACKGROUND      3
-#define HTML_TD_CHAR            4
-#define HTML_TD_CHAROFF         5
-#define HTML_TD_CLASS           6
-#define HTML_TD_CLEAR           7
-#define HTML_TD_COLSPAN         8
-#define HTML_TD_DIR             9
-#define HTML_TD_DP             10
-#define HTML_TD_HEIGHT         11
-#define HTML_TD_ID             12
-#define HTML_TD_LANG           13
-#define HTML_TD_NOWRAP         14
-#define HTML_TD_ROWSPAN        15
-#define HTML_TD_STYLE          16
-#define HTML_TD_TITLE          17
-#define HTML_TD_VALIGN         18
-#define HTML_TD_WIDTH          19
-#define HTML_TD_ATTRIBUTES     20
-
-#define HTML_TEXTAREA_ACCEPT_CHARSET  0		/* RFC 2070 HTML i18n - kw */
-#define HTML_TEXTAREA_ALIGN     1
-#define HTML_TEXTAREA_CLASS     2
-#define HTML_TEXTAREA_CLEAR     3
-#define HTML_TEXTAREA_COLS      4
-#define HTML_TEXTAREA_DIR       5
-#define HTML_TEXTAREA_DISABLED  6
-#define HTML_TEXTAREA_ERROR     7
-#define HTML_TEXTAREA_ID        8
-#define HTML_TEXTAREA_LANG      9
-#define HTML_TEXTAREA_NAME     10
-#define HTML_TEXTAREA_NOTAB    11
-#define HTML_TEXTAREA_ONBLUR   12
-#define HTML_TEXTAREA_ONCHANGE 13
-#define HTML_TEXTAREA_ONFOCUS  14
-#define HTML_TEXTAREA_ONSELECT 15
-#define HTML_TEXTAREA_ROWS     16
-#define HTML_TEXTAREA_STYLE    17
-#define HTML_TEXTAREA_TABINDEX 18
-#define HTML_TEXTAREA_TITLE    19
-#define HTML_TEXTAREA_ATTRIBUTES 20
-
-#define HTML_TR_ALIGN           0
-#define HTML_TR_CHAR            1
-#define HTML_TR_CHAROFF         2
-#define HTML_TR_CLASS           3
-#define HTML_TR_CLEAR           4
-#define HTML_TR_DIR             5
-#define HTML_TR_DP              6
-#define HTML_TR_ID              7
-#define HTML_TR_LANG            8
-#define HTML_TR_NOWRAP          9
-#define HTML_TR_STYLE          10
-#define HTML_TR_TITLE          11
-#define HTML_TR_VALIGN         12
-#define HTML_TR_ATTRIBUTES     13
 
-#define HTML_UL_CLASS           0
-#define HTML_UL_CLEAR           1
-#define HTML_UL_COMPACT         2
-#define HTML_UL_DINGBAT         3
-#define HTML_UL_DIR             4
-#define HTML_UL_ID              5
-#define HTML_UL_LANG            6
-#define HTML_UL_MD              7
-#define HTML_UL_PLAIN           8
-#define HTML_UL_SRC             9
-#define HTML_UL_STYLE          10
-#define HTML_UL_TITLE          11
-#define HTML_UL_TYPE           12
-#define HTML_UL_WRAP           13
-#define HTML_UL_ATTRIBUTES     14
+#include <hdr_HTMLDTD.h>
 
 #ifdef USE_PRETTYSRC
 /* values of HTML attributes' types */
diff --git a/WWW/Library/Implementation/HTPlain.c b/WWW/Library/Implementation/HTPlain.c
index dbcedc1f..3e40be02 100644
--- a/WWW/Library/Implementation/HTPlain.c
+++ b/WWW/Library/Implementation/HTPlain.c
@@ -616,12 +616,12 @@ static void HTPlain_write(HTStream *me, const char *s, int l)
 		/*
 		 * Ignore 8204 (zwnj) or 8205 (zwj), if we get to here.  - FM
 		 */
-		CTRACE((tfp, "HTPlain_write: Ignoring '%ld'.\n", code));
+		CTRACE((tfp, "HTPlain_write: Ignoring '%" PRI_UCode_t "'.\n", code));
 	    } else if (code == 8206 || code == 8207) {
 		/*
 		 * Ignore 8206 (lrm) or 8207 (rlm), if we get to here.  - FM
 		 */
-		CTRACE((tfp, "HTPlain_write: Ignoring '%ld'.\n", code));
+		CTRACE((tfp, "HTPlain_write: Ignoring '%" PRI_UCode_t "'.\n", code));
 	    } else {
 		/*
 		 * Out of luck, so use the UHHH notation (ugh).  - FM
diff --git a/WWW/Library/Implementation/HTRules.c b/WWW/Library/Implementation/HTRules.c
index e88963c9..382805ff 100644
--- a/WWW/Library/Implementation/HTRules.c
+++ b/WWW/Library/Implementation/HTRules.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTRules.c,v 1.30 2007/08/02 20:12:40 tom Exp $
+ * $LynxId: HTRules.c,v 1.34 2008/07/06 12:53:43 tom Exp $
  *
  *	Configuration manager for Hypertext Daemon		HTRules.c
  *	==========================================
@@ -456,7 +456,7 @@ int HTSetConfiguration(char *config)
     const char *cond_op = NULL;
     const char *cond = NULL;
     float quality, secs, secs_per_byte;
-    int maxbytes;
+    off_t maxbytes;
     int status;
 
     StrAllocCopy(line, config);
@@ -500,7 +500,7 @@ int HTSetConfiguration(char *config)
 
     } else if (0 == strcasecomp(word1, "presentation")) {
 	if (pointer)
-	    status = sscanf(pointer, "%f%f%f%d",
+	    status = sscanf(pointer, "%f%f%f%" SCN_off_t "",
 			    &quality, &secs, &secs_per_byte, &maxbytes);
 	else
 	    status = 0;
diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c
index c8f7deb6..05d41354 100644
--- a/WWW/Library/Implementation/HTTCP.c
+++ b/WWW/Library/Implementation/HTTCP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTTCP.c,v 1.93 2007/05/22 23:54:43 tom Exp $
+ * $LynxId: HTTCP.c,v 1.95 2008/07/06 12:55:40 tom Exp $
  *
  *			Generic Communication Code		HTTCP.c
  *			==========================
@@ -2091,8 +2091,9 @@ int HTDoRead(int fildes,
 #endif /* UCX && VAXC */
     }
 #ifdef USE_READPROGRESS
-    CTRACE2(TRACE_TIMING, (tfp, "...HTDoRead returns %d (%ld seconds)\n",
-			   result, (long) (time((time_t *) 0) - start)));
+    CTRACE2(TRACE_TIMING, (tfp, "...HTDoRead returns %d (%" PRI_time_t
+			   " seconds)\n",
+			   result, CAST_time_t(time((time_t *) 0) - start)));
 #endif
     return result;
 }
diff --git a/WWW/Library/Implementation/HTTP.c b/WWW/Library/Implementation/HTTP.c
index 8fb37a13..6f016442 100644
--- a/WWW/Library/Implementation/HTTP.c
+++ b/WWW/Library/Implementation/HTTP.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTTP.c,v 1.94 2008/04/27 17:05:55 tom Exp $
+ * $LynxId: HTTP.c,v 1.96 2008/07/06 12:55:40 tom Exp $
  *
  * HyperText Tranfer Protocol	- Client implementation		HTTP.c
  * ==========================
@@ -1034,13 +1034,13 @@ static int HTLoadHTTP(const char *arg,
 	    if (pres->get_accept) {
 		if (pres->quality < 1.0) {
 		    if (pres->maxbytes > 0) {
-			sprintf(temp, ";q=%4.3f;mxb=%ld",
+			sprintf(temp, ";q=%4.3f;mxb=%" PRI_off_t "",
 				pres->quality, pres->maxbytes);
 		    } else {
 			sprintf(temp, ";q=%4.3f", pres->quality);
 		    }
 		} else if (pres->maxbytes > 0) {
-		    sprintf(temp, ";mxb=%ld", pres->maxbytes);
+		    sprintf(temp, ";mxb=%" PRI_off_t "", pres->maxbytes);
 		} else {
 		    temp[0] = '\0';
 		}
diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h
index 3d8b0dd6..eb794f59 100644
--- a/WWW/Library/Implementation/HTUtils.h
+++ b/WWW/Library/Implementation/HTUtils.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTUtils.h,v 1.79 2008/04/13 14:43:32 tom Exp $
+ * $LynxId: HTUtils.h,v 1.85 2008/07/06 12:55:40 tom Exp $
  *
  * Utility macros for the W3 code library
  * MACROS FOR GENERAL USE
@@ -535,6 +535,63 @@ extern int WWW_TraceMask;
 #define TRACE_GRIDTEXT  (TRACE_bit(7))
 #define TRACE_TIMING    (TRACE_bit(8))
 
+/*
+ * Get printing/scanning formats.
+ */
+#if defined(HAVE_INTTYPES_H)
+#include <inttypes.h>
+#endif
+
+/*
+ * Printing/scanning-formats for "off_t", as well as cast needed to fit.
+ */
+#if defined(HAVE_INTTYPES_H) && defined(SIZEOF_OFF_T)
+#if SIZEOF_OFF_T == 8
+#define PRI_off_t	PRId64
+#define SCN_off_t	SCNd64
+#define CAST_off_t(n)	(int64_t)(n)
+#else
+#define PRI_off_t	PRId32
+#define SCN_off_t	SCNd32
+#define CAST_off_t(n)	(int32_t)(n)
+#endif
+#endif
+
+#ifndef PRI_off_t
+#define PRI_off_t	"ld"
+#define SCN_off_t	"ld"
+#define CAST_off_t(n)	(long)(n)
+#endif
+
+/*
+ * Printing-format for "time_t", as well as cast needed to fit.
+ */
+#if defined(HAVE_INTTYPES_H) && defined(SIZEOF_TIME_T)
+#if SIZEOF_TIME_T == 8
+#define PRI_time_t	PRId64
+#define SCN_time_t	SCNd64
+#define CAST_time_t(n)	(int64_t)(n)
+#else
+#define PRI_time_t	PRId32
+#define SCN_time_t	SCNd32
+#define CAST_time_t(n)	(int32_t)(n)
+#endif
+#endif
+
+#ifndef PRI_time_t
+#define PRI_time_t	"ld"
+#define SCN_time_t	"ld"
+#define CAST_time_t(n)	(long)(n)
+#endif
+
+/*
+ * Printing-format for "UCode_t".
+ */
+#define PRI_UCode_t	"ld"
+
+/*
+ * Verbose-tracing.
+ */
 #if defined(USE_VERTRACE) && !defined(LY_TRACELINE)
 #define LY_TRACELINE __LINE__
 #endif
@@ -615,7 +672,7 @@ extern int WWW_TraceMask;
 
 #if defined(USE_GNUTLS_FUNCS)
 #include <tidy_tls.h>
-#define USE_GNUTLS_INCL 1		/* do this for the ".c" ifdef's */
+#define USE_GNUTLS_INCL 1	/* do this for the ".c" ifdef's */
 #elif defined(USE_GNUTLS_INCL)
 #include <gnutls/openssl.h>
 /*
diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c
index 37325689..9646afb6 100644
--- a/WWW/Library/Implementation/SGML.c
+++ b/WWW/Library/Implementation/SGML.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: SGML.c,v 1.92 2007/07/22 21:52:43 Rado.Smiljanic Exp $
+ * $LynxId: SGML.c,v 1.96 2008/07/06 15:01:52 tom Exp $
  *
  *			General SGML Parser code		SGML.c
  *			========================
@@ -14,13 +14,6 @@
 
 #include <HTUtils.h>
 
-/* Remove the following to disable the experimental HTML DTD parsing.
-   Currently only used in this source file. - kw */
-
-#ifndef NO_EXTENDED_HTMLDTD
-#define EXTENDED_HTMLDTD
-#endif
-
 #include <SGML.h>
 #include <HTMLDTD.h>
 #include <HTAccess.h>
@@ -91,8 +84,6 @@ static void fake_put_character(void *p GCC_UNUSED,
 #define PUTUTF8(code) (UCPutUtf8_charstring((HTStream *)context->target, \
 		      (putc_func_t*)(context->actions->put_character), code))
 
-#define OPT 1
-
 /*the following macros are used for pretty source view. */
 #define IS_C(attr) (attr.type == HTMLA_CLASS)
 
@@ -788,7 +779,7 @@ static void handle_entity(HTStream *context, char term)
     if (psrc_view)
 	PSRCSTART(badseq);
 #endif
-    CTRACE((tfp, "SGML: Unknown entity '%s' %ld %ld\n", s, (long) code, uck));	/* S/390 -- gil -- 0695 */
+    CTRACE((tfp, "SGML: Unknown entity '%s' %" PRI_UCode_t " %ld\n", s, code, uck));	/* S/390 -- gil -- 0695 */
     PUTC('&');
     PUTS(s);
     if (term != '\0')
@@ -935,8 +926,6 @@ static void handle_sgmlatt(HTStream *context)
 #define ALT_TAGP(t) ALT_TAGP_OF_TAGNUM(TAGNUM_OF_TAGP(t))
 #define NORMAL_TAGP(t) NORMAL_TAGP_OF_TAGNUM(TAGNUM_OF_TAGP(t))
 
-#ifdef EXTENDED_HTMLDTD
-
 static BOOL element_valid_within(HTTag * new_tag, HTTag * stacked_tag, BOOL direct)
 {
     TagClass usecontains, usecontained;
@@ -1007,15 +996,12 @@ static int is_on_stack(HTStream *context, HTTag * old_tag)
     }
     return 0;
 }
-#endif /* EXTENDED_HTMLDTD */
 
 /*	End element
  *	-----------
  */
 static void end_element(HTStream *context, HTTag * old_tag)
 {
-#ifdef EXTENDED_HTMLDTD
-
     BOOL extra_action_taken = NO;
     canclose_t canclose_check = close_valid;
     int stackpos = is_on_stack(context, old_tag);
@@ -1062,8 +1048,6 @@ static void end_element(HTStream *context, HTTag * old_tag)
     }
     /* Now let the non-extended code deal with the rest. - kw */
 
-#endif /* EXTENDED_HTMLDTD */
-
     /*
      * If we are in a SELECT block, ignore anything but a SELECT end tag.  - FM
      */
@@ -1162,8 +1146,6 @@ static void start_element(HTStream *context)
     HTMLElement e = TAGNUM_OF_TAGP(new_tag);
     BOOL ok = FALSE;
 
-#ifdef EXTENDED_HTMLDTD
-
     BOOL valid = YES;
     BOOL direct_container = YES;
     BOOL extra_action_taken = NO;
@@ -1237,8 +1219,6 @@ static void start_element(HTStream *context)
     }
     /* Fall through to the non-extended code - kw */
 
-#endif /* EXTENDED_HTMLDTD */
-
     /*
      * If we are not in a SELECT block, check if this is a SELECT start tag. 
      * Otherwise (i.e., we are in a SELECT block) accept only OPTION as valid,
@@ -3887,22 +3867,16 @@ static void SGML_character(HTStream *context, char c_in)
 #endif
 	    } else {
 		BOOL tag_OK = (BOOL) (c == '>' || WHITE(c));
-
-#if OPT
 		HTMLElement e = TAGNUM_OF_TAGP(t);
 		int branch = 2;	/* it can be 0,1,2 */
-#endif
+
 		context->current_tag = t;
 		if (HAS_ALT_TAGNUM(TAGNUM_OF_TAGP(t)) &&
 		    context->element_stack &&
 		    ALT_TAGP(t) == context->element_stack->tag)
 		    context->element_stack->tag = NORMAL_TAGP(context->element_stack->tag);
-#if OPT
-		if (tag_OK
-#ifdef EXTENDED_HTMLDTD
-		    && Old_DTD
-#endif
-		    ) {
+
+		if (tag_OK && Old_DTD) {
 		    switch (e) {
 		    case HTML_DD:
 		    case HTML_DT:
@@ -3936,34 +3910,13 @@ static void SGML_character(HTStream *context, char c_in)
 			break;
 		    }
 		}
-#endif
 
-#ifdef EXTENDED_HTMLDTD
 		/*
 		 * Just handle ALL end tags normally :-) - kw
 		 */
 		if (!Old_DTD) {
 		    end_element(context, context->current_tag);
-		} else
-#endif /* EXTENDED_HTMLDTD */
-
-		    if (tag_OK &&
-#if OPT
-			(branch == 0)
-#else
-			(!strcasecomp(string->data, "DD") ||
-			 !strcasecomp(string->data, "DT") ||
-			 !strcasecomp(string->data, "LI") ||
-			 !strcasecomp(string->data, "LH") ||
-			 !strcasecomp(string->data, "TD") ||
-			 !strcasecomp(string->data, "TH") ||
-			 !strcasecomp(string->data, "TR") ||
-			 !strcasecomp(string->data, "THEAD") ||
-			 !strcasecomp(string->data, "TFOOT") ||
-			 !strcasecomp(string->data, "TBODY") ||
-			 !strcasecomp(string->data, "COLGROUP"))
-#endif
-		    ) {
+		} else if (tag_OK && (branch == 0)) {
 		    /*
 		     * Don't treat these end tags as invalid, nor act on them. 
 		     * - FM
@@ -3979,24 +3932,7 @@ static void SGML_character(HTStream *context, char c_in)
 			context->state = S_text;
 		    }
 		    break;
-		} else if (tag_OK &&
-#if OPT
-			   (branch == 1)
-#else
-			   (!strcasecomp(string->data, "A") ||
-			    !strcasecomp(string->data, "B") ||
-			    !strcasecomp(string->data, "BLINK") ||
-			    !strcasecomp(string->data, "CITE") ||
-			    !strcasecomp(string->data, "EM") ||
-			    !strcasecomp(string->data, "FONT") ||
-			    !strcasecomp(string->data, "FORM") ||
-			    !strcasecomp(string->data, "I") ||
-			    !strcasecomp(string->data, "P") ||
-			    !strcasecomp(string->data, "STRONG") ||
-			    !strcasecomp(string->data, "TT") ||
-			    !strcasecomp(string->data, "U"))
-#endif
-		    ) {
+		} else if (tag_OK && (branch == 1)) {
 		    /*
 		     * Handle end tags for container elements declared as
 		     * SGML_EMPTY to prevent "expected tag substitution" but
diff --git a/WWW/Library/Implementation/dtd_util.c b/WWW/Library/Implementation/dtd_util.c
index b53b8bbd..861b18f4 100644
--- a/WWW/Library/Implementation/dtd_util.c
+++ b/WWW/Library/Implementation/dtd_util.c
@@ -1,12 +1,15 @@
 /*
- * $LynxId: dtd_util.c,v 1.10 2008/07/05 00:32:17 tom Exp $
+ * $LynxId: dtd_util.c,v 1.26 2008/07/07 00:03:09 tom Exp $
  *
  * Given a SGML_dtd structure, write a corresponding flat file, or "C" source.
  * Given the flat-file, write the "C" source.
+ *
+ * TODO: read flat-file
  */
 
 #include <HTUtils.h>
 #include <HTMLDTD.h>
+#include <string.h>
 
 /*
  * Tweaks to build standalone.
@@ -22,7 +25,9 @@ FILE *TraceFP(void)
 /*
  * Begin the actual utility.
  */
-#define GETOPT "flo:ts"
+#define GETOPT "chlo:ts"
+
+#define NOTE(message) fprintf(output, message "\n");
 
 static void failed(const char *s)
 {
@@ -37,11 +42,12 @@ static void usage(void)
 	"Usage: dtd_util [options]",
 	"",
 	"Options:",
-	"  -o filename",
-	"  -l load",
-	"  -f flat file",
-	"  -t tagsoup",
-	"  -s strict"
+	"  -c           generate C-source"
+	"  -h           generate C-header"
+	"  -l           load",
+	"  -o filename  specify output (default: stdout)",
+	"  -s           strict (HTML DTD 0)",
+	"  -t           tagsoup (HTML DTD 1)",
     };
     unsigned n;
 
@@ -112,6 +118,29 @@ static int first_attrs(const SGML_dtd * dtd, int which)
     return result;
 }
 
+static char *no_dashes(char *target, const char *source)
+{
+    int j;
+
+    for (j = 0; (target[j] = source[j]) != '\0'; ++j) {
+	if (!isalnum(target[j]))
+	    target[j] = '_';
+    }
+    return target;
+}
+
+/* the second "OBJECT" is treated specially */
+static int first_object(const SGML_dtd * dtd, int which)
+{
+    int check;
+
+    for (check = 0; check <= which; ++check) {
+	if (!strcmp(dtd->tags[check].name, "OBJECT"))
+	    break;
+    }
+    return (check == which);
+}
+
 static const char *NameOfAttrs(const SGML_dtd * dtd, int which)
 {
     int check;
@@ -152,14 +181,66 @@ static const char *XXX_attr(const SGML_dtd * dtd, int which)
     return result;
 }
 
-static void dump_src_HTTag_Defines(FILE *output, HTTag * tag)
+static const char *DEF_name(const SGML_dtd * dtd, int which)
 {
+    const char *result = dtd->tags[which].name;
+
+    if (!strcmp(result, "OBJECT") && !first_object(dtd, which))
+	result = "OBJECT_PCDATA";
+    return result;
+}
+
+typedef struct {
+    const char *name;
+    attr *attrs;
+    int count;
+    int which;
+} AttrInfo;
+
+static int compare_attr(const void *a, const void *b)
+{
+    const AttrInfo *p = (const AttrInfo *) a;
+    const AttrInfo *q = (const AttrInfo *) b;
+
+    return strcmp(p->name, q->name);
+}
+
+static AttrInfo *sorted_attrs(const SGML_dtd * dtd, unsigned *countp, int lower)
+{
+    int j;
+
+    AttrInfo *data = (AttrInfo *) calloc(dtd->number_of_tags, sizeof(AttrInfo));
+    unsigned count = 0;
+
+    /* get the attribute-data */
+    for (j = 0; j < dtd->number_of_tags; ++j) {
+	if (first_attrs(dtd, j)) {
+	    if (lower)
+		data[count].name = strdup(XXX_attr(dtd, j));
+	    else
+		data[count].name = NameOfAttrs(dtd, j);
+	    data[count].attrs = dtd->tags[j].attributes;
+	    data[count].count = dtd->tags[j].number_of_attributes;
+	    data[count].which = j;
+	    ++count;
+	}
+    }
+    /* sort the data by the name of their associated tag */
+    qsort(data, count, sizeof(*data), compare_attr);
+    *countp = count;
+    return data;
+}
+
+static void dump_src_HTTag_Defines(FILE *output, const SGML_dtd * dtd, int which)
+{
+    HTTag *tag = &(dtd->tags[which]);
+
 #define myFMT "0x%05X"
     fprintf(output,
-	    "#define T_%-10s "
+	    "#define T_%-13s "
 	    myFMT "," myFMT "," myFMT "," myFMT "," myFMT "," myFMT
-	    ", " myFMT "\n",
-	    tag->name,
+	    "," myFMT "\n",
+	    DEF_name(dtd, which),
 	    tag->tagclass,
 	    tag->contains,
 	    tag->icontains,
@@ -204,7 +285,7 @@ static void dump_src_HTTag_Attrs(FILE *output, const SGML_dtd * dtd, int which)
     }
     fprintf(output, "\t{ 0               T(N) }\t/* Terminate list */\n");
     fprintf(output, "};\n");
-    fprintf(output, "\n");
+    NOTE("");
 }
 
 static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which)
@@ -220,32 +301,193 @@ static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which)
     PrintF(output, 16, "%s_attr,", XXX_attr(dtd, which));
     PrintF(output, 28, "HTML_%s_ATTRIBUTES,", NameOfAttrs(dtd, which));
     PrintF(output, 14, "%s,", SGMLContent2s(tag->contents));
-    fprintf(output, "T_%s", tag->name);
+    fprintf(output, "T_%s", DEF_name(dtd, which));
     fprintf(output, "},\n");
 }
 
-static void dump_source(FILE *output, const SGML_dtd * dtd)
+static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version)
 {
+    const char *marker = "src_HTMLDTD_H";
     int j;
 
+    unsigned count = 0;
+    AttrInfo *data = sorted_attrs(dtd, &count, 1);
+
+    fprintf(output, "/* %cLynxId%c */\n", '$', '$');
+    fprintf(output, "#ifndef %s%d\n", marker, dtd_version);
+    fprintf(output, "#define %s%d 1\n\n", marker, dtd_version);
+
+    /*
+     * If we ifdef this for once, and make the table names distinct, we can
+     * #include the strict- and tagsoup-output directly in HTMLDTD.c
+     */
+    NOTE("#ifndef once_HTMLDTD");
+    NOTE("#define once_HTMLDTD 1");
+    NOTE("");
+
     /* construct TagClass-define's */
-    fprintf(output, "/*\n vile:cmode\n   %d tags\n */\n", dtd->number_of_tags);
-    for (j = 0; j < dtd->number_of_tags; ++j) {
-	dump_src_HTTag_Defines(output, &(dtd->tags[j]));
+    for (j = 0; j <= dtd->number_of_tags; ++j) {
+	dump_src_HTTag_Defines(output, dtd, j);
     }
-    fprintf(output, "\n");
+    NOTE("#define T__UNREC_	0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000");
 
     /* construct attribute-tables */
-    for (j = 0; j < dtd->number_of_tags; ++j) {
-	if (first_attrs(dtd, j))
-	    dump_src_HTTag_Attrs(output, dtd, j);
+    NOTE("#ifdef USE_PRETTYSRC");
+    NOTE("# define N HTMLA_NORMAL");
+    NOTE("# define i HTMLA_ANAME");
+    NOTE("# define h HTMLA_HREF");
+    NOTE("# define c HTMLA_CLASS");
+    NOTE("# define x HTMLA_AUXCLASS");
+    NOTE("# define T(t) , t");
+    NOTE("#else");
+    NOTE("# define T(t)			/*nothing */");
+    NOTE("#endif");
+    NOTE("/* *INDENT-OFF* */");
+    NOTE("");
+    for (j = 0; j < (int) count; ++j) {
+	dump_src_HTTag_Attrs(output, dtd, data[j].which);
     }
+    NOTE("/* *INDENT-ON* */");
+    NOTE("");
+    NOTE("#undef N");
+    NOTE("#undef i");
+    NOTE("#undef h");
+    NOTE("#undef c");
+    NOTE("#undef x");
+    NOTE("");
+    NOTE("#undef T");
+
+    NOTE("");
+    NOTE("/* these definitions are used in the tags-tables */");
+    NOTE("#undef P");
+    NOTE("#undef P_");
+    NOTE("#ifdef USE_COLOR_STYLE");
+    NOTE("#define P_(x) x , (sizeof x) -1");
+    NOTE("#define NULL_HTTag_ NULL, 0");
+    NOTE("#else");
+    NOTE("#define P_(x) x");
+    NOTE("#define NULL_HTTag_ NULL");
+    NOTE("#endif");
+    NOTE("");
+    NOTE("#ifdef EXP_JUSTIFY_ELTS");
+    NOTE("#define P(x) P_(x), 1");
+    NOTE("#define P0(x) P_(x), 0");
+    NOTE("#define NULL_HTTag NULL_HTTag_,0");
+    NOTE("#else");
+    NOTE("#define P(x) P_(x)");
+    NOTE("#define P0(x) P_(x)");
+    NOTE("#define NULL_HTTag NULL_HTTag_");
+    NOTE("#endif");
+    NOTE("");
+    NOTE("#endif /* once_HTMLDTD */");
+    NOTE("/* *INDENT-OFF* */");
+
     /* construct the tags table */
-    fprintf(output, "static const HTTag tags_table[HTML_ALL_ELEMENTS] = {\n");
-    for (j = 0; j < dtd->number_of_tags; ++j) {
+    fprintf(output,
+	    "static const HTTag tags_table%d[HTML_ALL_ELEMENTS] = {\n",
+	    dtd_version);
+    for (j = 0; j <= dtd->number_of_tags; ++j) {
+	if (j == dtd->number_of_tags) {
+	    NOTE("/* additional (alternative variants), not counted in HTML_ELEMENTS: */");
+	    NOTE("/* This one will be used as a temporary substitute within the parser when");
+	    NOTE("   it has been signalled to parse OBJECT content as MIXED. - kw */");
+	}
 	dump_src_HTTag(output, dtd, j);
     }
-    fprintf(output, "};\n\n");
+    fprintf(output, "};\n");
+
+    NOTE("/* *INDENT-ON* */");
+    NOTE("");
+    fprintf(output, "#endif /* %s%d */\n", marker, dtd_version);
+
+    free(data);
+}
+
+static void dump_hdr_attr(FILE *output, AttrInfo * data)
+{
+    int j;
+    char buffer[BUFSIZ];
+
+    for (j = 0; j < data->count; ++j) {
+	PrintF(output, 33, "#define HTML_%s_%s",
+	       data->name,
+	       no_dashes(buffer, data->attrs[j].name));
+	fprintf(output, "%2d\n", j);
+    }
+    PrintF(output, 33, "#define HTML_%s_ATTRIBUTES", data->name);
+    fprintf(output, "%2d\n", data->count);
+    fprintf(output, "\n");
+}
+
+static void dump_header(FILE *output, const SGML_dtd * dtd)
+{
+    const char *marker = "hdr_HTMLDTD_H";
+    int j;
+
+    unsigned count = 0;
+    AttrInfo *data = sorted_attrs(dtd, &count, 0);
+
+    fprintf(output, "/* %cLynxId%c */\n", '$', '$');
+    fprintf(output, "#ifndef %s\n", marker);
+    fprintf(output, "#define %s 1\n\n", marker);
+
+    NOTE("#ifdef __cplusplus");
+    NOTE("extern \"C\" {");
+    NOTE("#endif");
+
+    NOTE("/*");
+    NOTE("");
+    NOTE("   Element Numbers");
+    NOTE("");
+    NOTE("   Must Match all tables by element!");
+    NOTE("   These include tables in HTMLDTD.c");
+    NOTE("   and code in HTML.c.");
+    NOTE("");
+    NOTE(" */");
+
+    fprintf(output, "    typedef enum {\n");
+    for (j = 0; j < dtd->number_of_tags; ++j) {
+	fprintf(output, "\tHTML_%s,\n", dtd->tags[j].name);
+    }
+    NOTE("\tHTML_ALT_OBJECT");
+    NOTE("    } HTMLElement;\n");
+    NOTE("/* Notes: HTML.c uses a different extension of the");
+    NOTE("          HTML_ELEMENTS space privately, see");
+    NOTE("          HTNestedList.h.");
+    NOTE("");
+    NOTE("   Do NOT replace HTML_ELEMENTS with");
+    NOTE("   TABLESIZE(mumble_dtd.tags).");
+    NOTE("");
+    NOTE("   Keep the following defines in synch with");
+    NOTE("   the above enum!");
+    NOTE(" */");
+    NOTE("");
+    NOTE("/* # of elements generally visible to Lynx code */");
+    fprintf(output, "#define HTML_ELEMENTS %d\n", dtd->number_of_tags);
+    NOTE("");
+    NOTE("/* # of elements visible to SGML parser */");
+    fprintf(output, "#define HTML_ALL_ELEMENTS %d\n", dtd->number_of_tags + 1);
+    NOTE("");
+    NOTE("/*");
+    NOTE("");
+    NOTE("   Attribute numbers");
+    NOTE("");
+    NOTE("   Identifier is HTML_<element>_<attribute>.");
+    NOTE("   These must match the tables in HTML.c!");
+    NOTE("");
+    NOTE(" */");
+
+    /* output the sorted list */
+    for (j = 0; j < (int) count; ++j) {
+	dump_hdr_attr(output, data + j);
+    }
+    free(data);
+
+    NOTE("#ifdef __cplusplus");
+    NOTE("}");
+    NOTE("#endif");
+
+    fprintf(output, "#endif\t\t\t\t/* %s */\n", marker);
 }
 
 static void dump_flat_attrs(FILE *output, const char *name, attr * attributes, int number_of_attributes)
@@ -364,16 +606,20 @@ int main(int argc, char *argv[])
 {
     const SGML_dtd *the_dtd = &HTML_dtd;
     int ch;
-    int f_option = FALSE;
+    int dtd_version = 0;
+    int c_option = FALSE;
+    int h_option = FALSE;
     int l_option = FALSE;
     FILE *input = stdin;
     FILE *output = stdout;
 
-    HTSwitchDTD(FALSE);
     while ((ch = getopt(argc, argv, GETOPT)) != -1) {
 	switch (ch) {
-	case 'f':
-	    f_option = TRUE;
+	case 'c':
+	    c_option = TRUE;
+	    break;
+	case 'h':
+	    h_option = TRUE;
 	    break;
 	case 'l':
 	    l_option = TRUE;
@@ -384,20 +630,26 @@ int main(int argc, char *argv[])
 		failed(optarg);
 	    break;
 	case 't':
-	    HTSwitchDTD(TRUE);
+	    dtd_version = 1;
 	    break;
 	case 's':
-	    HTSwitchDTD(FALSE);
+	    dtd_version = 0;
 	    break;
 	default:
 	    usage();
 	}
     }
+
+    HTSwitchDTD(dtd_version);
     if (l_option)
 	load_flatfile(input, the_dtd);
-    if (f_option)
+
+    if (c_option)
+	dump_source(output, the_dtd, dtd_version);
+    if (h_option)
+	dump_header(output, the_dtd);
+    if (!c_option && !h_option)
 	dump_flatfile(output, the_dtd);
-    else
-	dump_source(output, the_dtd);
+
     return EXIT_SUCCESS;
 }
diff --git a/WWW/Library/Implementation/hdr_HTMLDTD.h b/WWW/Library/Implementation/hdr_HTMLDTD.h
new file mode 100644
index 00000000..d0850283
--- /dev/null
+++ b/WWW/Library/Implementation/hdr_HTMLDTD.h
@@ -0,0 +1,952 @@
+/* $LynxId: hdr_HTMLDTD.h,v 1.2 2008/07/06 18:16:18 tom Exp $ */
+#ifndef hdr_HTMLDTD_H
+#define hdr_HTMLDTD_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+
+   Element Numbers
+
+   Must Match all tables by element!
+   These include tables in HTMLDTD.c
+   and code in HTML.c.
+
+ */
+    typedef enum {
+	HTML_A,
+	HTML_ABBR,
+	HTML_ACRONYM,
+	HTML_ADDRESS,
+	HTML_APPLET,
+	HTML_AREA,
+	HTML_AU,
+	HTML_AUTHOR,
+	HTML_B,
+	HTML_BANNER,
+	HTML_BASE,
+	HTML_BASEFONT,
+	HTML_BDO,
+	HTML_BGSOUND,
+	HTML_BIG,
+	HTML_BLINK,
+	HTML_BLOCKQUOTE,
+	HTML_BODY,
+	HTML_BODYTEXT,
+	HTML_BQ,
+	HTML_BR,
+	HTML_BUTTON,
+	HTML_CAPTION,
+	HTML_CENTER,
+	HTML_CITE,
+	HTML_CODE,
+	HTML_COL,
+	HTML_COLGROUP,
+	HTML_COMMENT,
+	HTML_CREDIT,
+	HTML_DD,
+	HTML_DEL,
+	HTML_DFN,
+	HTML_DIR,
+	HTML_DIV,
+	HTML_DL,
+	HTML_DLC,
+	HTML_DT,
+	HTML_EM,
+	HTML_EMBED,
+	HTML_FIELDSET,
+	HTML_FIG,
+	HTML_FN,
+	HTML_FONT,
+	HTML_FORM,
+	HTML_FRAME,
+	HTML_FRAMESET,
+	HTML_H1,
+	HTML_H2,
+	HTML_H3,
+	HTML_H4,
+	HTML_H5,
+	HTML_H6,
+	HTML_HEAD,
+	HTML_HR,
+	HTML_HTML,
+	HTML_HY,
+	HTML_I,
+	HTML_IFRAME,
+	HTML_IMG,
+	HTML_INPUT,
+	HTML_INS,
+	HTML_ISINDEX,
+	HTML_KBD,
+	HTML_KEYGEN,
+	HTML_LABEL,
+	HTML_LEGEND,
+	HTML_LH,
+	HTML_LI,
+	HTML_LINK,
+	HTML_LISTING,
+	HTML_MAP,
+	HTML_MARQUEE,
+	HTML_MATH,
+	HTML_MENU,
+	HTML_META,
+	HTML_NEXTID,
+	HTML_NOFRAMES,
+	HTML_NOTE,
+	HTML_OBJECT,
+	HTML_OL,
+	HTML_OPTION,
+	HTML_OVERLAY,
+	HTML_P,
+	HTML_PARAM,
+	HTML_PLAINTEXT,
+	HTML_PRE,
+	HTML_Q,
+	HTML_S,
+	HTML_SAMP,
+	HTML_SCRIPT,
+	HTML_SELECT,
+	HTML_SHY,
+	HTML_SMALL,
+	HTML_SPAN,
+	HTML_SPOT,
+	HTML_STRIKE,
+	HTML_STRONG,
+	HTML_STYLE,
+	HTML_SUB,
+	HTML_SUP,
+	HTML_TAB,
+	HTML_TABLE,
+	HTML_TBODY,
+	HTML_TD,
+	HTML_TEXTAREA,
+	HTML_TEXTFLOW,
+	HTML_TFOOT,
+	HTML_TH,
+	HTML_THEAD,
+	HTML_TITLE,
+	HTML_TR,
+	HTML_TT,
+	HTML_U,
+	HTML_UL,
+	HTML_VAR,
+	HTML_WBR,
+	HTML_XMP,
+	HTML_ALT_OBJECT
+    } HTMLElement;
+
+/* Notes: HTML.c uses a different extension of the
+          HTML_ELEMENTS space privately, see
+          HTNestedList.h.
+
+   Do NOT replace HTML_ELEMENTS with
+   TABLESIZE(mumble_dtd.tags).
+
+   Keep the following defines in synch with
+   the above enum!
+ */
+
+/* # of elements generally visible to Lynx code */
+#define HTML_ELEMENTS 118
+
+/* # of elements visible to SGML parser */
+#define HTML_ALL_ELEMENTS 119
+
+/*
+
+   Attribute numbers
+
+   Identifier is HTML_<element>_<attribute>.
+   These must match the tables in HTML.c!
+
+ */
+#define HTML_A_ACCESSKEY          0
+#define HTML_A_CHARSET            1
+#define HTML_A_CLASS              2
+#define HTML_A_CLEAR              3
+#define HTML_A_COORDS             4
+#define HTML_A_DIR                5
+#define HTML_A_HREF               6
+#define HTML_A_ID                 7
+#define HTML_A_ISMAP              8
+#define HTML_A_LANG               9
+#define HTML_A_MD                10
+#define HTML_A_NAME              11
+#define HTML_A_NOTAB             12
+#define HTML_A_ONCLICK           13
+#define HTML_A_ONMOUSEOUT        14
+#define HTML_A_ONMOUSEOVER       15
+#define HTML_A_REL               16
+#define HTML_A_REV               17
+#define HTML_A_SHAPE             18
+#define HTML_A_STYLE             19
+#define HTML_A_TABINDEX          20
+#define HTML_A_TARGET            21
+#define HTML_A_TITLE             22
+#define HTML_A_TYPE              23
+#define HTML_A_URN               24
+#define HTML_A_ATTRIBUTES        25
+
+#define HTML_ADDRESS_CLASS        0
+#define HTML_ADDRESS_CLEAR        1
+#define HTML_ADDRESS_DIR          2
+#define HTML_ADDRESS_ID           3
+#define HTML_ADDRESS_LANG         4
+#define HTML_ADDRESS_NOWRAP       5
+#define HTML_ADDRESS_STYLE        6
+#define HTML_ADDRESS_TITLE        7
+#define HTML_ADDRESS_ATTRIBUTES   8
+
+#define HTML_APPLET_ALIGN         0
+#define HTML_APPLET_ALT           1
+#define HTML_APPLET_CLASS         2
+#define HTML_APPLET_CLEAR         3
+#define HTML_APPLET_CODE          4
+#define HTML_APPLET_CODEBASE      5
+#define HTML_APPLET_DIR           6
+#define HTML_APPLET_DOWNLOAD      7
+#define HTML_APPLET_HEIGHT        8
+#define HTML_APPLET_HSPACE        9
+#define HTML_APPLET_ID           10
+#define HTML_APPLET_LANG         11
+#define HTML_APPLET_NAME         12
+#define HTML_APPLET_STYLE        13
+#define HTML_APPLET_TITLE        14
+#define HTML_APPLET_VSPACE       15
+#define HTML_APPLET_WIDTH        16
+#define HTML_APPLET_ATTRIBUTES   17
+
+#define HTML_AREA_ALT             0
+#define HTML_AREA_CLASS           1
+#define HTML_AREA_CLEAR           2
+#define HTML_AREA_COORDS          3
+#define HTML_AREA_DIR             4
+#define HTML_AREA_HREF            5
+#define HTML_AREA_ID              6
+#define HTML_AREA_LANG            7
+#define HTML_AREA_NOHREF          8
+#define HTML_AREA_NOTAB           9
+#define HTML_AREA_ONCLICK        10
+#define HTML_AREA_ONMOUSEOUT     11
+#define HTML_AREA_ONMOUSEOVER    12
+#define HTML_AREA_SHAPE          13
+#define HTML_AREA_STYLE          14
+#define HTML_AREA_TABINDEX       15
+#define HTML_AREA_TARGET         16
+#define HTML_AREA_TITLE          17
+#define HTML_AREA_ATTRIBUTES     18
+
+#define HTML_BASE_HREF            0
+#define HTML_BASE_TARGET          1
+#define HTML_BASE_TITLE           2
+#define HTML_BASE_ATTRIBUTES      3
+
+#define HTML_BGSOUND_CLASS        0
+#define HTML_BGSOUND_CLEAR        1
+#define HTML_BGSOUND_DIR          2
+#define HTML_BGSOUND_ID           3
+#define HTML_BGSOUND_LANG         4
+#define HTML_BGSOUND_LOOP         5
+#define HTML_BGSOUND_SRC          6
+#define HTML_BGSOUND_STYLE        7
+#define HTML_BGSOUND_TITLE        8
+#define HTML_BGSOUND_ATTRIBUTES   9
+
+#define HTML_BODY_ALINK           0
+#define HTML_BODY_BACKGROUND      1
+#define HTML_BODY_BGCOLOR         2
+#define HTML_BODY_CLASS           3
+#define HTML_BODY_CLEAR           4
+#define HTML_BODY_DIR             5
+#define HTML_BODY_ID              6
+#define HTML_BODY_LANG            7
+#define HTML_BODY_LINK            8
+#define HTML_BODY_ONLOAD          9
+#define HTML_BODY_ONUNLOAD       10
+#define HTML_BODY_STYLE          11
+#define HTML_BODY_TEXT           12
+#define HTML_BODY_TITLE          13
+#define HTML_BODY_VLINK          14
+#define HTML_BODY_ATTRIBUTES     15
+
+#define HTML_BODYTEXT_CLASS       0
+#define HTML_BODYTEXT_CLEAR       1
+#define HTML_BODYTEXT_DATA        2
+#define HTML_BODYTEXT_DIR         3
+#define HTML_BODYTEXT_ID          4
+#define HTML_BODYTEXT_LANG        5
+#define HTML_BODYTEXT_NAME        6
+#define HTML_BODYTEXT_OBJECT      7
+#define HTML_BODYTEXT_REF         8
+#define HTML_BODYTEXT_STYLE       9
+#define HTML_BODYTEXT_TITLE      10
+#define HTML_BODYTEXT_TYPE       11
+#define HTML_BODYTEXT_VALUE      12
+#define HTML_BODYTEXT_VALUETYPE  13
+#define HTML_BODYTEXT_ATTRIBUTES 14
+
+#define HTML_BQ_CITE              0
+#define HTML_BQ_CLASS             1
+#define HTML_BQ_CLEAR             2
+#define HTML_BQ_DIR               3
+#define HTML_BQ_ID                4
+#define HTML_BQ_LANG              5
+#define HTML_BQ_NOWRAP            6
+#define HTML_BQ_STYLE             7
+#define HTML_BQ_TITLE             8
+#define HTML_BQ_ATTRIBUTES        9
+
+#define HTML_BUTTON_CLASS         0
+#define HTML_BUTTON_CLEAR         1
+#define HTML_BUTTON_DIR           2
+#define HTML_BUTTON_DISABLED      3
+#define HTML_BUTTON_ID            4
+#define HTML_BUTTON_LANG          5
+#define HTML_BUTTON_NAME          6
+#define HTML_BUTTON_ONBLUR        7
+#define HTML_BUTTON_ONFOCUS       8
+#define HTML_BUTTON_STYLE         9
+#define HTML_BUTTON_TABINDEX     10
+#define HTML_BUTTON_TITLE        11
+#define HTML_BUTTON_TYPE         12
+#define HTML_BUTTON_VALUE        13
+#define HTML_BUTTON_ATTRIBUTES   14
+
+#define HTML_CAPTION_ACCESSKEY    0
+#define HTML_CAPTION_ALIGN        1
+#define HTML_CAPTION_CLASS        2
+#define HTML_CAPTION_CLEAR        3
+#define HTML_CAPTION_DIR          4
+#define HTML_CAPTION_ID           5
+#define HTML_CAPTION_LANG         6
+#define HTML_CAPTION_STYLE        7
+#define HTML_CAPTION_TITLE        8
+#define HTML_CAPTION_ATTRIBUTES   9
+
+#define HTML_COL_ALIGN            0
+#define HTML_COL_CHAR             1
+#define HTML_COL_CHAROFF          2
+#define HTML_COL_CLASS            3
+#define HTML_COL_CLEAR            4
+#define HTML_COL_DIR              5
+#define HTML_COL_ID               6
+#define HTML_COL_LANG             7
+#define HTML_COL_SPAN             8
+#define HTML_COL_STYLE            9
+#define HTML_COL_TITLE           10
+#define HTML_COL_VALIGN          11
+#define HTML_COL_WIDTH           12
+#define HTML_COL_ATTRIBUTES      13
+
+#define HTML_CREDIT_CLASS         0
+#define HTML_CREDIT_CLEAR         1
+#define HTML_CREDIT_DIR           2
+#define HTML_CREDIT_ID            3
+#define HTML_CREDIT_LANG          4
+#define HTML_CREDIT_STYLE         5
+#define HTML_CREDIT_TITLE         6
+#define HTML_CREDIT_ATTRIBUTES    7
+
+#define HTML_DIV_ALIGN            0
+#define HTML_DIV_CLASS            1
+#define HTML_DIV_CLEAR            2
+#define HTML_DIV_DIR              3
+#define HTML_DIV_ID               4
+#define HTML_DIV_LANG             5
+#define HTML_DIV_STYLE            6
+#define HTML_DIV_TITLE            7
+#define HTML_DIV_ATTRIBUTES       8
+
+#define HTML_DL_CLASS             0
+#define HTML_DL_CLEAR             1
+#define HTML_DL_COMPACT           2
+#define HTML_DL_DIR               3
+#define HTML_DL_ID                4
+#define HTML_DL_LANG              5
+#define HTML_DL_STYLE             6
+#define HTML_DL_TITLE             7
+#define HTML_DL_ATTRIBUTES        8
+
+#define HTML_EMBED_ALIGN          0
+#define HTML_EMBED_ALT            1
+#define HTML_EMBED_BORDER         2
+#define HTML_EMBED_CLASS          3
+#define HTML_EMBED_CLEAR          4
+#define HTML_EMBED_DIR            5
+#define HTML_EMBED_HEIGHT         6
+#define HTML_EMBED_ID             7
+#define HTML_EMBED_IMAGEMAP       8
+#define HTML_EMBED_ISMAP          9
+#define HTML_EMBED_LANG          10
+#define HTML_EMBED_MD            11
+#define HTML_EMBED_NAME          12
+#define HTML_EMBED_NOFLOW        13
+#define HTML_EMBED_PARAMS        14
+#define HTML_EMBED_SRC           15
+#define HTML_EMBED_STYLE         16
+#define HTML_EMBED_TITLE         17
+#define HTML_EMBED_UNITS         18
+#define HTML_EMBED_USEMAP        19
+#define HTML_EMBED_WIDTH         20
+#define HTML_EMBED_ATTRIBUTES    21
+
+#define HTML_FIELDSET_CLASS       0
+#define HTML_FIELDSET_CLEAR       1
+#define HTML_FIELDSET_DIR         2
+#define HTML_FIELDSET_ID          3
+#define HTML_FIELDSET_LANG        4
+#define HTML_FIELDSET_STYLE       5
+#define HTML_FIELDSET_TITLE       6
+#define HTML_FIELDSET_ATTRIBUTES  7
+
+#define HTML_FIG_ALIGN            0
+#define HTML_FIG_BORDER           1
+#define HTML_FIG_CLASS            2
+#define HTML_FIG_CLEAR            3
+#define HTML_FIG_DIR              4
+#define HTML_FIG_HEIGHT           5
+#define HTML_FIG_ID               6
+#define HTML_FIG_IMAGEMAP         7
+#define HTML_FIG_ISOBJECT         8
+#define HTML_FIG_LANG             9
+#define HTML_FIG_MD              10
+#define HTML_FIG_NOFLOW          11
+#define HTML_FIG_SRC             12
+#define HTML_FIG_STYLE           13
+#define HTML_FIG_TITLE           14
+#define HTML_FIG_UNITS           15
+#define HTML_FIG_WIDTH           16
+#define HTML_FIG_ATTRIBUTES      17
+
+#define HTML_FN_CLASS             0
+#define HTML_FN_CLEAR             1
+#define HTML_FN_DIR               2
+#define HTML_FN_ID                3
+#define HTML_FN_LANG              4
+#define HTML_FN_STYLE             5
+#define HTML_FN_TITLE             6
+#define HTML_FN_ATTRIBUTES        7
+
+#define HTML_FONT_CLASS           0
+#define HTML_FONT_CLEAR           1
+#define HTML_FONT_COLOR           2
+#define HTML_FONT_DIR             3
+#define HTML_FONT_END             4
+#define HTML_FONT_FACE            5
+#define HTML_FONT_ID              6
+#define HTML_FONT_LANG            7
+#define HTML_FONT_SIZE            8
+#define HTML_FONT_ATTRIBUTES      9
+
+#define HTML_FORM_ACCEPT_CHARSET  0
+#define HTML_FORM_ACTION          1
+#define HTML_FORM_CLASS           2
+#define HTML_FORM_CLEAR           3
+#define HTML_FORM_DIR             4
+#define HTML_FORM_ENCTYPE         5
+#define HTML_FORM_ID              6
+#define HTML_FORM_LANG            7
+#define HTML_FORM_METHOD          8
+#define HTML_FORM_ONSUBMIT        9
+#define HTML_FORM_SCRIPT         10
+#define HTML_FORM_STYLE          11
+#define HTML_FORM_SUBJECT        12
+#define HTML_FORM_TARGET         13
+#define HTML_FORM_TITLE          14
+#define HTML_FORM_ATTRIBUTES     15
+
+#define HTML_FRAME_ID             0
+#define HTML_FRAME_LONGDESC       1
+#define HTML_FRAME_MARGINHEIGHT   2
+#define HTML_FRAME_MARGINWIDTH    3
+#define HTML_FRAME_NAME           4
+#define HTML_FRAME_NORESIZE       5
+#define HTML_FRAME_SCROLLING      6
+#define HTML_FRAME_SRC            7
+#define HTML_FRAME_ATTRIBUTES     8
+
+#define HTML_FRAMESET_COLS        0
+#define HTML_FRAMESET_ROWS        1
+#define HTML_FRAMESET_ATTRIBUTES  2
+
+#define HTML_GEN_CLASS            0
+#define HTML_GEN_CLEAR            1
+#define HTML_GEN_DIR              2
+#define HTML_GEN_ID               3
+#define HTML_GEN_LANG             4
+#define HTML_GEN_STYLE            5
+#define HTML_GEN_TITLE            6
+#define HTML_GEN_ATTRIBUTES       7
+
+#define HTML_H_ALIGN              0
+#define HTML_H_CLASS              1
+#define HTML_H_CLEAR              2
+#define HTML_H_DINGBAT            3
+#define HTML_H_DIR                4
+#define HTML_H_ID                 5
+#define HTML_H_LANG               6
+#define HTML_H_MD                 7
+#define HTML_H_NOWRAP             8
+#define HTML_H_SEQNUM             9
+#define HTML_H_SKIP              10
+#define HTML_H_SRC               11
+#define HTML_H_STYLE             12
+#define HTML_H_TITLE             13
+#define HTML_H_ATTRIBUTES        14
+
+#define HTML_HR_ALIGN             0
+#define HTML_HR_CLASS             1
+#define HTML_HR_CLEAR             2
+#define HTML_HR_DIR               3
+#define HTML_HR_ID                4
+#define HTML_HR_MD                5
+#define HTML_HR_NOSHADE           6
+#define HTML_HR_SIZE              7
+#define HTML_HR_SRC               8
+#define HTML_HR_STYLE             9
+#define HTML_HR_TITLE            10
+#define HTML_HR_WIDTH            11
+#define HTML_HR_ATTRIBUTES       12
+
+#define HTML_IFRAME_ALIGN         0
+#define HTML_IFRAME_FRAMEBORDER   1
+#define HTML_IFRAME_HEIGHT        2
+#define HTML_IFRAME_ID            3
+#define HTML_IFRAME_LONGDESC      4
+#define HTML_IFRAME_MARGINHEIGHT  5
+#define HTML_IFRAME_MARGINWIDTH   6
+#define HTML_IFRAME_NAME          7
+#define HTML_IFRAME_SCROLLING     8
+#define HTML_IFRAME_SRC           9
+#define HTML_IFRAME_STYLE        10
+#define HTML_IFRAME_WIDTH        11
+#define HTML_IFRAME_ATTRIBUTES   12
+
+#define HTML_IMG_ALIGN            0
+#define HTML_IMG_ALT              1
+#define HTML_IMG_BORDER           2
+#define HTML_IMG_CLASS            3
+#define HTML_IMG_CLEAR            4
+#define HTML_IMG_DIR              5
+#define HTML_IMG_HEIGHT           6
+#define HTML_IMG_ID               7
+#define HTML_IMG_ISMAP            8
+#define HTML_IMG_ISOBJECT         9
+#define HTML_IMG_LANG            10
+#define HTML_IMG_LONGDESC        11
+#define HTML_IMG_MD              12
+#define HTML_IMG_SRC             13
+#define HTML_IMG_STYLE           14
+#define HTML_IMG_TITLE           15
+#define HTML_IMG_UNITS           16
+#define HTML_IMG_USEMAP          17
+#define HTML_IMG_WIDTH           18
+#define HTML_IMG_ATTRIBUTES      19
+
+#define HTML_INPUT_ACCEPT         0
+#define HTML_INPUT_ACCEPT_CHARSET 1
+#define HTML_INPUT_ALIGN          2
+#define HTML_INPUT_ALT            3
+#define HTML_INPUT_CHECKED        4
+#define HTML_INPUT_CLASS          5
+#define HTML_INPUT_CLEAR          6
+#define HTML_INPUT_DIR            7
+#define HTML_INPUT_DISABLED       8
+#define HTML_INPUT_ERROR          9
+#define HTML_INPUT_HEIGHT        10
+#define HTML_INPUT_ID            11
+#define HTML_INPUT_LANG          12
+#define HTML_INPUT_MAX           13
+#define HTML_INPUT_MAXLENGTH     14
+#define HTML_INPUT_MD            15
+#define HTML_INPUT_MIN           16
+#define HTML_INPUT_NAME          17
+#define HTML_INPUT_NOTAB         18
+#define HTML_INPUT_ONBLUR        19
+#define HTML_INPUT_ONCHANGE      20
+#define HTML_INPUT_ONCLICK       21
+#define HTML_INPUT_ONFOCUS       22
+#define HTML_INPUT_ONSELECT      23
+#define HTML_INPUT_SIZE          24
+#define HTML_INPUT_SRC           25
+#define HTML_INPUT_STYLE         26
+#define HTML_INPUT_TABINDEX      27
+#define HTML_INPUT_TITLE         28
+#define HTML_INPUT_TYPE          29
+#define HTML_INPUT_VALUE         30
+#define HTML_INPUT_WIDTH         31
+#define HTML_INPUT_ATTRIBUTES    32
+
+#define HTML_ISINDEX_ACTION       0
+#define HTML_ISINDEX_DIR          1
+#define HTML_ISINDEX_HREF         2
+#define HTML_ISINDEX_ID           3
+#define HTML_ISINDEX_LANG         4
+#define HTML_ISINDEX_PROMPT       5
+#define HTML_ISINDEX_TITLE        6
+#define HTML_ISINDEX_ATTRIBUTES   7
+
+#define HTML_KEYGEN_CHALLENGE     0
+#define HTML_KEYGEN_CLASS         1
+#define HTML_KEYGEN_DIR           2
+#define HTML_KEYGEN_ID            3
+#define HTML_KEYGEN_LANG          4
+#define HTML_KEYGEN_NAME          5
+#define HTML_KEYGEN_STYLE         6
+#define HTML_KEYGEN_TITLE         7
+#define HTML_KEYGEN_ATTRIBUTES    8
+
+#define HTML_LABEL_ACCESSKEY      0
+#define HTML_LABEL_CLASS          1
+#define HTML_LABEL_CLEAR          2
+#define HTML_LABEL_DIR            3
+#define HTML_LABEL_FOR            4
+#define HTML_LABEL_ID             5
+#define HTML_LABEL_LANG           6
+#define HTML_LABEL_ONCLICK        7
+#define HTML_LABEL_STYLE          8
+#define HTML_LABEL_TITLE          9
+#define HTML_LABEL_ATTRIBUTES    10
+
+#define HTML_LEGEND_ACCESSKEY     0
+#define HTML_LEGEND_ALIGN         1
+#define HTML_LEGEND_CLASS         2
+#define HTML_LEGEND_CLEAR         3
+#define HTML_LEGEND_DIR           4
+#define HTML_LEGEND_ID            5
+#define HTML_LEGEND_LANG          6
+#define HTML_LEGEND_STYLE         7
+#define HTML_LEGEND_TITLE         8
+#define HTML_LEGEND_ATTRIBUTES    9
+
+#define HTML_LI_CLASS             0
+#define HTML_LI_CLEAR             1
+#define HTML_LI_DINGBAT           2
+#define HTML_LI_DIR               3
+#define HTML_LI_ID                4
+#define HTML_LI_LANG              5
+#define HTML_LI_MD                6
+#define HTML_LI_SKIP              7
+#define HTML_LI_SRC               8
+#define HTML_LI_STYLE             9
+#define HTML_LI_TITLE            10
+#define HTML_LI_TYPE             11
+#define HTML_LI_VALUE            12
+#define HTML_LI_ATTRIBUTES       13
+
+#define HTML_LINK_CHARSET         0
+#define HTML_LINK_CLASS           1
+#define HTML_LINK_HREF            2
+#define HTML_LINK_ID              3
+#define HTML_LINK_MEDIA           4
+#define HTML_LINK_REL             5
+#define HTML_LINK_REV             6
+#define HTML_LINK_STYLE           7
+#define HTML_LINK_TARGET          8
+#define HTML_LINK_TITLE           9
+#define HTML_LINK_TYPE           10
+#define HTML_LINK_ATTRIBUTES     11
+
+#define HTML_MAP_CLASS            0
+#define HTML_MAP_CLEAR            1
+#define HTML_MAP_DIR              2
+#define HTML_MAP_ID               3
+#define HTML_MAP_LANG             4
+#define HTML_MAP_NAME             5
+#define HTML_MAP_STYLE            6
+#define HTML_MAP_TITLE            7
+#define HTML_MAP_ATTRIBUTES       8
+
+#define HTML_MATH_BOX             0
+#define HTML_MATH_CLASS           1
+#define HTML_MATH_CLEAR           2
+#define HTML_MATH_DIR             3
+#define HTML_MATH_ID              4
+#define HTML_MATH_LANG            5
+#define HTML_MATH_STYLE           6
+#define HTML_MATH_TITLE           7
+#define HTML_MATH_ATTRIBUTES      8
+
+#define HTML_META_CONTENT         0
+#define HTML_META_HTTP_EQUIV      1
+#define HTML_META_NAME            2
+#define HTML_META_ATTRIBUTES      3
+
+#define HTML_NEXTID_N             0
+#define HTML_NEXTID_ATTRIBUTES    1
+
+#define HTML_NOTE_CLASS           0
+#define HTML_NOTE_CLEAR           1
+#define HTML_NOTE_DIR             2
+#define HTML_NOTE_ID              3
+#define HTML_NOTE_LANG            4
+#define HTML_NOTE_MD              5
+#define HTML_NOTE_ROLE            6
+#define HTML_NOTE_SRC             7
+#define HTML_NOTE_STYLE           8
+#define HTML_NOTE_TITLE           9
+#define HTML_NOTE_ATTRIBUTES     10
+
+#define HTML_OBJECT_ALIGN         0
+#define HTML_OBJECT_BORDER        1
+#define HTML_OBJECT_CLASS         2
+#define HTML_OBJECT_CLASSID       3
+#define HTML_OBJECT_CODEBASE      4
+#define HTML_OBJECT_CODETYPE      5
+#define HTML_OBJECT_DATA          6
+#define HTML_OBJECT_DECLARE       7
+#define HTML_OBJECT_DIR           8
+#define HTML_OBJECT_HEIGHT        9
+#define HTML_OBJECT_HSPACE       10
+#define HTML_OBJECT_ID           11
+#define HTML_OBJECT_ISMAP        12
+#define HTML_OBJECT_LANG         13
+#define HTML_OBJECT_NAME         14
+#define HTML_OBJECT_NOTAB        15
+#define HTML_OBJECT_SHAPES       16
+#define HTML_OBJECT_STANDBY      17
+#define HTML_OBJECT_STYLE        18
+#define HTML_OBJECT_TABINDEX     19
+#define HTML_OBJECT_TITLE        20
+#define HTML_OBJECT_TYPE         21
+#define HTML_OBJECT_USEMAP       22
+#define HTML_OBJECT_VSPACE       23
+#define HTML_OBJECT_WIDTH        24
+#define HTML_OBJECT_ATTRIBUTES   25
+
+#define HTML_OL_CLASS             0
+#define HTML_OL_CLEAR             1
+#define HTML_OL_COMPACT           2
+#define HTML_OL_CONTINUE          3
+#define HTML_OL_DIR               4
+#define HTML_OL_ID                5
+#define HTML_OL_LANG              6
+#define HTML_OL_SEQNUM            7
+#define HTML_OL_START             8
+#define HTML_OL_STYLE             9
+#define HTML_OL_TITLE            10
+#define HTML_OL_TYPE             11
+#define HTML_OL_ATTRIBUTES       12
+
+#define HTML_OPTION_CLASS         0
+#define HTML_OPTION_CLEAR         1
+#define HTML_OPTION_DIR           2
+#define HTML_OPTION_DISABLED      3
+#define HTML_OPTION_ERROR         4
+#define HTML_OPTION_ID            5
+#define HTML_OPTION_LANG          6
+#define HTML_OPTION_SELECTED      7
+#define HTML_OPTION_SHAPE         8
+#define HTML_OPTION_STYLE         9
+#define HTML_OPTION_TITLE        10
+#define HTML_OPTION_VALUE        11
+#define HTML_OPTION_ATTRIBUTES   12
+
+#define HTML_OVERLAY_CLASS        0
+#define HTML_OVERLAY_HEIGHT       1
+#define HTML_OVERLAY_ID           2
+#define HTML_OVERLAY_IMAGEMAP     3
+#define HTML_OVERLAY_MD           4
+#define HTML_OVERLAY_SRC          5
+#define HTML_OVERLAY_STYLE        6
+#define HTML_OVERLAY_TITLE        7
+#define HTML_OVERLAY_UNITS        8
+#define HTML_OVERLAY_WIDTH        9
+#define HTML_OVERLAY_X           10
+#define HTML_OVERLAY_Y           11
+#define HTML_OVERLAY_ATTRIBUTES  12
+
+#define HTML_P_ALIGN              0
+#define HTML_P_CLASS              1
+#define HTML_P_CLEAR              2
+#define HTML_P_DIR                3
+#define HTML_P_ID                 4
+#define HTML_P_LANG               5
+#define HTML_P_NOWRAP             6
+#define HTML_P_STYLE              7
+#define HTML_P_TITLE              8
+#define HTML_P_ATTRIBUTES         9
+
+#define HTML_PARAM_ACCEPT         0
+#define HTML_PARAM_ACCEPT_CHARSET 1
+#define HTML_PARAM_ACCEPT_ENCODING 2
+#define HTML_PARAM_CLASS          3
+#define HTML_PARAM_CLEAR          4
+#define HTML_PARAM_DATA           5
+#define HTML_PARAM_DIR            6
+#define HTML_PARAM_ID             7
+#define HTML_PARAM_LANG           8
+#define HTML_PARAM_NAME           9
+#define HTML_PARAM_OBJECT        10
+#define HTML_PARAM_REF           11
+#define HTML_PARAM_STYLE         12
+#define HTML_PARAM_TITLE         13
+#define HTML_PARAM_TYPE          14
+#define HTML_PARAM_VALUE         15
+#define HTML_PARAM_VALUEREF      16
+#define HTML_PARAM_VALUETYPE     17
+#define HTML_PARAM_ATTRIBUTES    18
+
+#define HTML_SCRIPT_CLASS         0
+#define HTML_SCRIPT_CLEAR         1
+#define HTML_SCRIPT_DIR           2
+#define HTML_SCRIPT_EVENT         3
+#define HTML_SCRIPT_FOR           4
+#define HTML_SCRIPT_ID            5
+#define HTML_SCRIPT_LANG          6
+#define HTML_SCRIPT_LANGUAGE      7
+#define HTML_SCRIPT_NAME          8
+#define HTML_SCRIPT_SCRIPTENGINE  9
+#define HTML_SCRIPT_SRC          10
+#define HTML_SCRIPT_STYLE        11
+#define HTML_SCRIPT_TITLE        12
+#define HTML_SCRIPT_TYPE         13
+#define HTML_SCRIPT_ATTRIBUTES   14
+
+#define HTML_SELECT_ALIGN         0
+#define HTML_SELECT_CLASS         1
+#define HTML_SELECT_CLEAR         2
+#define HTML_SELECT_DIR           3
+#define HTML_SELECT_DISABLED      4
+#define HTML_SELECT_ERROR         5
+#define HTML_SELECT_HEIGHT        6
+#define HTML_SELECT_ID            7
+#define HTML_SELECT_LANG          8
+#define HTML_SELECT_MD            9
+#define HTML_SELECT_MULTIPLE     10
+#define HTML_SELECT_NAME         11
+#define HTML_SELECT_NOTAB        12
+#define HTML_SELECT_ONBLUR       13
+#define HTML_SELECT_ONCHANGE     14
+#define HTML_SELECT_ONFOCUS      15
+#define HTML_SELECT_SIZE         16
+#define HTML_SELECT_STYLE        17
+#define HTML_SELECT_TABINDEX     18
+#define HTML_SELECT_TITLE        19
+#define HTML_SELECT_UNITS        20
+#define HTML_SELECT_WIDTH        21
+#define HTML_SELECT_ATTRIBUTES   22
+
+#define HTML_STYLE_DIR            0
+#define HTML_STYLE_LANG           1
+#define HTML_STYLE_NOTATION       2
+#define HTML_STYLE_TITLE          3
+#define HTML_STYLE_ATTRIBUTES     4
+
+#define HTML_TAB_ALIGN            0
+#define HTML_TAB_CLASS            1
+#define HTML_TAB_CLEAR            2
+#define HTML_TAB_DIR              3
+#define HTML_TAB_DP               4
+#define HTML_TAB_ID               5
+#define HTML_TAB_INDENT           6
+#define HTML_TAB_LANG             7
+#define HTML_TAB_STYLE            8
+#define HTML_TAB_TITLE            9
+#define HTML_TAB_TO              10
+#define HTML_TAB_ATTRIBUTES      11
+
+#define HTML_TABLE_ALIGN          0
+#define HTML_TABLE_BACKGROUND     1
+#define HTML_TABLE_BORDER         2
+#define HTML_TABLE_CELLPADDING    3
+#define HTML_TABLE_CELLSPACING    4
+#define HTML_TABLE_CLASS          5
+#define HTML_TABLE_CLEAR          6
+#define HTML_TABLE_COLS           7
+#define HTML_TABLE_COLSPEC        8
+#define HTML_TABLE_DIR            9
+#define HTML_TABLE_DP            10
+#define HTML_TABLE_FRAME         11
+#define HTML_TABLE_ID            12
+#define HTML_TABLE_LANG          13
+#define HTML_TABLE_NOFLOW        14
+#define HTML_TABLE_NOWRAP        15
+#define HTML_TABLE_RULES         16
+#define HTML_TABLE_STYLE         17
+#define HTML_TABLE_SUMMARY       18
+#define HTML_TABLE_TITLE         19
+#define HTML_TABLE_UNITS         20
+#define HTML_TABLE_WIDTH         21
+#define HTML_TABLE_ATTRIBUTES    22
+
+#define HTML_TD_ALIGN             0
+#define HTML_TD_AXES              1
+#define HTML_TD_AXIS              2
+#define HTML_TD_BACKGROUND        3
+#define HTML_TD_CHAR              4
+#define HTML_TD_CHAROFF           5
+#define HTML_TD_CLASS             6
+#define HTML_TD_CLEAR             7
+#define HTML_TD_COLSPAN           8
+#define HTML_TD_DIR               9
+#define HTML_TD_DP               10
+#define HTML_TD_HEIGHT           11
+#define HTML_TD_ID               12
+#define HTML_TD_LANG             13
+#define HTML_TD_NOWRAP           14
+#define HTML_TD_ROWSPAN          15
+#define HTML_TD_STYLE            16
+#define HTML_TD_TITLE            17
+#define HTML_TD_VALIGN           18
+#define HTML_TD_WIDTH            19
+#define HTML_TD_ATTRIBUTES       20
+
+#define HTML_TEXTAREA_ACCEPT_CHARSET 0
+#define HTML_TEXTAREA_ALIGN       1
+#define HTML_TEXTAREA_CLASS       2
+#define HTML_TEXTAREA_CLEAR       3
+#define HTML_TEXTAREA_COLS        4
+#define HTML_TEXTAREA_DIR         5
+#define HTML_TEXTAREA_DISABLED    6
+#define HTML_TEXTAREA_ERROR       7
+#define HTML_TEXTAREA_ID          8
+#define HTML_TEXTAREA_LANG        9
+#define HTML_TEXTAREA_NAME       10
+#define HTML_TEXTAREA_NOTAB      11
+#define HTML_TEXTAREA_ONBLUR     12
+#define HTML_TEXTAREA_ONCHANGE   13
+#define HTML_TEXTAREA_ONFOCUS    14
+#define HTML_TEXTAREA_ONSELECT   15
+#define HTML_TEXTAREA_ROWS       16
+#define HTML_TEXTAREA_STYLE      17
+#define HTML_TEXTAREA_TABINDEX   18
+#define HTML_TEXTAREA_TITLE      19
+#define HTML_TEXTAREA_ATTRIBUTES 20
+
+#define HTML_TR_ALIGN             0
+#define HTML_TR_CHAR              1
+#define HTML_TR_CHAROFF           2
+#define HTML_TR_CLASS             3
+#define HTML_TR_CLEAR             4
+#define HTML_TR_DIR               5
+#define HTML_TR_DP                6
+#define HTML_TR_ID                7
+#define HTML_TR_LANG              8
+#define HTML_TR_NOWRAP            9
+#define HTML_TR_STYLE            10
+#define HTML_TR_TITLE            11
+#define HTML_TR_VALIGN           12
+#define HTML_TR_ATTRIBUTES       13
+
+#define HTML_UL_CLASS             0
+#define HTML_UL_CLEAR             1
+#define HTML_UL_COMPACT           2
+#define HTML_UL_DINGBAT           3
+#define HTML_UL_DIR               4
+#define HTML_UL_ID                5
+#define HTML_UL_LANG              6
+#define HTML_UL_MD                7
+#define HTML_UL_PLAIN             8
+#define HTML_UL_SRC               9
+#define HTML_UL_STYLE            10
+#define HTML_UL_TITLE            11
+#define HTML_UL_TYPE             12
+#define HTML_UL_WRAP             13
+#define HTML_UL_ATTRIBUTES       14
+
+#ifdef __cplusplus
+}
+#endif
+#endif				/* hdr_HTMLDTD_H */
diff --git a/WWW/Library/Implementation/src0_HTMLDTD.h b/WWW/Library/Implementation/src0_HTMLDTD.h
new file mode 100644
index 00000000..2d86b533
--- /dev/null
+++ b/WWW/Library/Implementation/src0_HTMLDTD.h
@@ -0,0 +1,1194 @@
+/* $LynxId: src0_HTMLDTD.h,v 1.5 2008/07/07 00:03:21 tom Exp $ */
+#ifndef src_HTMLDTD_H0
+#define src_HTMLDTD_H0 1
+
+#ifndef once_HTMLDTD
+#define once_HTMLDTD 1
+
+#define T_A             0x00008,0x0B007,0x0FF17,0x37787,0x77BA7,0x8604F,0x00014
+#define T_ABBR          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_ACRONYM       0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_ADDRESS       0x00200,0x0F14F,0x8FFFF,0x36680,0xB6FAF,0x80317,0x00000
+#define T_APPLET        0x02000,0x0B0CF,0x8FFFF,0x37F9F,0xB7FBF,0x8300F,0x00000
+#define T_AREA          0x08000,0x00000,0x00000,0x08000,0x3FFFF,0x00F1F,0x00001
+#define T_AU            0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_AUTHOR        0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_B             0x00001,0x8B04F,0xAFFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_BANNER        0x00200,0x0FB8F,0x0FFFF,0x30000,0x30000,0x8031F,0x00000
+#define T_BASE          0x40000,0x00000,0x00000,0x50000,0x50000,0x8000F,0x00001
+#define T_BASEFONT      0x01000,0x00000,0x00000,0x377AF,0x37FAF,0x8F000,0x00001
+#define T_BDO           0x00100,0x0B04F,0x8FFFF,0x36680,0xB6FAF,0x0033F,0x00000
+#define T_BGSOUND       0x01000,0x00000,0x00000,0x777AF,0x77FAF,0x8730F,0x00001
+#define T_BIG           0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_BLINK         0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00001,0x00014
+#define T_BLOCKQUOTE    0x00200,0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
+#define T_BODY          0x20000,0x2FB8F,0x2FFFF,0x30000,0x30000,0xDFF7F,0x00003
+#define T_BODYTEXT      0x20000,0x0FB8F,0xAFFFF,0x30200,0xB7FAF,0x8F17F,0x00003
+#define T_BQ            0x00200,0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
+#define T_BR            0x01000,0x00000,0x00000,0x377BF,0x77FBF,0x8101F,0x00001
+#define T_BUTTON        0x02000,0x0BB07,0x0FF37,0x0378F,0x37FBF,0x8135F,0x00000
+#define T_CAPTION       0x00100,0x0B04F,0x8FFFF,0x06A00,0xB6FA7,0x8035F,0x00000
+#define T_CENTER        0x00200,0x8FBCF,0x8FFFF,0xB6680,0xB6FA7,0x8071F,0x00000
+#define T_CITE          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
+#define T_CODE          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00000
+#define T_COL           0x04000,0x00000,0x00000,0x00820,0x36FA7,0x88F5F,0x00001
+#define T_COLGROUP      0x00020,0x04000,0x04000,0x00800,0x36FA7,0x8875F,0x00001
+#define T_COMMENT       0x00004,0x00000,0x00000,0xA77AF,0x7FFFF,0x00003,0x00000
+#define T_CREDIT        0x00100,0x0B04F,0x8FFFF,0x06A00,0xB7FBF,0x8030F,0x00000
+#define T_DD            0x00400,0x0FBCF,0x8FFFF,0x00800,0xB6FFF,0x8071F,0x00001
+#define T_DEL           0x00002,0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
+#define T_DFN           0x00002,0x8B0CF,0x8FFFF,0x8778F,0xF7FBF,0x00003,0x00000
+#define T_DIR           0x00800,0x0B400,0x0F75F,0x37680,0x36FB7,0x84F7F,0x00000
+#define T_DIV           0x00200,0x8FB8F,0x8FFFF,0xB66A0,0xB7FFF,0x8031F,0x00004
+#define T_DL            0x00800,0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
+#define T_DLC           0x00800,0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
+#define T_DT            0x00400,0x0B04F,0x0B1FF,0x00800,0x17FFF,0x8071F,0x00001
+#define T_EM            0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
+#define T_EMBED         0x02000,0x8F107,0x8FFF7,0xB6FBF,0xB7FBF,0x1FF7F,0x00001
+#define T_FIELDSET      0x00200,0x8FB4F,0x8FF7F,0x86787,0xB7FF7,0x8805F,0x00000
+#define T_FIG           0x00200,0x0FB00,0x8FFFF,0x36680,0xB6FBF,0x8834F,0x00000
+#define T_FN            0x00200,0x8FBCF,0x8FFFF,0xB6680,0xB7EBF,0x8114F,0x00000
+#define T_FONT          0x00001,0x8B04F,0x8FFFF,0xB778F,0xF7FBF,0x00001,0x00014
+#define T_FORM          0x00080,0x0FF6F,0x0FF7F,0x36E07,0x32F07,0x88DFF,0x00000
+#define T_FRAME         0x10000,0x00000,0x00000,0x10000,0x10000,0x9FFFF,0x00001
+#define T_FRAMESET      0x10000,0x90000,0x90000,0x90000,0x93000,0x9FFFF,0x00000
+#define T_H1            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H2            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H3            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H4            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H5            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H6            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_HEAD          0x40000,0x4F000,0x47000,0x10000,0x10000,0x9FF7F,0x00007
+#define T_HR            0x04000,0x00000,0x00000,0x3FE80,0x3FFBF,0x87F37,0x00001
+#define T_HTML          0x10000,0x7FB8F,0x7FFFF,0x00000,0x00000,0x1FFFF,0x00003
+#define T_HY            0x01000,0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
+#define T_I             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_IFRAME        0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0xD335F,0x00000
+#define T_IMG           0x01000,0x00000,0x00000,0x3779F,0x37FBF,0x80000,0x00001
+#define T_INPUT         0x00040,0x00000,0x00000,0x03F87,0x37F87,0x8904F,0x00001
+#define T_INS           0x00002,0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
+#define T_ISINDEX       0x08000,0x00000,0x00000,0x7778F,0x7FFAF,0x80007,0x00001
+#define T_KBD           0x00002,0x00000,0x00000,0x2778F,0x77FBF,0x00003,0x00000
+#define T_KEYGEN        0x00040,0x00000,0x00000,0x07FB7,0x37FB7,0x80070,0x00001
+#define T_LABEL         0x00002,0x0304F,0x0FFFF,0x0679F,0x36FBF,0x00007,0x00000
+#define T_LEGEND        0x00002,0x0B04F,0x8FF7F,0x00200,0xB7FA7,0x00003,0x00000
+#define T_LH            0x00400,0x0BB7F,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
+#define T_LI            0x00400,0x0BBFF,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
+#define T_LINK          0x08000,0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
+#define T_LISTING       0x00800,0x00000,0x00000,0x36600,0x36F00,0x80F1F,0x00000
+#define T_MAP           0x08000,0x08000,0x08000,0x37FCF,0x37FBF,0x0071F,0x00000
+#define T_MARQUEE       0x04000,0x0000F,0x8F01F,0x37787,0xB7FA7,0x8301C,0x00000
+#define T_MATH          0x00004,0x0B05F,0x8FFFF,0x2778F,0xF7FBF,0x0001F,0x00000
+#define T_MENU          0x00800,0x0B400,0x0F75F,0x17680,0x36FB7,0x88F7F,0x00000
+#define T_META          0x08000,0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
+#define T_NEXTID        0x01000,0x00000,0x00000,0x50000,0x1FFF7,0x00001,0x00001
+#define T_NOFRAMES      0x20000,0x2FB8F,0x0FFFF,0x17000,0x17000,0x0CF5F,0x00000
+#define T_NOTE          0x00200,0x0BBAF,0x8FFFF,0x376B0,0xB7FFF,0x8031F,0x00000
+#define T_OBJECT        0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00020
+#define T_OL            0x00800,0x0C400,0x8FFFF,0x37680,0xB7FB7,0x88F7F,0x00000
+#define T_OPTION        0x08000,0x00000,0x00000,0x00040,0x37FFF,0x8031F,0x00001
+#define T_OVERLAY       0x04000,0x00000,0x00000,0x00200,0x37FBF,0x83F7F,0x00001
+#define T_P             0x00100,0x0B04F,0x8FFFF,0x36680,0xB6FA7,0x80117,0x00001
+#define T_PARAM         0x01000,0x00000,0x00000,0x33500,0x37FFF,0x81560,0x00001
+#define T_PLAINTEXT     0x10000,0xFFFFF,0xFFFFF,0x90000,0x90000,0x3FFFF,0x00001
+#define T_PRE           0x00200,0x0F04F,0x0F05E,0x36680,0x36FF0,0x8071E,0x00000
+#define T_Q             0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00000
+#define T_S             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_SAMP          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
+#define T_SCRIPT        0x02000,0x00000,0x00000,0x77F9F,0x77FFF,0x87F5F,0x00000
+#define T_SELECT        0x00040,0x08000,0x08000,0x03FAF,0x33FBF,0x80F5F,0x00008
+#define T_SHY           0x01000,0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
+#define T_SMALL         0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_SPAN          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x80003,0x00000
+#define T_SPOT          0x00008,0x00000,0x00000,0x3FFF7,0x3FFF7,0x00008,0x00001
+#define T_STRIKE        0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_STRONG        0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
+#define T_STYLE         0x40000,0x00000,0x00000,0x7638F,0x76FAF,0x8001F,0x00000
+#define T_SUB           0x00004,0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
+#define T_SUP           0x00004,0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
+#define T_TAB           0x01000,0x00000,0x00000,0x3778F,0x57FAF,0x00001,0x00001
+#define T_TABLE         0x00800,0x0F1E0,0x8FFFF,0x36680,0xB6FA7,0x8C57F,0x00000
+#define T_TBODY         0x00020,0x00020,0x8FFFF,0x00880,0xB7FB7,0x8C75F,0x00003
+#define T_TD            0x00400,0x0FBCF,0x8FFFF,0x00020,0xB7FB7,0x8C75F,0x00001
+#define T_TEXTAREA      0x00040,0x00000,0x00000,0x07F8F,0x33FBF,0x80F5F,0x00040
+#define T_TEXTFLOW      0x20000,0x8FBFF,0x9FFFF,0x977B0,0xB7FB7,0x9B00F,0x00003
+#define T_TFOOT         0x00020,0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
+#define T_TH            0x00400,0x0FBCF,0x0FFFF,0x00020,0xB7FB7,0x8CF5F,0x00001
+#define T_THEAD         0x00020,0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
+#define T_TITLE         0x40000,0x00000,0x00000,0x50000,0x50000,0x0031F,0x0000C
+#define T_TR            0x00020,0x00400,0x8FFFF,0x00820,0xB7FB7,0x8C75F,0x00001
+#define T_TT            0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00010
+#define T_U             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_UL            0x00800,0x0C480,0x8FFFF,0x36680,0xB7FFF,0x8075F,0x00000
+#define T_VAR           0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_WBR           0x00001,0x00000,0x00000,0x3778F,0x77FBF,0x8101F,0x00001
+#define T_XMP           0x00800,0x00000,0x00000,0x367E0,0x36FFF,0x0875F,0x00001
+#define T_OBJECT_PCDATA 0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00008
+#define T__UNREC_	0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000
+#ifdef USE_PRETTYSRC
+# define N HTMLA_NORMAL
+# define i HTMLA_ANAME
+# define h HTMLA_HREF
+# define c HTMLA_CLASS
+# define x HTMLA_AUXCLASS
+# define T(t) , t
+#else
+# define T(t)			/*nothing */
+#endif
+/* *INDENT-OFF* */
+
+static attr a_attr[] = {                /* A attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "CHARSET"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COORDS"        T(N) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NAME"          T(i) },
+	{ "NOTAB"         T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONMOUSEOUT"    T(N) },
+	{ "ONMOUSEOVER"   T(N) },
+	{ "REL"           T(N) },
+	{ "REV"           T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "URN"           T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr address_attr[] = {          /* ADDRESS attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr applet_attr[] = {           /* APPLET attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "CODE"          T(N) },
+	{ "CODEBASE"      T(h) },
+	{ "DIR"           T(N) },
+	{ "DOWNLOAD"      T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "HSPACE"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(i) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VSPACE"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr area_attr[] = {             /* AREA attributes */
+	{ "ALT"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COORDS"        T(N) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOHREF"        T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONMOUSEOUT"    T(N) },
+	{ "ONMOUSEOVER"   T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr base_attr[] = {             /* BASE attributes */
+	{ "HREF"          T(h) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bgsound_attr[] = {          /* BGSOUND attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LOOP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr body_attr[] = {             /* BODY attributes */
+	{ "ALINK"         T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "BGCOLOR"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LINK"          T(N) },
+	{ "ONLOAD"        T(N) },
+	{ "ONUNLOAD"      T(N) },
+	{ "STYLE"         T(N) },
+	{ "TEXT"          T(N) },
+	{ "TITLE"         T(N) },
+	{ "VLINK"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bodytext_attr[] = {         /* BODYTEXT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DATA"          T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "OBJECT"        T(N) },
+	{ "REF"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "VALUETYPE"     T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bq_attr[] = {               /* BLOCKQUOTE attributes */
+	{ "CITE"          T(h) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr button_attr[] = {           /* BUTTON attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr caption_attr[] = {          /* CAPTION attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr col_attr[] = {              /* COL attributes */
+	{ "ALIGN"         T(N) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SPAN"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr credit_attr[] = {           /* CREDIT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr div_attr[] = {              /* CENTER attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr dl_attr[] = {               /* DL attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr embed_attr[] = {            /* EMBED attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NAME"          T(i) },
+	{ "NOFLOW"        T(N) },
+	{ "PARAMS"        T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "USEMAP"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fieldset_attr[] = {         /* FIELDSET attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fig_attr[] = {              /* FIG attributes */
+	{ "ALIGN"         T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "ISOBJECT"      T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NOFLOW"        T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fn_attr[] = {               /* FN attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr font_attr[] = {             /* BASEFONT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLOR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "END"           T(N) },
+	{ "FACE"          T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SIZE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr form_attr[] = {             /* FORM attributes */
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ACTION"        T(h) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ENCTYPE"       T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "METHOD"        T(N) },
+	{ "ONSUBMIT"      T(N) },
+	{ "SCRIPT"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "SUBJECT"       T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr frame_attr[] = {            /* FRAME attributes */
+	{ "ID"            T(i) },
+	{ "LONGDESC"      T(h) },
+	{ "MARGINHEIGHT"  T(N) },
+	{ "MARGINWIDTH"   T(N) },
+	{ "NAME"          T(N) },
+	{ "NORESIZE"      T(N) },
+	{ "SCROLLING"     T(N) },
+	{ "SRC"           T(h) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr frameset_attr[] = {         /* FRAMESET attributes */
+	{ "COLS"          T(N) },
+	{ "ROWS"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr gen_attr[] = {              /* ABBR attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr h_attr[] = {                /* H1 attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "SEQNUM"        T(N) },
+	{ "SKIP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr hr_attr[] = {               /* HR attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "MD"            T(N) },
+	{ "NOSHADE"       T(N) },
+	{ "SIZE"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr iframe_attr[] = {           /* IFRAME attributes */
+	{ "ALIGN"         T(N) },
+	{ "FRAMEBORDER"   T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LONGDESC"      T(h) },
+	{ "MARGINHEIGHT"  T(N) },
+	{ "MARGINWIDTH"   T(N) },
+	{ "NAME"          T(N) },
+	{ "SCROLLING"     T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr img_attr[] = {              /* IMG attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "ISOBJECT"      T(N) },
+	{ "LANG"          T(N) },
+	{ "LONGDESC"      T(h) },
+	{ "MD"            T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "USEMAP"        T(h) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr input_attr[] = {            /* INPUT attributes */
+	{ "ACCEPT"        T(N) },
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "CHECKED"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MAX"           T(N) },
+	{ "MAXLENGTH"     T(N) },
+	{ "MD"            T(N) },
+	{ "MIN"           T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "ONSELECT"      T(N) },
+	{ "SIZE"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr isindex_attr[] = {          /* ISINDEX attributes */
+	{ "ACTION"        T(h) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "PROMPT"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr keygen_attr[] = {           /* KEYGEN attributes */
+	{ "CHALLENGE"     T(N) },
+	{ "CLASS"         T(c) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr label_attr[] = {            /* LABEL attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "FOR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr legend_attr[] = {           /* LEGEND attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr li_attr[] = {               /* LI attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "SKIP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr link_attr[] = {             /* LINK attributes */
+	{ "CHARSET"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "MEDIA"         T(N) },
+	{ "REL"           T(N) },
+	{ "REV"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr map_attr[] = {              /* MAP attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(i) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr math_attr[] = {             /* MATH attributes */
+	{ "BOX"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr meta_attr[] = {             /* META attributes */
+	{ "CONTENT"       T(N) },
+	{ "HTTP-EQUIV"    T(N) },
+	{ "NAME"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr nextid_attr[] = {           /* NEXTID attributes */
+	{ "N"             T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr note_attr[] = {             /* NOTE attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "ROLE"          T(x) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr object_attr[] = {           /* OBJECT attributes */
+	{ "ALIGN"         T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLASSID"       T(h) },
+	{ "CODEBASE"      T(h) },
+	{ "CODETYPE"      T(N) },
+	{ "DATA"          T(h) },
+	{ "DECLARE"       T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "HSPACE"        T(N) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "SHAPES"        T(N) },
+	{ "STANDBY"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "USEMAP"        T(h) },
+	{ "VSPACE"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr ol_attr[] = {               /* OL attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "CONTINUE"      T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SEQNUM"        T(N) },
+	{ "START"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr option_attr[] = {           /* OPTION attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SELECTED"      T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr overlay_attr[] = {          /* OVERLAY attributes */
+	{ "CLASS"         T(c) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "MD"            T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ "X"             T(N) },
+	{ "Y"             T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr p_attr[] = {                /* P attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr param_attr[] = {            /* PARAM attributes */
+	{ "ACCEPT"        T(N) },
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ACCEPT-ENCODING" T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DATA"          T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "OBJECT"        T(N) },
+	{ "REF"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "VALUEREF"      T(N) },
+	{ "VALUETYPE"     T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr script_attr[] = {           /* SCRIPT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "EVENT"         T(N) },
+	{ "FOR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LANGUAGE"      T(N) },
+	{ "NAME"          T(N) },
+	{ "SCRIPTENGINE"  T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr select_attr[] = {           /* SELECT attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "MULTIPLE"      T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "SIZE"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr style_attr[] = {            /* STYLE attributes */
+	{ "DIR"           T(N) },
+	{ "LANG"          T(N) },
+	{ "NOTATION"      T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr tab_attr[] = {              /* TAB attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "ID"            T(i) },
+	{ "INDENT"        T(N) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TO"            T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr table_attr[] = {            /* TABLE attributes */
+	{ "ALIGN"         T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "BORDER"        T(N) },
+	{ "CELLPADDING"   T(N) },
+	{ "CELLSPACING"   T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLS"          T(N) },
+	{ "COLSPEC"       T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "FRAME"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOFLOW"        T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "RULES"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "SUMMARY"       T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr td_attr[] = {               /* TD attributes */
+	{ "ALIGN"         T(N) },
+	{ "AXES"          T(N) },
+	{ "AXIS"          T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLSPAN"       T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "ROWSPAN"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr textarea_attr[] = {         /* TEXTAREA attributes */
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLS"          T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "ONSELECT"      T(N) },
+	{ "ROWS"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr tr_attr[] = {               /* TBODY attributes */
+	{ "ALIGN"         T(N) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr ul_attr[] = {               /* DIR attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "PLAIN"         T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "WRAP"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+/* *INDENT-ON* */
+
+#undef N
+#undef i
+#undef h
+#undef c
+#undef x
+
+#undef T
+
+/* these definitions are used in the tags-tables */
+#undef P
+#undef P_
+#ifdef USE_COLOR_STYLE
+#define P_(x) x , (sizeof x) -1
+#define NULL_HTTag_ NULL, 0
+#else
+#define P_(x) x
+#define NULL_HTTag_ NULL
+#endif
+
+#ifdef EXP_JUSTIFY_ELTS
+#define P(x) P_(x), 1
+#define P0(x) P_(x), 0
+#define NULL_HTTag NULL_HTTag_,0
+#else
+#define P(x) P_(x)
+#define P0(x) P_(x)
+#define NULL_HTTag NULL_HTTag_
+#endif
+
+#endif /* once_HTMLDTD */
+/* *INDENT-OFF* */
+static const HTTag tags_table0[HTML_ALL_ELEMENTS] = {
+ { P("A"),         a_attr,         HTML_A_ATTRIBUTES,          SGML_EMPTY,   T_A},
+ { P("ABBR"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_ABBR},
+ { P("ACRONYM"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_ACRONYM},
+ { P("ADDRESS"),   address_attr,   HTML_ADDRESS_ATTRIBUTES,    SGML_MIXED,   T_ADDRESS},
+ { P("APPLET"),    applet_attr,    HTML_APPLET_ATTRIBUTES,     SGML_MIXED,   T_APPLET},
+ { P("AREA"),      area_attr,      HTML_AREA_ATTRIBUTES,       SGML_EMPTY,   T_AREA},
+ { P("AU"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_AU},
+ { P("AUTHOR"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_AUTHOR},
+ { P("B"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_B},
+ { P0("BANNER"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BANNER},
+ { P("BASE"),      base_attr,      HTML_BASE_ATTRIBUTES,       SGML_EMPTY,   T_BASE},
+ { P("BASEFONT"),  font_attr,      HTML_FONT_ATTRIBUTES,       SGML_EMPTY,   T_BASEFONT},
+ { P("BDO"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BDO},
+ { P("BGSOUND"),   bgsound_attr,   HTML_BGSOUND_ATTRIBUTES,    SGML_EMPTY,   T_BGSOUND},
+ { P("BIG"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BIG},
+ { P("BLINK"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_BLINK},
+ { P("BLOCKQUOTE"),bq_attr,        HTML_BQ_ATTRIBUTES,         SGML_MIXED,   T_BLOCKQUOTE},
+ { P("BODY"),      body_attr,      HTML_BODY_ATTRIBUTES,       SGML_MIXED,   T_BODY},
+ { P("BODYTEXT"),  bodytext_attr,  HTML_BODYTEXT_ATTRIBUTES,   SGML_MIXED,   T_BODYTEXT},
+ { P("BQ"),        bq_attr,        HTML_BQ_ATTRIBUTES,         SGML_MIXED,   T_BQ},
+ { P("BR"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_BR},
+ { P("BUTTON"),    button_attr,    HTML_BUTTON_ATTRIBUTES,     SGML_MIXED,   T_BUTTON},
+ { P("CAPTION"),   caption_attr,   HTML_CAPTION_ATTRIBUTES,    SGML_MIXED,   T_CAPTION},
+ { P("CENTER"),    div_attr,       HTML_DIV_ATTRIBUTES,        SGML_MIXED,   T_CENTER},
+ { P("CITE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_CITE},
+ { P("CODE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_CODE},
+ { P("COL"),       col_attr,       HTML_COL_ATTRIBUTES,        SGML_EMPTY,   T_COL},
+ { P("COLGROUP"),  col_attr,       HTML_COL_ATTRIBUTES,        SGML_EMPTY,   T_COLGROUP},
+ { P("COMMENT"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_COMMENT},
+ { P("CREDIT"),    credit_attr,    HTML_CREDIT_ATTRIBUTES,     SGML_MIXED,   T_CREDIT},
+ { P("DD"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_DD},
+ { P("DEL"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DEL},
+ { P("DFN"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DFN},
+ { P("DIR"),       ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_DIR},
+ { P("DIV"),       div_attr,       HTML_DIV_ATTRIBUTES,        SGML_MIXED,   T_DIV},
+ { P("DL"),        dl_attr,        HTML_DL_ATTRIBUTES,         SGML_MIXED,   T_DL},
+ { P("DLC"),       dl_attr,        HTML_DL_ATTRIBUTES,         SGML_MIXED,   T_DLC},
+ { P("DT"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_DT},
+ { P("EM"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_EM},
+ { P("EMBED"),     embed_attr,     HTML_EMBED_ATTRIBUTES,      SGML_EMPTY,   T_EMBED},
+ { P("FIELDSET"),  fieldset_attr,  HTML_FIELDSET_ATTRIBUTES,   SGML_MIXED,   T_FIELDSET},
+ { P("FIG"),       fig_attr,       HTML_FIG_ATTRIBUTES,        SGML_MIXED,   T_FIG},
+ { P("FN"),        fn_attr,        HTML_FN_ATTRIBUTES,         SGML_MIXED,   T_FN},
+ { P("FONT"),      font_attr,      HTML_FONT_ATTRIBUTES,       SGML_EMPTY,   T_FONT},
+ { P("FORM"),      form_attr,      HTML_FORM_ATTRIBUTES,       SGML_EMPTY,   T_FORM},
+ { P("FRAME"),     frame_attr,     HTML_FRAME_ATTRIBUTES,      SGML_EMPTY,   T_FRAME},
+ { P("FRAMESET"),  frameset_attr,  HTML_FRAMESET_ATTRIBUTES,   SGML_MIXED,   T_FRAMESET},
+ { P0("H1"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H1},
+ { P0("H2"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H2},
+ { P0("H3"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H3},
+ { P0("H4"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H4},
+ { P0("H5"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H5},
+ { P0("H6"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H6},
+ { P("HEAD"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_HEAD},
+ { P("HR"),        hr_attr,        HTML_HR_ATTRIBUTES,         SGML_EMPTY,   T_HR},
+ { P("HTML"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_HTML},
+ { P("HY"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_HY},
+ { P("I"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_I},
+ { P("IFRAME"),    iframe_attr,    HTML_IFRAME_ATTRIBUTES,     SGML_MIXED,   T_IFRAME},
+ { P("IMG"),       img_attr,       HTML_IMG_ATTRIBUTES,        SGML_EMPTY,   T_IMG},
+ { P("INPUT"),     input_attr,     HTML_INPUT_ATTRIBUTES,      SGML_EMPTY,   T_INPUT},
+ { P("INS"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_INS},
+ { P("ISINDEX"),   isindex_attr,   HTML_ISINDEX_ATTRIBUTES,    SGML_EMPTY,   T_ISINDEX},
+ { P("KBD"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_KBD},
+ { P("KEYGEN"),    keygen_attr,    HTML_KEYGEN_ATTRIBUTES,     SGML_EMPTY,   T_KEYGEN},
+ { P("LABEL"),     label_attr,     HTML_LABEL_ATTRIBUTES,      SGML_MIXED,   T_LABEL},
+ { P("LEGEND"),    legend_attr,    HTML_LEGEND_ATTRIBUTES,     SGML_MIXED,   T_LEGEND},
+ { P("LH"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_LH},
+ { P("LI"),        li_attr,        HTML_LI_ATTRIBUTES,         SGML_EMPTY,   T_LI},
+ { P("LINK"),      link_attr,      HTML_LINK_ATTRIBUTES,       SGML_EMPTY,   T_LINK},
+ { P("LISTING"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_LISTING},
+ { P("MAP"),       map_attr,       HTML_MAP_ATTRIBUTES,        SGML_MIXED,   T_MAP},
+ { P("MARQUEE"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_MARQUEE},
+ { P("MATH"),      math_attr,      HTML_MATH_ATTRIBUTES,       SGML_LITTERAL,T_MATH},
+ { P("MENU"),      ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_MENU},
+ { P("META"),      meta_attr,      HTML_META_ATTRIBUTES,       SGML_EMPTY,   T_META},
+ { P("NEXTID"),    nextid_attr,    HTML_NEXTID_ATTRIBUTES,     SGML_EMPTY,   T_NEXTID},
+ { P("NOFRAMES"),  gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_NOFRAMES},
+ { P("NOTE"),      note_attr,      HTML_NOTE_ATTRIBUTES,       SGML_MIXED,   T_NOTE},
+ { P("OBJECT"),    object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_LITTERAL,T_OBJECT},
+ { P("OL"),        ol_attr,        HTML_OL_ATTRIBUTES,         SGML_MIXED,   T_OL},
+ { P("OPTION"),    option_attr,    HTML_OPTION_ATTRIBUTES,     SGML_EMPTY,   T_OPTION},
+ { P("OVERLAY"),   overlay_attr,   HTML_OVERLAY_ATTRIBUTES,    SGML_EMPTY,   T_OVERLAY},
+ { P("P"),         p_attr,         HTML_P_ATTRIBUTES,          SGML_EMPTY,   T_P},
+ { P("PARAM"),     param_attr,     HTML_PARAM_ATTRIBUTES,      SGML_EMPTY,   T_PARAM},
+ { P("PLAINTEXT"), gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_PLAINTEXT},
+ { P0("PRE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_PRE},
+ { P("Q"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_Q},
+ { P("S"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_S},
+ { P("SAMP"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SAMP},
+ { P("SCRIPT"),    script_attr,    HTML_SCRIPT_ATTRIBUTES,     SGML_LITTERAL,T_SCRIPT},
+ { P("SELECT"),    select_attr,    HTML_SELECT_ATTRIBUTES,     SGML_MIXED,   T_SELECT},
+ { P("SHY"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_SHY},
+ { P("SMALL"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SMALL},
+ { P("SPAN"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SPAN},
+ { P("SPOT"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_SPOT},
+ { P("STRIKE"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_STRIKE},
+ { P("STRONG"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_STRONG},
+ { P("STYLE"),     style_attr,     HTML_STYLE_ATTRIBUTES,      SGML_LITTERAL,T_STYLE},
+ { P("SUB"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SUB},
+ { P("SUP"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SUP},
+ { P("TAB"),       tab_attr,       HTML_TAB_ATTRIBUTES,        SGML_EMPTY,   T_TAB},
+ { P("TABLE"),     table_attr,     HTML_TABLE_ATTRIBUTES,      SGML_MIXED,   T_TABLE},
+ { P("TBODY"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_EMPTY,   T_TBODY},
+ { P("TD"),        td_attr,        HTML_TD_ATTRIBUTES,         SGML_EMPTY,   T_TD},
+ { P("TEXTAREA"),  textarea_attr,  HTML_TEXTAREA_ATTRIBUTES,   SGML_LITTERAL,T_TEXTAREA},
+ { P("TEXTFLOW"),  bodytext_attr,  HTML_BODYTEXT_ATTRIBUTES,   SGML_MIXED,   T_TEXTFLOW},
+ { P("TFOOT"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_EMPTY,   T_TFOOT},
+ { P("TH"),        td_attr,        HTML_TD_ATTRIBUTES,         SGML_EMPTY,   T_TH},
+ { P("THEAD"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_EMPTY,   T_THEAD},
+ { P("TITLE"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_RCDATA,  T_TITLE},
+ { P("TR"),        tr_attr,        HTML_TR_ATTRIBUTES,         SGML_EMPTY,   T_TR},
+ { P("TT"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_TT},
+ { P("U"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_U},
+ { P("UL"),        ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_UL},
+ { P("VAR"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_VAR},
+ { P("WBR"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_WBR},
+ { P0("XMP"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_XMP},
+/* additional (alternative variants), not counted in HTML_ELEMENTS: */
+/* This one will be used as a temporary substitute within the parser when
+   it has been signalled to parse OBJECT content as MIXED. - kw */
+ { P("OBJECT"),    object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_MIXED,   T_OBJECT_PCDATA},
+};
+/* *INDENT-ON* */
+
+#endif /* src_HTMLDTD_H0 */
diff --git a/WWW/Library/Implementation/src1_HTMLDTD.h b/WWW/Library/Implementation/src1_HTMLDTD.h
new file mode 100644
index 00000000..6506d2b7
--- /dev/null
+++ b/WWW/Library/Implementation/src1_HTMLDTD.h
@@ -0,0 +1,1194 @@
+/* $LynxId: src1_HTMLDTD.h,v 1.5 2008/07/07 00:03:21 tom Exp $ */
+#ifndef src_HTMLDTD_H1
+#define src_HTMLDTD_H1 1
+
+#ifndef once_HTMLDTD
+#define once_HTMLDTD 1
+
+#define T_A             0x00008,0x0B007,0x0FF17,0x37787,0x77BA7,0x8604F,0x00014
+#define T_ABBR          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_ACRONYM       0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_ADDRESS       0x00200,0x0F14F,0x8FFFF,0x36680,0xB6FAF,0x80317,0x00000
+#define T_APPLET        0x02000,0x0B0CF,0x8FFFF,0x37F9F,0xB7FBF,0x8300F,0x00000
+#define T_AREA          0x08000,0x00000,0x00000,0x08000,0x3FFFF,0x00F1F,0x00001
+#define T_AU            0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_AUTHOR        0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00003,0x00000
+#define T_B             0x00001,0x8B04F,0xAFFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_BANNER        0x00200,0x0FB8F,0x0FFFF,0x30000,0x30000,0x8031F,0x00000
+#define T_BASE          0x40000,0x00000,0x00000,0x50000,0x50000,0x8000F,0x00001
+#define T_BASEFONT      0x01000,0x00000,0x00000,0x377AF,0x37FAF,0x8F000,0x00001
+#define T_BDO           0x00100,0x0B04F,0x8FFFF,0x36680,0xB6FAF,0x0033F,0x00000
+#define T_BGSOUND       0x01000,0x00000,0x00000,0x777AF,0x77FAF,0x8730F,0x00001
+#define T_BIG           0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_BLINK         0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00001,0x00014
+#define T_BLOCKQUOTE    0x00200,0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
+#define T_BODY          0x20000,0x2FB8F,0x2FFFF,0x30000,0x30000,0xDFF7F,0x00003
+#define T_BODYTEXT      0x20000,0x0FB8F,0xAFFFF,0x30200,0xB7FAF,0x8F17F,0x00003
+#define T_BQ            0x00200,0xAFBCF,0xAFFFF,0xB6680,0xB6FAF,0x8031F,0x00000
+#define T_BR            0x01000,0x00000,0x00000,0x377BF,0x77FBF,0x8101F,0x00001
+#define T_BUTTON        0x02000,0x0BB07,0x0FF37,0x0378F,0x37FBF,0x8135F,0x00000
+#define T_CAPTION       0x00100,0x0B04F,0x8FFFF,0x06A00,0xB6FA7,0x8035F,0x00000
+#define T_CENTER        0x00200,0x8FBCF,0x8FFFF,0xB6680,0xB6FA7,0x8071F,0x00000
+#define T_CITE          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
+#define T_CODE          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00000
+#define T_COL           0x04000,0x00000,0x00000,0x00820,0x36FA7,0x88F5F,0x00001
+#define T_COLGROUP      0x00020,0x04000,0x04000,0x00800,0x36FA7,0x8875F,0x00001
+#define T_COMMENT       0x00004,0x00000,0x00000,0xA77AF,0x7FFFF,0x00003,0x00000
+#define T_CREDIT        0x00100,0x0B04F,0x8FFFF,0x06A00,0xB7FBF,0x8030F,0x00000
+#define T_DD            0x00400,0x0FBCF,0x8FFFF,0x00800,0xB6FFF,0x8071F,0x00001
+#define T_DEL           0x00002,0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
+#define T_DFN           0x00002,0x8B0CF,0x8FFFF,0x8778F,0xF7FBF,0x00003,0x00000
+#define T_DIR           0x00800,0x0B400,0x0F75F,0x37680,0x36FB7,0x84F7F,0x00000
+#define T_DIV           0x00200,0x8FB8F,0x8FFFF,0xB66A0,0xB7FFF,0x8031F,0x00004
+#define T_DL            0x00800,0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
+#define T_DLC           0x00800,0x0C480,0x8FFFF,0x36680,0xB7FB7,0x0075F,0x00000
+#define T_DT            0x00400,0x0B04F,0x0B1FF,0x00800,0x17FFF,0x8071F,0x00001
+#define T_EM            0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
+#define T_EMBED         0x02000,0x8F107,0x8FFF7,0xB6FBF,0xB7FBF,0x1FF7F,0x00001
+#define T_FIELDSET      0x00200,0x8FB4F,0x8FF7F,0x86787,0xB7FF7,0x8805F,0x00000
+#define T_FIG           0x00200,0x0FB00,0x8FFFF,0x36680,0xB6FBF,0x8834F,0x00000
+#define T_FN            0x00200,0x8FBCF,0x8FFFF,0xB6680,0xB7EBF,0x8114F,0x00000
+#define T_FONT          0x00001,0x8B04F,0x8FFFF,0xB778F,0xF7FBF,0x00001,0x00014
+#define T_FORM          0x00080,0x0FF6F,0x0FF7F,0x36E07,0x32F07,0x88DFF,0x00000
+#define T_FRAME         0x10000,0x00000,0x00000,0x10000,0x10000,0x9FFFF,0x00001
+#define T_FRAMESET      0x10000,0x90000,0x90000,0x90000,0x93000,0x9FFFF,0x00000
+#define T_H1            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H2            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H3            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H4            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H5            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_H6            0x00100,0x0B04F,0x0B05F,0x36680,0x37FAF,0x80117,0x00000
+#define T_HEAD          0x40000,0x4F000,0x47000,0x10000,0x10000,0x9FF7F,0x00007
+#define T_HR            0x04000,0x00000,0x00000,0x3FE80,0x3FFBF,0x87F37,0x00001
+#define T_HTML          0x10000,0x7FB8F,0x7FFFF,0x00000,0x00000,0x1FFFF,0x00003
+#define T_HY            0x01000,0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
+#define T_I             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_IFRAME        0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0xD335F,0x00000
+#define T_IMG           0x01000,0x00000,0x00000,0x3779F,0x37FBF,0x80000,0x00001
+#define T_INPUT         0x00040,0x00000,0x00000,0x03F87,0x37F87,0x8904F,0x00001
+#define T_INS           0x00002,0x8BBCF,0x8FFFF,0xA7F8F,0xF7FBF,0x00003,0x00000
+#define T_ISINDEX       0x08000,0x00000,0x00000,0x7778F,0x7FFAF,0x80007,0x00001
+#define T_KBD           0x00002,0x00000,0x00000,0x2778F,0x77FBF,0x00003,0x00000
+#define T_KEYGEN        0x00040,0x00000,0x00000,0x07FB7,0x37FB7,0x80070,0x00001
+#define T_LABEL         0x00002,0x0304F,0x0FFFF,0x0679F,0x36FBF,0x00007,0x00000
+#define T_LEGEND        0x00002,0x0B04F,0x8FF7F,0x00200,0xB7FA7,0x00003,0x00000
+#define T_LH            0x00400,0x0BB7F,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
+#define T_LI            0x00400,0x0BBFF,0x8FFFF,0x00800,0x97FFF,0x8071F,0x00001
+#define T_LINK          0x08000,0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
+#define T_LISTING       0x00800,0x00000,0x00000,0x36600,0x36F00,0x80F1F,0x00000
+#define T_MAP           0x08000,0x08000,0x08000,0x37FCF,0x37FBF,0x0071F,0x00000
+#define T_MARQUEE       0x04000,0x0000F,0x8F01F,0x37787,0xB7FA7,0x8301C,0x00000
+#define T_MATH          0x00004,0x0B05F,0x8FFFF,0x2778F,0xF7FBF,0x0001F,0x00000
+#define T_MENU          0x00800,0x0B400,0x0F75F,0x17680,0x36FB7,0x88F7F,0x00000
+#define T_META          0x08000,0x00000,0x00000,0x50000,0x50000,0x0FF7F,0x00001
+#define T_NEXTID        0x01000,0x00000,0x00000,0x50000,0x1FFF7,0x00001,0x00001
+#define T_NOFRAMES      0x20000,0x2FB8F,0x0FFFF,0x17000,0x17000,0x0CF5F,0x00000
+#define T_NOTE          0x00200,0x0BBAF,0x8FFFF,0x376B0,0xB7FFF,0x8031F,0x00000
+#define T_OBJECT        0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00020
+#define T_OL            0x00800,0x0C400,0x8FFFF,0x37680,0xB7FB7,0x88F7F,0x00000
+#define T_OPTION        0x08000,0x00000,0x00000,0x00040,0x37FFF,0x8031F,0x00001
+#define T_OVERLAY       0x04000,0x00000,0x00000,0x00200,0x37FBF,0x83F7F,0x00001
+#define T_P             0x00100,0x0B04F,0x8FFFF,0x36680,0xB6FA7,0x80117,0x00001
+#define T_PARAM         0x01000,0x00000,0x00000,0x33500,0x37FFF,0x81560,0x00001
+#define T_PLAINTEXT     0x10000,0xFFFFF,0xFFFFF,0x90000,0x90000,0x3FFFF,0x00001
+#define T_PRE           0x00200,0x0F04F,0x0F05E,0x36680,0x36FF0,0x8071E,0x00000
+#define T_Q             0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00000
+#define T_S             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_SAMP          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00002,0x00010
+#define T_SCRIPT        0x02000,0x00000,0x00000,0x77F9F,0x77FFF,0x87F5F,0x00000
+#define T_SELECT        0x00040,0x08000,0x08000,0x03FAF,0x33FBF,0x80F5F,0x00008
+#define T_SHY           0x01000,0x00000,0x00000,0x3779F,0x77FBF,0x8101F,0x00001
+#define T_SMALL         0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_SPAN          0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x80003,0x00000
+#define T_SPOT          0x00008,0x00000,0x00000,0x3FFF7,0x3FFF7,0x00008,0x00001
+#define T_STRIKE        0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_STRONG        0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FAF,0x00003,0x00010
+#define T_STYLE         0x40000,0x00000,0x00000,0x7638F,0x76FAF,0x8001F,0x00000
+#define T_SUB           0x00004,0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
+#define T_SUP           0x00004,0x8B05F,0x8FFFF,0x8779F,0xF7FBF,0x00007,0x00000
+#define T_TAB           0x01000,0x00000,0x00000,0x3778F,0x57FAF,0x00001,0x00001
+#define T_TABLE         0x00800,0x0F1E0,0x8FFFF,0x36680,0xB6FA7,0x8C57F,0x00000
+#define T_TBODY         0x00020,0x00020,0x8FFFF,0x00880,0xB7FB7,0x8C75F,0x00003
+#define T_TD            0x00400,0x0FBCF,0x8FFFF,0x00020,0xB7FB7,0x8C75F,0x00001
+#define T_TEXTAREA      0x00040,0x00000,0x00000,0x07F8F,0x33FBF,0x80F5F,0x00040
+#define T_TEXTFLOW      0x20000,0x8FBFF,0x9FFFF,0x977B0,0xB7FB7,0x9B00F,0x00003
+#define T_TFOOT         0x00020,0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
+#define T_TH            0x00400,0x0FBCF,0x0FFFF,0x00020,0xB7FB7,0x8CF5F,0x00001
+#define T_THEAD         0x00020,0x00020,0x8FFFF,0x00800,0xB7FB7,0x8CF5F,0x00001
+#define T_TITLE         0x40000,0x00000,0x00000,0x50000,0x50000,0x0031F,0x0000C
+#define T_TR            0x00020,0x00400,0x8FFFF,0x00820,0xB7FB7,0x8C75F,0x00001
+#define T_TT            0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00010
+#define T_U             0x00001,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00014
+#define T_UL            0x00800,0x0C480,0x8FFFF,0x36680,0xB7FFF,0x8075F,0x00000
+#define T_VAR           0x00002,0x8B04F,0x8FFFF,0xA778F,0xF7FBF,0x00001,0x00000
+#define T_WBR           0x00001,0x00000,0x00000,0x3778F,0x77FBF,0x8101F,0x00001
+#define T_XMP           0x00800,0x00000,0x00000,0x367E0,0x36FFF,0x0875F,0x00001
+#define T_OBJECT_PCDATA 0x02000,0x8FBCF,0x8FFFF,0xB679F,0xB6FBF,0x83F5F,0x00008
+#define T__UNREC_	0x00000,0x00000,0x00000,0x00000,0x00000,0x00000,0x00000
+#ifdef USE_PRETTYSRC
+# define N HTMLA_NORMAL
+# define i HTMLA_ANAME
+# define h HTMLA_HREF
+# define c HTMLA_CLASS
+# define x HTMLA_AUXCLASS
+# define T(t) , t
+#else
+# define T(t)			/*nothing */
+#endif
+/* *INDENT-OFF* */
+
+static attr a_attr[] = {                /* A attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "CHARSET"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COORDS"        T(N) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NAME"          T(i) },
+	{ "NOTAB"         T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONMOUSEOUT"    T(N) },
+	{ "ONMOUSEOVER"   T(N) },
+	{ "REL"           T(N) },
+	{ "REV"           T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "URN"           T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr address_attr[] = {          /* ADDRESS attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr applet_attr[] = {           /* APPLET attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "CODE"          T(N) },
+	{ "CODEBASE"      T(h) },
+	{ "DIR"           T(N) },
+	{ "DOWNLOAD"      T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "HSPACE"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(i) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VSPACE"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr area_attr[] = {             /* AREA attributes */
+	{ "ALT"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COORDS"        T(N) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOHREF"        T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONMOUSEOUT"    T(N) },
+	{ "ONMOUSEOVER"   T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr base_attr[] = {             /* BASE attributes */
+	{ "HREF"          T(h) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bgsound_attr[] = {          /* BGSOUND attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LOOP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr body_attr[] = {             /* BODY attributes */
+	{ "ALINK"         T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "BGCOLOR"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LINK"          T(N) },
+	{ "ONLOAD"        T(N) },
+	{ "ONUNLOAD"      T(N) },
+	{ "STYLE"         T(N) },
+	{ "TEXT"          T(N) },
+	{ "TITLE"         T(N) },
+	{ "VLINK"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bodytext_attr[] = {         /* BODYTEXT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DATA"          T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "OBJECT"        T(N) },
+	{ "REF"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "VALUETYPE"     T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr bq_attr[] = {               /* BLOCKQUOTE attributes */
+	{ "CITE"          T(h) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr button_attr[] = {           /* BUTTON attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr caption_attr[] = {          /* CAPTION attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr col_attr[] = {              /* COL attributes */
+	{ "ALIGN"         T(N) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SPAN"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr credit_attr[] = {           /* CREDIT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr div_attr[] = {              /* CENTER attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr dl_attr[] = {               /* DL attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr embed_attr[] = {            /* EMBED attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NAME"          T(i) },
+	{ "NOFLOW"        T(N) },
+	{ "PARAMS"        T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "USEMAP"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fieldset_attr[] = {         /* FIELDSET attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fig_attr[] = {              /* FIG attributes */
+	{ "ALIGN"         T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "ISOBJECT"      T(N) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NOFLOW"        T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr fn_attr[] = {               /* FN attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr font_attr[] = {             /* BASEFONT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLOR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "END"           T(N) },
+	{ "FACE"          T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SIZE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr form_attr[] = {             /* FORM attributes */
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ACTION"        T(h) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ENCTYPE"       T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "METHOD"        T(N) },
+	{ "ONSUBMIT"      T(N) },
+	{ "SCRIPT"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "SUBJECT"       T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr frame_attr[] = {            /* FRAME attributes */
+	{ "ID"            T(i) },
+	{ "LONGDESC"      T(h) },
+	{ "MARGINHEIGHT"  T(N) },
+	{ "MARGINWIDTH"   T(N) },
+	{ "NAME"          T(N) },
+	{ "NORESIZE"      T(N) },
+	{ "SCROLLING"     T(N) },
+	{ "SRC"           T(h) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr frameset_attr[] = {         /* FRAMESET attributes */
+	{ "COLS"          T(N) },
+	{ "ROWS"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr gen_attr[] = {              /* ABBR attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr h_attr[] = {                /* H1 attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "SEQNUM"        T(N) },
+	{ "SKIP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr hr_attr[] = {               /* HR attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "MD"            T(N) },
+	{ "NOSHADE"       T(N) },
+	{ "SIZE"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr iframe_attr[] = {           /* IFRAME attributes */
+	{ "ALIGN"         T(N) },
+	{ "FRAMEBORDER"   T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LONGDESC"      T(h) },
+	{ "MARGINHEIGHT"  T(N) },
+	{ "MARGINWIDTH"   T(N) },
+	{ "NAME"          T(N) },
+	{ "SCROLLING"     T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr img_attr[] = {              /* IMG attributes */
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "ISOBJECT"      T(N) },
+	{ "LANG"          T(N) },
+	{ "LONGDESC"      T(h) },
+	{ "MD"            T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "USEMAP"        T(h) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr input_attr[] = {            /* INPUT attributes */
+	{ "ACCEPT"        T(N) },
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ALIGN"         T(N) },
+	{ "ALT"           T(N) },
+	{ "CHECKED"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MAX"           T(N) },
+	{ "MAXLENGTH"     T(N) },
+	{ "MD"            T(N) },
+	{ "MIN"           T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "ONSELECT"      T(N) },
+	{ "SIZE"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr isindex_attr[] = {          /* ISINDEX attributes */
+	{ "ACTION"        T(h) },
+	{ "DIR"           T(N) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "PROMPT"        T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr keygen_attr[] = {           /* KEYGEN attributes */
+	{ "CHALLENGE"     T(N) },
+	{ "CLASS"         T(c) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr label_attr[] = {            /* LABEL attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "FOR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "ONCLICK"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr legend_attr[] = {           /* LEGEND attributes */
+	{ "ACCESSKEY"     T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr li_attr[] = {               /* LI attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "SKIP"          T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr link_attr[] = {             /* LINK attributes */
+	{ "CHARSET"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "HREF"          T(h) },
+	{ "ID"            T(i) },
+	{ "MEDIA"         T(N) },
+	{ "REL"           T(N) },
+	{ "REV"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TARGET"        T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr map_attr[] = {              /* MAP attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(i) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr math_attr[] = {             /* MATH attributes */
+	{ "BOX"           T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr meta_attr[] = {             /* META attributes */
+	{ "CONTENT"       T(N) },
+	{ "HTTP-EQUIV"    T(N) },
+	{ "NAME"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr nextid_attr[] = {           /* NEXTID attributes */
+	{ "N"             T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr note_attr[] = {             /* NOTE attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "ROLE"          T(x) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr object_attr[] = {           /* OBJECT attributes */
+	{ "ALIGN"         T(N) },
+	{ "BORDER"        T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLASSID"       T(h) },
+	{ "CODEBASE"      T(h) },
+	{ "CODETYPE"      T(N) },
+	{ "DATA"          T(h) },
+	{ "DECLARE"       T(N) },
+	{ "DIR"           T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "HSPACE"        T(N) },
+	{ "ID"            T(i) },
+	{ "ISMAP"         T(N) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "SHAPES"        T(N) },
+	{ "STANDBY"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "USEMAP"        T(h) },
+	{ "VSPACE"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr ol_attr[] = {               /* OL attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "CONTINUE"      T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SEQNUM"        T(N) },
+	{ "START"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr option_attr[] = {           /* OPTION attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "SELECTED"      T(N) },
+	{ "SHAPE"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALUE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr overlay_attr[] = {          /* OVERLAY attributes */
+	{ "CLASS"         T(c) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "IMAGEMAP"      T(N) },
+	{ "MD"            T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ "X"             T(N) },
+	{ "Y"             T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr p_attr[] = {                /* P attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr param_attr[] = {            /* PARAM attributes */
+	{ "ACCEPT"        T(N) },
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ACCEPT-ENCODING" T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DATA"          T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "OBJECT"        T(N) },
+	{ "REF"           T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "VALUE"         T(N) },
+	{ "VALUEREF"      T(N) },
+	{ "VALUETYPE"     T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr script_attr[] = {           /* SCRIPT attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "EVENT"         T(N) },
+	{ "FOR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "LANGUAGE"      T(N) },
+	{ "NAME"          T(N) },
+	{ "SCRIPTENGINE"  T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr select_attr[] = {           /* SELECT attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "MULTIPLE"      T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "SIZE"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr style_attr[] = {            /* STYLE attributes */
+	{ "DIR"           T(N) },
+	{ "LANG"          T(N) },
+	{ "NOTATION"      T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr tab_attr[] = {              /* TAB attributes */
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "ID"            T(i) },
+	{ "INDENT"        T(N) },
+	{ "LANG"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TO"            T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr table_attr[] = {            /* TABLE attributes */
+	{ "ALIGN"         T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "BORDER"        T(N) },
+	{ "CELLPADDING"   T(N) },
+	{ "CELLSPACING"   T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLS"          T(N) },
+	{ "COLSPEC"       T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "FRAME"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOFLOW"        T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "RULES"         T(N) },
+	{ "STYLE"         T(N) },
+	{ "SUMMARY"       T(N) },
+	{ "TITLE"         T(N) },
+	{ "UNITS"         T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr td_attr[] = {               /* TD attributes */
+	{ "ALIGN"         T(N) },
+	{ "AXES"          T(N) },
+	{ "AXIS"          T(N) },
+	{ "BACKGROUND"    T(h) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLSPAN"       T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "HEIGHT"        T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "ROWSPAN"       T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ "WIDTH"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr textarea_attr[] = {         /* TEXTAREA attributes */
+	{ "ACCEPT-CHARSET" T(N) },
+	{ "ALIGN"         T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COLS"          T(N) },
+	{ "DIR"           T(N) },
+	{ "DISABLED"      T(N) },
+	{ "ERROR"         T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NAME"          T(N) },
+	{ "NOTAB"         T(N) },
+	{ "ONBLUR"        T(N) },
+	{ "ONCHANGE"      T(N) },
+	{ "ONFOCUS"       T(N) },
+	{ "ONSELECT"      T(N) },
+	{ "ROWS"          T(N) },
+	{ "STYLE"         T(N) },
+	{ "TABINDEX"      T(N) },
+	{ "TITLE"         T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr tr_attr[] = {               /* TBODY attributes */
+	{ "ALIGN"         T(N) },
+	{ "CHAR"          T(N) },
+	{ "CHAROFF"       T(N) },
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "DIR"           T(N) },
+	{ "DP"            T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "NOWRAP"        T(N) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "VALIGN"        T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+static attr ul_attr[] = {               /* DIR attributes */
+	{ "CLASS"         T(c) },
+	{ "CLEAR"         T(N) },
+	{ "COMPACT"       T(N) },
+	{ "DINGBAT"       T(N) },
+	{ "DIR"           T(N) },
+	{ "ID"            T(i) },
+	{ "LANG"          T(N) },
+	{ "MD"            T(N) },
+	{ "PLAIN"         T(N) },
+	{ "SRC"           T(h) },
+	{ "STYLE"         T(N) },
+	{ "TITLE"         T(N) },
+	{ "TYPE"          T(N) },
+	{ "WRAP"          T(N) },
+	{ 0               T(N) }	/* Terminate list */
+};
+
+/* *INDENT-ON* */
+
+#undef N
+#undef i
+#undef h
+#undef c
+#undef x
+
+#undef T
+
+/* these definitions are used in the tags-tables */
+#undef P
+#undef P_
+#ifdef USE_COLOR_STYLE
+#define P_(x) x , (sizeof x) -1
+#define NULL_HTTag_ NULL, 0
+#else
+#define P_(x) x
+#define NULL_HTTag_ NULL
+#endif
+
+#ifdef EXP_JUSTIFY_ELTS
+#define P(x) P_(x), 1
+#define P0(x) P_(x), 0
+#define NULL_HTTag NULL_HTTag_,0
+#else
+#define P(x) P_(x)
+#define P0(x) P_(x)
+#define NULL_HTTag NULL_HTTag_
+#endif
+
+#endif /* once_HTMLDTD */
+/* *INDENT-OFF* */
+static const HTTag tags_table1[HTML_ALL_ELEMENTS] = {
+ { P("A"),         a_attr,         HTML_A_ATTRIBUTES,          SGML_MIXED,   T_A},
+ { P("ABBR"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_ABBR},
+ { P("ACRONYM"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_ACRONYM},
+ { P("ADDRESS"),   address_attr,   HTML_ADDRESS_ATTRIBUTES,    SGML_MIXED,   T_ADDRESS},
+ { P("APPLET"),    applet_attr,    HTML_APPLET_ATTRIBUTES,     SGML_MIXED,   T_APPLET},
+ { P("AREA"),      area_attr,      HTML_AREA_ATTRIBUTES,       SGML_EMPTY,   T_AREA},
+ { P("AU"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_AU},
+ { P("AUTHOR"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_AUTHOR},
+ { P("B"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_B},
+ { P0("BANNER"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BANNER},
+ { P("BASE"),      base_attr,      HTML_BASE_ATTRIBUTES,       SGML_EMPTY,   T_BASE},
+ { P("BASEFONT"),  font_attr,      HTML_FONT_ATTRIBUTES,       SGML_EMPTY,   T_BASEFONT},
+ { P("BDO"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BDO},
+ { P("BGSOUND"),   bgsound_attr,   HTML_BGSOUND_ATTRIBUTES,    SGML_EMPTY,   T_BGSOUND},
+ { P("BIG"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BIG},
+ { P("BLINK"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_BLINK},
+ { P("BLOCKQUOTE"),bq_attr,        HTML_BQ_ATTRIBUTES,         SGML_MIXED,   T_BLOCKQUOTE},
+ { P("BODY"),      body_attr,      HTML_BODY_ATTRIBUTES,       SGML_MIXED,   T_BODY},
+ { P("BODYTEXT"),  bodytext_attr,  HTML_BODYTEXT_ATTRIBUTES,   SGML_MIXED,   T_BODYTEXT},
+ { P("BQ"),        bq_attr,        HTML_BQ_ATTRIBUTES,         SGML_MIXED,   T_BQ},
+ { P("BR"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_BR},
+ { P("BUTTON"),    button_attr,    HTML_BUTTON_ATTRIBUTES,     SGML_MIXED,   T_BUTTON},
+ { P("CAPTION"),   caption_attr,   HTML_CAPTION_ATTRIBUTES,    SGML_MIXED,   T_CAPTION},
+ { P("CENTER"),    div_attr,       HTML_DIV_ATTRIBUTES,        SGML_MIXED,   T_CENTER},
+ { P("CITE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_CITE},
+ { P("CODE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_CODE},
+ { P("COL"),       col_attr,       HTML_COL_ATTRIBUTES,        SGML_EMPTY,   T_COL},
+ { P("COLGROUP"),  col_attr,       HTML_COL_ATTRIBUTES,        SGML_ELEMENT, T_COLGROUP},
+ { P("COMMENT"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_PCDATA,  T_COMMENT},
+ { P("CREDIT"),    credit_attr,    HTML_CREDIT_ATTRIBUTES,     SGML_MIXED,   T_CREDIT},
+ { P("DD"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DD},
+ { P("DEL"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DEL},
+ { P("DFN"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DFN},
+ { P("DIR"),       ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_DIR},
+ { P("DIV"),       div_attr,       HTML_DIV_ATTRIBUTES,        SGML_MIXED,   T_DIV},
+ { P("DL"),        dl_attr,        HTML_DL_ATTRIBUTES,         SGML_MIXED,   T_DL},
+ { P("DLC"),       dl_attr,        HTML_DL_ATTRIBUTES,         SGML_MIXED,   T_DLC},
+ { P("DT"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_DT},
+ { P("EM"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_EM},
+ { P("EMBED"),     embed_attr,     HTML_EMBED_ATTRIBUTES,      SGML_EMPTY,   T_EMBED},
+ { P("FIELDSET"),  fieldset_attr,  HTML_FIELDSET_ATTRIBUTES,   SGML_MIXED,   T_FIELDSET},
+ { P("FIG"),       fig_attr,       HTML_FIG_ATTRIBUTES,        SGML_MIXED,   T_FIG},
+ { P("FN"),        fn_attr,        HTML_FN_ATTRIBUTES,         SGML_MIXED,   T_FN},
+ { P("FONT"),      font_attr,      HTML_FONT_ATTRIBUTES,       SGML_MIXED,   T_FONT},
+ { P("FORM"),      form_attr,      HTML_FORM_ATTRIBUTES,       SGML_MIXED,   T_FORM},
+ { P("FRAME"),     frame_attr,     HTML_FRAME_ATTRIBUTES,      SGML_EMPTY,   T_FRAME},
+ { P("FRAMESET"),  frameset_attr,  HTML_FRAMESET_ATTRIBUTES,   SGML_ELEMENT, T_FRAMESET},
+ { P0("H1"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H1},
+ { P0("H2"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H2},
+ { P0("H3"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H3},
+ { P0("H4"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H4},
+ { P0("H5"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H5},
+ { P0("H6"),       h_attr,         HTML_H_ATTRIBUTES,          SGML_MIXED,   T_H6},
+ { P("HEAD"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_ELEMENT, T_HEAD},
+ { P("HR"),        hr_attr,        HTML_HR_ATTRIBUTES,         SGML_EMPTY,   T_HR},
+ { P("HTML"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_HTML},
+ { P("HY"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_HY},
+ { P("I"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_I},
+ { P("IFRAME"),    iframe_attr,    HTML_IFRAME_ATTRIBUTES,     SGML_MIXED,   T_IFRAME},
+ { P("IMG"),       img_attr,       HTML_IMG_ATTRIBUTES,        SGML_EMPTY,   T_IMG},
+ { P("INPUT"),     input_attr,     HTML_INPUT_ATTRIBUTES,      SGML_EMPTY,   T_INPUT},
+ { P("INS"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_INS},
+ { P("ISINDEX"),   isindex_attr,   HTML_ISINDEX_ATTRIBUTES,    SGML_EMPTY,   T_ISINDEX},
+ { P("KBD"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_KBD},
+ { P("KEYGEN"),    keygen_attr,    HTML_KEYGEN_ATTRIBUTES,     SGML_EMPTY,   T_KEYGEN},
+ { P("LABEL"),     label_attr,     HTML_LABEL_ATTRIBUTES,      SGML_MIXED,   T_LABEL},
+ { P("LEGEND"),    legend_attr,    HTML_LEGEND_ATTRIBUTES,     SGML_MIXED,   T_LEGEND},
+ { P("LH"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_LH},
+ { P("LI"),        li_attr,        HTML_LI_ATTRIBUTES,         SGML_MIXED,   T_LI},
+ { P("LINK"),      link_attr,      HTML_LINK_ATTRIBUTES,       SGML_EMPTY,   T_LINK},
+ { P("LISTING"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_LISTING},
+ { P("MAP"),       map_attr,       HTML_MAP_ATTRIBUTES,        SGML_ELEMENT, T_MAP},
+ { P("MARQUEE"),   gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_MARQUEE},
+ { P("MATH"),      math_attr,      HTML_MATH_ATTRIBUTES,       SGML_PCDATA,  T_MATH},
+ { P("MENU"),      ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_MENU},
+ { P("META"),      meta_attr,      HTML_META_ATTRIBUTES,       SGML_EMPTY,   T_META},
+ { P("NEXTID"),    nextid_attr,    HTML_NEXTID_ATTRIBUTES,     SGML_EMPTY,   T_NEXTID},
+ { P("NOFRAMES"),  gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_NOFRAMES},
+ { P("NOTE"),      note_attr,      HTML_NOTE_ATTRIBUTES,       SGML_MIXED,   T_NOTE},
+ { P("OBJECT"),    object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_LITTERAL,T_OBJECT},
+ { P("OL"),        ol_attr,        HTML_OL_ATTRIBUTES,         SGML_MIXED,   T_OL},
+ { P("OPTION"),    option_attr,    HTML_OPTION_ATTRIBUTES,     SGML_PCDATA,  T_OPTION},
+ { P("OVERLAY"),   overlay_attr,   HTML_OVERLAY_ATTRIBUTES,    SGML_PCDATA,  T_OVERLAY},
+ { P("P"),         p_attr,         HTML_P_ATTRIBUTES,          SGML_MIXED,   T_P},
+ { P("PARAM"),     param_attr,     HTML_PARAM_ATTRIBUTES,      SGML_EMPTY,   T_PARAM},
+ { P("PLAINTEXT"), gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_PLAINTEXT},
+ { P0("PRE"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_PRE},
+ { P("Q"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_Q},
+ { P("S"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_S},
+ { P("SAMP"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SAMP},
+ { P("SCRIPT"),    script_attr,    HTML_SCRIPT_ATTRIBUTES,     SGML_SCRIPT,  T_SCRIPT},
+ { P("SELECT"),    select_attr,    HTML_SELECT_ATTRIBUTES,     SGML_ELEMENT, T_SELECT},
+ { P("SHY"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_SHY},
+ { P("SMALL"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SMALL},
+ { P("SPAN"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SPAN},
+ { P("SPOT"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_SPOT},
+ { P("STRIKE"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_STRIKE},
+ { P("STRONG"),    gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_STRONG},
+ { P("STYLE"),     style_attr,     HTML_STYLE_ATTRIBUTES,      SGML_CDATA,   T_STYLE},
+ { P("SUB"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SUB},
+ { P("SUP"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_SUP},
+ { P("TAB"),       tab_attr,       HTML_TAB_ATTRIBUTES,        SGML_EMPTY,   T_TAB},
+ { P("TABLE"),     table_attr,     HTML_TABLE_ATTRIBUTES,      SGML_ELEMENT, T_TABLE},
+ { P("TBODY"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_ELEMENT, T_TBODY},
+ { P("TD"),        td_attr,        HTML_TD_ATTRIBUTES,         SGML_MIXED,   T_TD},
+ { P("TEXTAREA"),  textarea_attr,  HTML_TEXTAREA_ATTRIBUTES,   SGML_PCDATA,  T_TEXTAREA},
+ { P("TEXTFLOW"),  bodytext_attr,  HTML_BODYTEXT_ATTRIBUTES,   SGML_MIXED,   T_TEXTFLOW},
+ { P("TFOOT"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_ELEMENT, T_TFOOT},
+ { P("TH"),        td_attr,        HTML_TD_ATTRIBUTES,         SGML_MIXED,   T_TH},
+ { P("THEAD"),     tr_attr,        HTML_TR_ATTRIBUTES,         SGML_ELEMENT, T_THEAD},
+ { P("TITLE"),     gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_PCDATA,  T_TITLE},
+ { P("TR"),        tr_attr,        HTML_TR_ATTRIBUTES,         SGML_MIXED,   T_TR},
+ { P("TT"),        gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_TT},
+ { P("U"),         gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_U},
+ { P("UL"),        ul_attr,        HTML_UL_ATTRIBUTES,         SGML_MIXED,   T_UL},
+ { P("VAR"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_MIXED,   T_VAR},
+ { P("WBR"),       gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_EMPTY,   T_WBR},
+ { P0("XMP"),      gen_attr,       HTML_GEN_ATTRIBUTES,        SGML_LITTERAL,T_XMP},
+/* additional (alternative variants), not counted in HTML_ELEMENTS: */
+/* This one will be used as a temporary substitute within the parser when
+   it has been signalled to parse OBJECT content as MIXED. - kw */
+ { P("OBJECT"),    object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_MIXED,   T_OBJECT_PCDATA},
+};
+/* *INDENT-ON* */
+
+#endif /* src_HTMLDTD_H1 */