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.c17
-rw-r--r--WWW/Library/Implementation/HTMIME.c117
-rw-r--r--WWW/Library/Implementation/HTUtils.h10
-rw-r--r--WWW/Library/Implementation/SGML.c8
-rw-r--r--WWW/Library/Implementation/dtd_util.c15
-rw-r--r--WWW/Library/Implementation/makefile.in5
-rw-r--r--WWW/Library/Implementation/src0_HTMLDTD.h366
-rw-r--r--WWW/Library/Implementation/src1_HTMLDTD.h366
8 files changed, 633 insertions, 271 deletions
diff --git a/WWW/Library/Implementation/HTFormat.c b/WWW/Library/Implementation/HTFormat.c
index f7b4f24b..5818e8a6 100644
--- a/WWW/Library/Implementation/HTFormat.c
+++ b/WWW/Library/Implementation/HTFormat.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTFormat.c,v 1.62 2007/08/02 20:12:22 tom Exp $
+ * $LynxId: HTFormat.c,v 1.63 2008/09/10 23:22:59 tom Exp $
  *
  *		Manage different file formats			HTFormat.c
  *		=============================
@@ -101,6 +101,14 @@ void HTSetPresentation(const char *representation,
     if (pres == NULL)
 	outofmem(__FILE__, "HTSetPresentation");
 
+    CTRACE2(TRACE_CFG,
+	    (tfp,
+	     "HTSetPresentation rep=%s, command=%s, test=%s, qual=%f\n",
+	     NonNull(representation),
+	     NonNull(command),
+	     NonNull(testcommand),
+	     quality));
+
     pres->rep = HTAtom_for(representation);
     pres->rep_out = WWW_PRESENT;	/* Fixed for now ... :-) */
     pres->converter = HTSaveAndExecute;		/* Fixed for now ...     */
@@ -153,6 +161,13 @@ void HTSetConversion(const char *representation_in,
     if (pres == NULL)
 	outofmem(__FILE__, "HTSetConversion");
 
+    CTRACE2(TRACE_CFG,
+	    (tfp,
+	     "HTSetConversion rep_in=%s, rep_out=%s, qual=%f\n",
+	     NonNull(representation_in),
+	     NonNull(representation_out),
+	     quality));
+
     pres->rep = HTAtom_for(representation_in);
     pres->rep_out = HTAtom_for(representation_out);
     pres->converter = converter;
diff --git a/WWW/Library/Implementation/HTMIME.c b/WWW/Library/Implementation/HTMIME.c
index 9e6c03fd..df5115b6 100644
--- a/WWW/Library/Implementation/HTMIME.c
+++ b/WWW/Library/Implementation/HTMIME.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTMIME.c,v 1.62 2007/07/03 00:16:30 tom Exp $
+ * $LynxId: HTMIME.c,v 1.64 2008/09/17 00:04:44 tom Exp $
  *
  *			MIME Message Parse			HTMIME.c
  *			==================
@@ -37,6 +37,16 @@
 
 typedef enum {
     MIME_TRANSPARENT,		/* put straight through to target ASAP! */
+    /* states for "Transfer-Encoding: chunked" */
+    MIME_CHUNKED,
+    mcCHUNKED_COUNT_DIGIT,
+    mcCHUNKED_COUNT_CR,
+    mcCHUNKED_COUNT_LF,
+    mcCHUNKED_EXTENSION,
+    mcCHUNKED_DATA,
+    mcCHUNKED_DATA_CR,
+    mcCHUNKED_DATA_LF,
+    /* character state-machine */
     miBEGINNING_OF_LINE,	/* first character and not a continuation */
     miA,
     miACCEPT_RANGES,
@@ -138,8 +148,12 @@ struct _HTStream {
 
     char *refresh_url;		/* "Refresh:" URL */
 
-    HTFormat encoding;		/* Content-Transfer-Encoding */
+    HTFormat c_t_encoding;	/* Content-Transfer-Encoding */
     char *compression_encoding;
+
+    BOOL chunked_encoding;	/* Transfer-Encoding: chunked */
+    long chunked_size;		/* ...counter for "chunked" */
+
     HTFormat format;		/* Content-Type */
     HTStream *target;		/* While writing out */
     HTStreamClass targetClass;
@@ -471,10 +485,11 @@ static int pumpData(HTStream *me)
     if (me->target) {
 	me->targetClass = *me->target->isa;
 	/*
-	 * Check for encoding and select state from there, someday, but until
-	 * we have the relevant code, from now push straight through.  - FM
+	 * Pump rest of data right through, according to the transfer encoding.
 	 */
-	me->state = MIME_TRANSPARENT;	/* Pump rest of data right through */
+	me->state = (me->chunked_encoding
+		     ? MIME_CHUNKED
+		     : MIME_TRANSPARENT);
     } else {
 	me->state = MIME_IGNORE;	/* What else to do? */
     }
@@ -754,7 +769,7 @@ static int dispatchField(HTStream *me)
 	 * Force the Content-Transfer-Encoding value to all lower case.  - FM
 	 */
 	LYLowerCase(me->value);
-	me->encoding = HTAtom_for(me->value);
+	me->c_t_encoding = HTAtom_for(me->value);
 	break;
     case miCONTENT_TYPE:
 	HTMIME_TrimDoubleQuotes(me->value);
@@ -937,6 +952,8 @@ static int dispatchField(HTStream *me)
 	HTMIME_TrimDoubleQuotes(me->value);
 	CTRACE((tfp, "HTMIME: PICKED UP Transfer-Encoding: '%s'\n",
 		me->value));
+	if (!strcmp(me->value, "chunked"))
+	    me->chunked_encoding = YES;
 	break;
     case miUPGRADE:
 	HTMIME_TrimDoubleQuotes(me->value);
@@ -990,9 +1007,82 @@ static int dispatchField(HTStream *me)
 static void HTMIME_put_character(HTStream *me,
 				 char c)
 {
-    if (me->state == MIME_TRANSPARENT) {
-	(*me->targetClass.put_character) (me->target, c);	/* MUST BE FAST */
+    /* MUST BE FAST */
+    switch (me->state) {
+      begin_transparent:
+    case MIME_TRANSPARENT:
+	(*me->targetClass.put_character) (me->target, c);
 	return;
+
+	/* RFC-2616 describes chunked transfer coding */
+    case mcCHUNKED_DATA:
+	(*me->targetClass.put_character) (me->target, c);
+	me->chunked_size--;
+	if (me->chunked_size <= 0)
+	    me->state = mcCHUNKED_DATA_CR;
+	return;
+
+    case mcCHUNKED_DATA_CR:
+	me->state = mcCHUNKED_DATA_LF;
+	if (c == CR) {
+	    return;
+	}
+
+    case mcCHUNKED_DATA_LF:
+	me->state = MIME_CHUNKED;
+	if (c == LF) {
+	    return;
+	}
+
+	CTRACE((tfp, "HTIME_put_character expected LF in chunked data\n"));
+	me->state = MIME_TRANSPARENT;
+	goto begin_transparent;
+
+	/* FALLTHRU */
+      begin_chunked:
+    case MIME_CHUNKED:
+	me->chunked_size = 0;
+	me->state = mcCHUNKED_COUNT_DIGIT;
+
+	/* FALLTHRU */
+    case mcCHUNKED_COUNT_DIGIT:
+	if (isxdigit(UCH(c))) {
+	    me->chunked_size <<= 4;
+	    if (isdigit(UCH(c)))
+		me->chunked_size += UCH(c) - '0';
+	    else
+		me->chunked_size += TOUPPER(UCH(c)) - 'A' + 10;
+	    return;
+	}
+	if (c == ';')
+	    me->state = mcCHUNKED_EXTENSION;
+
+	/* FALLTHRU */
+    case mcCHUNKED_EXTENSION:
+	if (c != CR && c != LF) {
+	    return;
+	}
+	me->state = mcCHUNKED_COUNT_CR;
+
+	/* FALLTHRU */
+    case mcCHUNKED_COUNT_CR:
+	me->state = mcCHUNKED_COUNT_LF;
+	if (c == CR) {
+	    return;
+	}
+
+	/* FALLTHRU */
+    case mcCHUNKED_COUNT_LF:
+	me->state = ((me->chunked_size != 0)
+		     ? mcCHUNKED_DATA
+		     : MIME_CHUNKED);
+	if (c == LF) {
+	    return;
+	}
+	goto begin_chunked;
+
+    default:
+	break;
     }
 
     /*
@@ -1025,7 +1115,14 @@ static void HTMIME_put_character(HTStream *me,
 	return;
 
     case MIME_TRANSPARENT:	/* Not reached see above */
-	(*me->targetClass.put_character) (me->target, c);
+    case MIME_CHUNKED:
+    case mcCHUNKED_COUNT_DIGIT:
+    case mcCHUNKED_COUNT_CR:
+    case mcCHUNKED_COUNT_LF:
+    case mcCHUNKED_EXTENSION:
+    case mcCHUNKED_DATA:
+    case mcCHUNKED_DATA_CR:
+    case mcCHUNKED_DATA_LF:
 	return;
 
     case MIME_NET_ASCII:
@@ -2049,7 +2146,7 @@ HTStream *HTMIMEConvert(HTPresentation *pres,
     me->set_cookie = NULL;	/* Not set yet */
     me->set_cookie2 = NULL;	/* Not set yet */
     me->refresh_url = NULL;	/* Not set yet */
-    me->encoding = 0;		/* Not set yet */
+    me->c_t_encoding = 0;	/* Not set yet */
     me->compression_encoding = NULL;	/* Not set yet */
     me->net_ascii = NO;		/* Local character set */
     HTAnchor_setUCInfoStage(me->anchor, current_char_set,
diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h
index eb794f59..6ea1f42c 100644
--- a/WWW/Library/Implementation/HTUtils.h
+++ b/WWW/Library/Implementation/HTUtils.h
@@ -1,5 +1,5 @@
 /*
- * $LynxId: HTUtils.h,v 1.85 2008/07/06 12:55:40 tom Exp $
+ * $LynxId: HTUtils.h,v 1.86 2008/09/17 00:52:06 tom Exp $
  *
  * Utility macros for the W3 code library
  * MACROS FOR GENERAL USE
@@ -546,11 +546,11 @@ extern int WWW_TraceMask;
  * 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
+#if (SIZEOF_OFF_T == 8) && defined(PRId64)
 #define PRI_off_t	PRId64
 #define SCN_off_t	SCNd64
 #define CAST_off_t(n)	(int64_t)(n)
-#else
+#elif defined(PRId32)
 #define PRI_off_t	PRId32
 #define SCN_off_t	SCNd32
 #define CAST_off_t(n)	(int32_t)(n)
@@ -567,11 +567,11 @@ extern int WWW_TraceMask;
  * 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
+#if (SIZEOF_TIME_T == 8) && defined(PRId64)
 #define PRI_time_t	PRId64
 #define SCN_time_t	SCNd64
 #define CAST_time_t(n)	(int64_t)(n)
-#else
+#elif defined(PRId32)
 #define PRI_time_t	PRId32
 #define SCN_time_t	SCNd32
 #define CAST_time_t(n)	(int32_t)(n)
diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c
index 51e7895b..accc23a2 100644
--- a/WWW/Library/Implementation/SGML.c
+++ b/WWW/Library/Implementation/SGML.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: SGML.c,v 1.114 2008/09/10 12:56:58 tom Exp $
+ * $LynxId: SGML.c,v 1.115 2008/09/17 00:45:07 tom Exp $
  *
  *			General SGML Parser code		SGML.c
  *			========================
@@ -876,12 +876,12 @@ static void handle_processing_instruction(HTStream *context)
 
     CTRACE((tfp, "SGML Processing instruction:\n<%s>\n", s));
 
-    if (!strncmp(s, "?xml", 4)) {
+    if (!strncmp(s, "?xml ", 5)) {
 	int flag = context->T.decode_utf8;
 
 	context->strict_xml = TRUE;
 	/*
-	 * Switch to UTF-8 unless the encoding is explicitly not "utf-8".
+	 * Switch to UTF-8 if the encoding is explicitly "utf-8".
 	 */
 	if (!flag) {
 	    char *t = strstr(s, "encoding=");
@@ -891,8 +891,6 @@ static void handle_processing_instruction(HTStream *context)
 		if (*t == '"')
 		    ++t;
 		flag = !strncmp(t, "utf-8", 5);
-	    } else {
-		flag = TRUE;
 	    }
 	    if (flag) {
 		CTRACE((tfp, "...Use UTF-8 for XML\n"));
diff --git a/WWW/Library/Implementation/dtd_util.c b/WWW/Library/Implementation/dtd_util.c
index 268d19ed..c50ac740 100644
--- a/WWW/Library/Implementation/dtd_util.c
+++ b/WWW/Library/Implementation/dtd_util.c
@@ -1,5 +1,5 @@
 /*
- * $LynxId: dtd_util.c,v 1.28 2008/08/18 23:42:12 tom Exp $
+ * $LynxId: dtd_util.c,v 1.31 2008/09/16 23:43:49 tom Exp $
  *
  * Given a SGML_dtd structure, write a corresponding flat file, or "C" source.
  * Given the flat-file, write the "C" source.
@@ -297,7 +297,7 @@ static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which)
     if (!tag->can_justify)
 	P_macro = "P0";
 #endif
-    PrintF(output, 19, " { %s(\"%s\"),", P_macro, tag->name);
+    PrintF(output, 19, " { %s(%s),", P_macro, tag->name);
     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));
@@ -349,6 +349,7 @@ static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version)
     }
     NOTE("/* *INDENT-ON* */");
     NOTE("");
+    NOTE("/* justification-flags */");
     NOTE("#undef N");
     NOTE("#undef i");
     NOTE("#undef h");
@@ -356,16 +357,20 @@ static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version)
     NOTE("#undef x");
     NOTE("");
     NOTE("#undef T");
-
+    NOTE("");
+    NOTE("/* tag-names */");
+    for (j = 0; j <= dtd->number_of_tags; ++j) {
+	fprintf(output, "#undef %s\n", DEF_name(dtd, j));
+    }
     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 P_(x) #x, (sizeof #x) -1");
     NOTE("#define NULL_HTTag_ NULL, 0");
     NOTE("#else");
-    NOTE("#define P_(x) x");
+    NOTE("#define P_(x) #x");
     NOTE("#define NULL_HTTag_ NULL");
     NOTE("#endif");
     NOTE("");
diff --git a/WWW/Library/Implementation/makefile.in b/WWW/Library/Implementation/makefile.in
index 01e74137..dc8d55d7 100644
--- a/WWW/Library/Implementation/makefile.in
+++ b/WWW/Library/Implementation/makefile.in
@@ -1,4 +1,4 @@
-# $LynxId: makefile.in,v 1.18 2008/07/08 00:06:40 tom Exp $
+# $LynxId: makefile.in,v 1.19 2008/09/17 01:14:02 tom Exp $
 # Make WWW under unix for a.n.other unix system (bsd)
 # Use this as a template
 
@@ -179,6 +179,9 @@ clean :
 	rm -f dtd_util$x
 	rm -f $(LOB)/*$o
 
+distclean : clean
+	@echo made $@
+
 tags:
 	ctags *.[ch]
 
diff --git a/WWW/Library/Implementation/src0_HTMLDTD.h b/WWW/Library/Implementation/src0_HTMLDTD.h
index 7ab6d505..19431ef7 100644
--- a/WWW/Library/Implementation/src0_HTMLDTD.h
+++ b/WWW/Library/Implementation/src0_HTMLDTD.h
@@ -1,4 +1,4 @@
-/* $LynxId: src0_HTMLDTD.h,v 1.6 2008/07/15 22:43:49 tom Exp $ */
+/* $LynxId: src0_HTMLDTD.h,v 1.9 2008/09/16 23:47:45 tom Exp $ */
 #ifndef src_HTMLDTD_H0
 #define src_HTMLDTD_H0 1
 
@@ -1034,6 +1034,7 @@ static const attr ul_attr[] = {         /* DIR attributes */
 
 /* *INDENT-ON* */
 
+/* justification-flags */
 #undef N
 #undef i
 #undef h
@@ -1042,14 +1043,135 @@ static const attr ul_attr[] = {         /* DIR attributes */
 
 #undef T
 
+/* tag-names */
+#undef A
+#undef ABBR
+#undef ACRONYM
+#undef ADDRESS
+#undef APPLET
+#undef AREA
+#undef AU
+#undef AUTHOR
+#undef B
+#undef BANNER
+#undef BASE
+#undef BASEFONT
+#undef BDO
+#undef BGSOUND
+#undef BIG
+#undef BLINK
+#undef BLOCKQUOTE
+#undef BODY
+#undef BODYTEXT
+#undef BQ
+#undef BR
+#undef BUTTON
+#undef CAPTION
+#undef CENTER
+#undef CITE
+#undef CODE
+#undef COL
+#undef COLGROUP
+#undef COMMENT
+#undef CREDIT
+#undef DD
+#undef DEL
+#undef DFN
+#undef DIR
+#undef DIV
+#undef DL
+#undef DLC
+#undef DT
+#undef EM
+#undef EMBED
+#undef FIELDSET
+#undef FIG
+#undef FN
+#undef FONT
+#undef FORM
+#undef FRAME
+#undef FRAMESET
+#undef H1
+#undef H2
+#undef H3
+#undef H4
+#undef H5
+#undef H6
+#undef HEAD
+#undef HR
+#undef HTML
+#undef HY
+#undef I
+#undef IFRAME
+#undef IMG
+#undef INPUT
+#undef INS
+#undef ISINDEX
+#undef KBD
+#undef KEYGEN
+#undef LABEL
+#undef LEGEND
+#undef LH
+#undef LI
+#undef LINK
+#undef LISTING
+#undef MAP
+#undef MARQUEE
+#undef MATH
+#undef MENU
+#undef META
+#undef NEXTID
+#undef NOFRAMES
+#undef NOTE
+#undef OBJECT
+#undef OL
+#undef OPTION
+#undef OVERLAY
+#undef P
+#undef PARAM
+#undef PLAINTEXT
+#undef PRE
+#undef Q
+#undef S
+#undef SAMP
+#undef SCRIPT
+#undef SELECT
+#undef SHY
+#undef SMALL
+#undef SPAN
+#undef SPOT
+#undef STRIKE
+#undef STRONG
+#undef STYLE
+#undef SUB
+#undef SUP
+#undef TAB
+#undef TABLE
+#undef TBODY
+#undef TD
+#undef TEXTAREA
+#undef TEXTFLOW
+#undef TFOOT
+#undef TH
+#undef THEAD
+#undef TITLE
+#undef TR
+#undef TT
+#undef U
+#undef UL
+#undef VAR
+#undef WBR
+#undef XMP
+#undef OBJECT_PCDATA
+
 /* these definitions are used in the tags-tables */
 #undef P
 #undef P_
 #ifdef USE_COLOR_STYLE
-#define P_(x) x , (sizeof x) -1
+#define P_(x) #x, (sizeof #x) -1
 #define NULL_HTTag_ NULL, 0
 #else
-#define P_(x) x
+#define P_(x) #x
 #define NULL_HTTag_ NULL
 #endif
 
@@ -1066,128 +1188,128 @@ static const attr ul_attr[] = {         /* DIR attributes */
 #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},
+ { 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},
+ { P(OBJECT),      object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_MIXED,   T_OBJECT_PCDATA},
 };
 /* *INDENT-ON* */
 
diff --git a/WWW/Library/Implementation/src1_HTMLDTD.h b/WWW/Library/Implementation/src1_HTMLDTD.h
index 647f766f..6d65a670 100644
--- a/WWW/Library/Implementation/src1_HTMLDTD.h
+++ b/WWW/Library/Implementation/src1_HTMLDTD.h
@@ -1,4 +1,4 @@
-/* $LynxId: src1_HTMLDTD.h,v 1.6 2008/07/15 22:43:49 tom Exp $ */
+/* $LynxId: src1_HTMLDTD.h,v 1.9 2008/09/16 23:47:45 tom Exp $ */
 #ifndef src_HTMLDTD_H1
 #define src_HTMLDTD_H1 1
 
@@ -1034,6 +1034,7 @@ static const attr ul_attr[] = {         /* DIR attributes */
 
 /* *INDENT-ON* */
 
+/* justification-flags */
 #undef N
 #undef i
 #undef h
@@ -1042,14 +1043,135 @@ static const attr ul_attr[] = {         /* DIR attributes */
 
 #undef T
 
+/* tag-names */
+#undef A
+#undef ABBR
+#undef ACRONYM
+#undef ADDRESS
+#undef APPLET
+#undef AREA
+#undef AU
+#undef AUTHOR
+#undef B
+#undef BANNER
+#undef BASE
+#undef BASEFONT
+#undef BDO
+#undef BGSOUND
+#undef BIG
+#undef BLINK
+#undef BLOCKQUOTE
+#undef BODY
+#undef BODYTEXT
+#undef BQ
+#undef BR
+#undef BUTTON
+#undef CAPTION
+#undef CENTER
+#undef CITE
+#undef CODE
+#undef COL
+#undef COLGROUP
+#undef COMMENT
+#undef CREDIT
+#undef DD
+#undef DEL
+#undef DFN
+#undef DIR
+#undef DIV
+#undef DL
+#undef DLC
+#undef DT
+#undef EM
+#undef EMBED
+#undef FIELDSET
+#undef FIG
+#undef FN
+#undef FONT
+#undef FORM
+#undef FRAME
+#undef FRAMESET
+#undef H1
+#undef H2
+#undef H3
+#undef H4
+#undef H5
+#undef H6
+#undef HEAD
+#undef HR
+#undef HTML
+#undef HY
+#undef I
+#undef IFRAME
+#undef IMG
+#undef INPUT
+#undef INS
+#undef ISINDEX
+#undef KBD
+#undef KEYGEN
+#undef LABEL
+#undef LEGEND
+#undef LH
+#undef LI
+#undef LINK
+#undef LISTING
+#undef MAP
+#undef MARQUEE
+#undef MATH
+#undef MENU
+#undef META
+#undef NEXTID
+#undef NOFRAMES
+#undef NOTE
+#undef OBJECT
+#undef OL
+#undef OPTION
+#undef OVERLAY
+#undef P
+#undef PARAM
+#undef PLAINTEXT
+#undef PRE
+#undef Q
+#undef S
+#undef SAMP
+#undef SCRIPT
+#undef SELECT
+#undef SHY
+#undef SMALL
+#undef SPAN
+#undef SPOT
+#undef STRIKE
+#undef STRONG
+#undef STYLE
+#undef SUB
+#undef SUP
+#undef TAB
+#undef TABLE
+#undef TBODY
+#undef TD
+#undef TEXTAREA
+#undef TEXTFLOW
+#undef TFOOT
+#undef TH
+#undef THEAD
+#undef TITLE
+#undef TR
+#undef TT
+#undef U
+#undef UL
+#undef VAR
+#undef WBR
+#undef XMP
+#undef OBJECT_PCDATA
+
 /* these definitions are used in the tags-tables */
 #undef P
 #undef P_
 #ifdef USE_COLOR_STYLE
-#define P_(x) x , (sizeof x) -1
+#define P_(x) #x, (sizeof #x) -1
 #define NULL_HTTag_ NULL, 0
 #else
-#define P_(x) x
+#define P_(x) #x
 #define NULL_HTTag_ NULL
 #endif
 
@@ -1066,128 +1188,128 @@ static const attr ul_attr[] = {         /* DIR attributes */
 #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},
+ { 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},
+ { P(OBJECT),      object_attr,    HTML_OBJECT_ATTRIBUTES,     SGML_MIXED,   T_OBJECT_PCDATA},
 };
 /* *INDENT-ON* */