diff options
Diffstat (limited to 'WWW/Library/Implementation')
-rw-r--r-- | WWW/Library/Implementation/HTAnchor.c | 8 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTFTP.c | 4 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTFile.c | 8 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTList.c | 9 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTMLDTD.c | 4 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTString.c | 10 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTTCP.c | 8 | ||||
-rw-r--r-- | WWW/Library/Implementation/HTUtils.h | 14 | ||||
-rw-r--r-- | WWW/Library/Implementation/SGML.c | 98 | ||||
-rw-r--r-- | WWW/Library/Implementation/SGML.h | 42 | ||||
-rw-r--r-- | WWW/Library/Implementation/dtd_util.c | 358 | ||||
-rw-r--r-- | WWW/Library/Implementation/hdr_HTMLDTD.h | 566 | ||||
-rw-r--r-- | WWW/Library/Implementation/src0_HTMLDTD.h | 1565 | ||||
-rw-r--r-- | WWW/Library/Implementation/src1_HTMLDTD.h | 1565 |
14 files changed, 3491 insertions, 768 deletions
diff --git a/WWW/Library/Implementation/HTAnchor.c b/WWW/Library/Implementation/HTAnchor.c index 6bb592c8..b0e6c771 100644 --- a/WWW/Library/Implementation/HTAnchor.c +++ b/WWW/Library/Implementation/HTAnchor.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTAnchor.c,v 1.59 2007/07/02 23:42:54 tom Exp $ + * $LynxId: HTAnchor.c,v 1.60 2008/09/18 21:35:24 tom Exp $ * * Hypertext "Anchor" Object HTAnchor.c * ========================== @@ -362,11 +362,11 @@ HTChildAnchor *HTAnchor_findChildAndLink(HTParentAnchor *parent, /* May not be 0 if (child->dest) { /* DUPLICATE_ANCHOR_NAME_WORKAROUND - kw */ CTRACE((tfp, "*** Duplicate ChildAnchor %p named `%s'", - child, tag)); + (void *) child, tag)); if ((HTAnchor *) dest != child->dest || ltype != child->type) { CTRACE((tfp, ", different dest %p or type, creating unnamed child\n", - child->dest)); + (void *) child->dest)); child = HTAnchor_addChild(parent); } } @@ -515,7 +515,7 @@ static BOOL HTAnchor_link(HTChildAnchor *child, if (!(child && destination)) return (NO); /* Can't link to/from non-existing anchor */ - CTRACE((tfp, "Linking child %p to anchor %p\n", child, destination)); + CTRACE((tfp, "Linking child %p to anchor %p\n", (void *) child, (void *) destination)); if (child->dest) { CTRACE((tfp, "*** child anchor already has destination, exiting!\n")); return (NO); diff --git a/WWW/Library/Implementation/HTFTP.c b/WWW/Library/Implementation/HTFTP.c index 003d61c0..1ca9f47a 100644 --- a/WWW/Library/Implementation/HTFTP.c +++ b/WWW/Library/Implementation/HTFTP.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTFTP.c,v 1.80 2007/08/02 19:55:46 tom Exp $ + * $LynxId: HTFTP.c,v 1.81 2008/09/18 21:34:25 tom Exp $ * * File Transfer Protocol (FTP) Client * for a WorldWideWeb browser @@ -882,7 +882,7 @@ static int get_connection(const char *arg, } CTRACE((tfp, "FTP connected, socket %d control %p\n", - con->socket, con)); + con->socket, (void *) con)); control = con; /* Current control connection */ /* Initialise buffering for control connection */ diff --git a/WWW/Library/Implementation/HTFile.c b/WWW/Library/Implementation/HTFile.c index aaefab80..bfd79410 100644 --- a/WWW/Library/Implementation/HTFile.c +++ b/WWW/Library/Implementation/HTFile.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTFile.c,v 1.104 2007/08/02 19:46:01 tom Exp $ + * $LynxId: HTFile.c,v 1.105 2008/09/18 21:34:25 tom Exp $ * * File Access HTFile.c * =========== @@ -2234,7 +2234,7 @@ static int decompressAndParse(HTParentAnchor *anchor, FREE(ultrixname); } #endif /* VMS */ - CTRACE((tfp, "HTLoadFile: Opening `%s' gives %p\n", localname, fp)); + CTRACE((tfp, "HTLoadFile: Opening `%s' gives %p\n", localname, (void *) fp)); if (fp) { /* Good! */ if (HTEditable(localname)) { HTAtom *put = HTAtom_for("PUT"); @@ -2271,7 +2271,7 @@ static int decompressAndParse(HTParentAnchor *anchor, fp = 0; CTRACE((tfp, "HTLoadFile: zzopen of `%s' gives %p\n", - localname, zzfp)); + localname, (void *) zzfp)); internal_decompress = cftDeflate; } else #endif /* USE_ZLIB */ @@ -2318,7 +2318,7 @@ static int decompressAndParse(HTParentAnchor *anchor, fp = 0; CTRACE((tfp, "HTLoadFile: zzopen of `%s' gives %p\n", - localname, zzfp)); + localname, (void *) zzfp)); internal_decompress = cftDeflate; } #else /* USE_ZLIB */ diff --git a/WWW/Library/Implementation/HTList.c b/WWW/Library/Implementation/HTList.c index ccb02b19..6b4cc421 100644 --- a/WWW/Library/Implementation/HTList.c +++ b/WWW/Library/Implementation/HTList.c @@ -1,4 +1,7 @@ -/* A small List class HTList.c +/* + * $LynxId: HTList.c,v 1.17 2008/09/18 21:36:59 tom Exp $ + * + * A small List class HTList.c * ================== * * A list is represented as a sequence of linked nodes of type HTList. @@ -70,7 +73,7 @@ HTList *HTList_appendList(HTList *start, if (!start) { CTRACE((tfp, "HTList: Trying to append list %p to a nonexisting list\n", - tail)); + (void *) tail)); return NULL; } if (!(tail && tail->next)) @@ -107,7 +110,7 @@ void HTList_linkObject(HTList *me, void *newObject, */ CTRACE((tfp, "*** HTList: Refuse linking already linked obj ")); CTRACE((tfp, "%p, node %p, list %p\n", - newObject, newNode, me)); + (void *) newObject, (void *) newNode, (void *) me)); } } else { diff --git a/WWW/Library/Implementation/HTMLDTD.c b/WWW/Library/Implementation/HTMLDTD.c index c2c30d6e..78b29c25 100644 --- a/WWW/Library/Implementation/HTMLDTD.c +++ b/WWW/Library/Implementation/HTMLDTD.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTMLDTD.c,v 1.55 2008/07/07 00:04:46 tom Exp $ + * $LynxId: HTMLDTD.c,v 1.56 2008/09/18 22:29:24 tom Exp $ * * Our Static DTD for HTML * ----------------------- @@ -243,7 +243,7 @@ void HTSwitchDTD(int new_flag) HTTag HTTag_unrecognized = -{NULL_HTTag, NULL, 0, SGML_EMPTY, T__UNREC_}; +{NULL_HTTag, NULL, 0, 0, SGML_EMPTY, T__UNREC_}; /* * Utility Routine: Useful for people building HTML objects. diff --git a/WWW/Library/Implementation/HTString.c b/WWW/Library/Implementation/HTString.c index 7c119a37..298cc679 100644 --- a/WWW/Library/Implementation/HTString.c +++ b/WWW/Library/Implementation/HTString.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTString.c,v 1.52 2008/02/18 00:04:16 tom Exp $ + * $LynxId: HTString.c,v 1.54 2008/09/20 14:32:29 tom Exp $ * * Case-independent string comparison HTString.c * @@ -1165,7 +1165,9 @@ void HTSABCopy(bstring **dest, const char *src, bstring *t; unsigned need = len + 1; - CTRACE2(TRACE_BSTRING, (tfp, "HTSABCopy(%p, %p, %d)\n", dest, src, len)); + CTRACE2(TRACE_BSTRING, + (tfp, "HTSABCopy(%p, %p, %d)\n", + (void *) dest, (const void *) src, len)); HTSABFree(dest); if (src) { if (TRACE_BSTRING) { @@ -1206,7 +1208,9 @@ void HTSABCat(bstring **dest, const char *src, { bstring *t = *dest; - CTRACE2(TRACE_BSTRING, (tfp, "HTSABCat(%p, %p, %d)\n", dest, src, len)); + CTRACE2(TRACE_BSTRING, + (tfp, "HTSABCat(%p, %p, %d)\n", + (void *) dest, (const void *) src, len)); if (src) { unsigned need = len + 1; diff --git a/WWW/Library/Implementation/HTTCP.c b/WWW/Library/Implementation/HTTCP.c index 05d41354..ee7c52b5 100644 --- a/WWW/Library/Implementation/HTTCP.c +++ b/WWW/Library/Implementation/HTTCP.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTTCP.c,v 1.95 2008/07/06 12:55:40 tom Exp $ + * $LynxId: HTTCP.c,v 1.97 2008/09/20 14:32:29 tom Exp $ * * Generic Communication Code HTTCP.c * ========================== @@ -380,7 +380,7 @@ static void dump_hostent(const char *msgprefix, int i; char **pcnt; - CTRACE((tfp, "%s: %p ", msgprefix, phost)); + CTRACE((tfp, "%s: %p ", msgprefix, (const void *) phost)); if (phost) { CTRACE((tfp, "{ h_name = %p", phost->h_name)); if (phost->h_name) { @@ -388,7 +388,7 @@ static void dump_hostent(const char *msgprefix, } else { CTRACE((tfp, ",")); } - CTRACE((tfp, "\n\t h_aliases = %p", phost->h_aliases)); + CTRACE((tfp, "\n\t h_aliases = %p", (void *) phost->h_aliases)); if (phost->h_aliases) { CTRACE((tfp, " {")); for (pcnt = phost->h_aliases; *pcnt; pcnt++) { @@ -403,7 +403,7 @@ static void dump_hostent(const char *msgprefix, } CTRACE((tfp, " h_addrtype = %d,", phost->h_addrtype)); CTRACE((tfp, " h_length = %d,\n\t", phost->h_length)); - CTRACE((tfp, " h_addr_list = %p", phost->h_addr_list)); + CTRACE((tfp, " h_addr_list = %p", (void *) phost->h_addr_list)); if (phost->h_addr_list) { CTRACE((tfp, " {")); for (pcnt = phost->h_addr_list; *pcnt; pcnt++) { diff --git a/WWW/Library/Implementation/HTUtils.h b/WWW/Library/Implementation/HTUtils.h index 6ea1f42c..cdc3442d 100644 --- a/WWW/Library/Implementation/HTUtils.h +++ b/WWW/Library/Implementation/HTUtils.h @@ -1,5 +1,5 @@ /* - * $LynxId: HTUtils.h,v 1.86 2008/09/17 00:52:06 tom Exp $ + * $LynxId: HTUtils.h,v 1.87 2008/09/17 16:31:34 tom Exp $ * * Utility macros for the W3 code library * MACROS FOR GENERAL USE @@ -558,10 +558,16 @@ extern int WWW_TraceMask; #endif #ifndef PRI_off_t +#if (SIZEOF_OFF_T == 8) +#define PRI_off_t "lld" +#define SCN_off_t "lld" +#define CAST_off_t(n) (long long)(n) +#else #define PRI_off_t "ld" #define SCN_off_t "ld" #define CAST_off_t(n) (long)(n) #endif +#endif /* * Printing-format for "time_t", as well as cast needed to fit. @@ -579,10 +585,16 @@ extern int WWW_TraceMask; #endif #ifndef PRI_time_t +#if (SIZEOF_TIME_T == 8) +#define PRI_time_t "lld" +#define SCN_time_t "lld" +#define CAST_time_t(n) (long long)(n) +#else #define PRI_time_t "ld" #define SCN_time_t "ld" #define CAST_time_t(n) (long)(n) #endif +#endif /* * Printing-format for "UCode_t". diff --git a/WWW/Library/Implementation/SGML.c b/WWW/Library/Implementation/SGML.c index accc23a2..fe8f9ecd 100644 --- a/WWW/Library/Implementation/SGML.c +++ b/WWW/Library/Implementation/SGML.c @@ -1,5 +1,5 @@ /* - * $LynxId: SGML.c,v 1.115 2008/09/17 00:45:07 tom Exp $ + * $LynxId: SGML.c,v 1.117 2008/09/21 18:34:39 tom Exp $ * * General SGML Parser code SGML.c * ======================== @@ -1140,7 +1140,7 @@ static void end_element(HTStream *context, HTTag * old_tag) } e = NORMAL_TAGNUM(TAGNUM_OF_TAGP(t)); - CTRACE2(TRACE_SGML, (tfp, "tagnum(%p) = %d\n", t, (int) e)); + CTRACE2(TRACE_SGML, (tfp, "tagnum(%p) = %d\n", (void *) t, (int) e)); #ifdef USE_PRETTYSRC if (!psrc_view) /* Don't actually pass call on if viewing psrc - kw */ #endif @@ -1563,6 +1563,36 @@ static void discard_empty(HTStream *context) /* do not call end_element() if start_element() was not called */ } +#ifdef USE_PRETTYSRC +static BOOL end_if_prettysrc(HTStream *context, HTChunk *string, int end_ch) +{ + BOOL result = psrc_view; + + if (psrc_view) { + if (attr_is_name) { + HTStartAnchor(context->target, string->data, NULL); + (*context->actions->end_element) (context->target, + HTML_A, + &context->include); + } else if (attr_is_href) { + PSRCSTART(href); + HTStartAnchor(context->target, NULL, string->data); + } + PUTS_TR(string->data); + if (attr_is_href) { + (*context->actions->end_element) (context->target, + HTML_A, + &context->include); + PSRCSTOP(href); + } + if (end_ch) + PUTC(end_ch); + PSRCSTOP(attrval); + } + return result; +} +#endif + static void SGML_character(HTStream *context, char c_in) { const SGML_dtd *dtd = context->dtd; @@ -3711,25 +3741,7 @@ static void SGML_character(HTStream *context, char c_in) if (WHITE(c) || (c == '>')) { /* End of word */ HTChunkTerminate(string); #ifdef USE_PRETTYSRC - if (psrc_view) { - if (attr_is_name) { - HTStartAnchor(context->target, string->data, NULL); - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - } else if (attr_is_href) { - PSRCSTART(href); - HTStartAnchor(context->target, NULL, string->data); - } - PUTS_TR(string->data); - if (attr_is_href) { - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - PSRCSTOP(href); - } - PSRCSTOP(attrval); - } else + if (!end_if_prettysrc(context, string, 0)) #endif { #ifdef CJK_EX /* Quick hack. - JH7AYN */ @@ -3791,27 +3803,7 @@ static void SGML_character(HTStream *context, char c_in) if (c == '\'') { /* End of attribute value */ HTChunkTerminate(string); #ifdef USE_PRETTYSRC - if (psrc_view) { - /*PSRCSTART(attrval); */ - if (attr_is_name) { - HTStartAnchor(context->target, string->data, NULL); - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - } else if (attr_is_href) { - PSRCSTART(href); - HTStartAnchor(context->target, NULL, string->data); - } - PUTS_TR(string->data); - if (attr_is_href) { - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - PSRCSTOP(href); - } - PUTC('\''); - PSRCSTOP(attrval); - } else + if (!end_if_prettysrc(context, string, '\'')) #endif handle_attribute_value(context, string->data); string->size = 0; @@ -3853,28 +3845,8 @@ static void SGML_character(HTStream *context, char c_in) c == '>')) { /* as a co-terminator of dquoted and tag */ HTChunkTerminate(string); #ifdef USE_PRETTYSRC - if (psrc_view) { - if (attr_is_name) { - HTStartAnchor(context->target, string->data, NULL); - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - } else if (attr_is_href) { - PSRCSTART(href); - HTStartAnchor(context->target, NULL, string->data); - } - PUTS_TR(string->data); - if (attr_is_href) { - (*context->actions->end_element) (context->target, - HTML_A, - &context->include); - PSRCSTOP(href); - } - PUTC(c); - PSRCSTOP(attrval); - } else + if (!end_if_prettysrc(context, string, c)) #endif - handle_attribute_value(context, string->data); string->size = 0; context->state = S_tag_gap; diff --git a/WWW/Library/Implementation/SGML.h b/WWW/Library/Implementation/SGML.h index b7a5ecc4..04a2fc40 100644 --- a/WWW/Library/Implementation/SGML.h +++ b/WWW/Library/Implementation/SGML.h @@ -1,18 +1,20 @@ -/* SGML parse and stream definition for libwww - SGML AND STRUCTURED STREAMS - - The SGML parser is a state machine. It is called for every character - of the input stream. The DTD data structure contains pointers - to functions which are called to implement the actual effect of the - text read. When these functions are called, the attribute structures pointed to by the - DTD are valid, and the function is passed a pointer to the current tag structure, and an - "element stack" which represents the state of nesting within SGML elements. - - The following aspects are from Dan Connolly's suggestions: Binary search, - Structured object scheme basically, SGML content enum type. - - (c) Copyright CERN 1991 - See Copyright.html - +/* + * $LynxId: SGML.h,v 1.40 2008/09/18 23:36:15 tom Exp $ + * SGML parse and stream definition for libwww + * SGML AND STRUCTURED STREAMS + * + * The SGML parser is a state machine. It is called for every character + * of the input stream. The DTD data structure contains pointers + * to functions which are called to implement the actual effect of the + * text read. When these functions are called, the attribute structures pointed to by the + * DTD are valid, and the function is passed a pointer to the current tag structure, and an + * "element stack" which represents the state of nesting within SGML elements. + * + * The following aspects are from Dan Connolly's suggestions: Binary search, + * Structured object scheme basically, SGML content enum type. + * + * (c) Copyright CERN 1991 - See Copyright.html + * */ #ifndef SGML_H #define SGML_H @@ -55,6 +57,13 @@ extern "C" { #endif } attr; + typedef const attr *AttrList; + + typedef struct { + const char *name; + AttrList list; + } AttrType; + typedef int TagClass; /* textflow */ @@ -135,8 +144,9 @@ extern "C" { #ifdef EXP_JUSTIFY_ELTS BOOL can_justify; /* justification allowed? */ #endif - const attr *attributes; /* The list of acceptable attributes */ + AttrList attributes; /* The list of acceptable attributes */ int number_of_attributes; /* Number of possible attributes */ + const AttrType *attr_types; SGMLContent contents; /* End only on end tag @@ */ TagClass tagclass; TagClass contains; /* which classes of elements this one can contain directly */ diff --git a/WWW/Library/Implementation/dtd_util.c b/WWW/Library/Implementation/dtd_util.c index c50ac740..1870b2b2 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.31 2008/09/16 23:43:49 tom Exp $ + * $LynxId: dtd_util.c,v 1.53 2008/09/20 13:45:30 tom Exp $ * * Given a SGML_dtd structure, write a corresponding flat file, or "C" source. * Given the flat-file, write the "C" source. @@ -28,6 +28,68 @@ FILE *TraceFP(void) #define GETOPT "chlo:ts" #define NOTE(message) fprintf(output, message "\n"); +/* *INDENT-OFF* */ +#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 + +#define ATTR_TYPE(name) { #name, name##_attr_list } + +static const attr core_attr_list[] = { + { "CLASS" T(c) }, + { "ID" T(i) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr i18n_attr_list[] = { + { "DIR" T(N) }, + { "LANG" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr events_attr_list[] = { + { "ONCLICK" T(N) }, + { "ONDBLCLICK" T(N) }, + { "ONKEYDOWN" T(N) }, + { "ONKEYPRESS" T(N) }, + { "ONKEYUP" T(N) }, + { "ONMOUSEDOWN" T(N) }, + { "ONMOUSEMOVE" T(N) }, + { "ONMOUSEOUT" T(N) }, + { "ONMOUSEOVER" T(N) }, + { "ONMOUSEUP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr align_attr_list[] = { + { "ALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr cellalign_attr_list[] = { + { "ALIGN" T(N) }, + { "CHAR" T(N) }, + { "CHAROFF" T(N) }, + { "VALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr bgcolor_attr_list[] = { + { "BGCOLOR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +#undef T +/* *INDENT-ON* */ static void failed(const char *s) { @@ -170,17 +232,6 @@ static const char *NameOfAttrs(const SGML_dtd * dtd, int which) return result; } -static const char *XXX_attr(const SGML_dtd * dtd, int which) -{ - static char result[80]; - int i; - - strcpy(result, NameOfAttrs(dtd, which)); - for (i = 0; result[i]; ++i) - result[i] = tolower(result[i]); - return result; -} - static const char *DEF_name(const SGML_dtd * dtd, int which) { const char *result = dtd->tags[which].name; @@ -205,7 +256,109 @@ static int compare_attr(const void *a, const void *b) return strcmp(p->name, q->name); } -static AttrInfo *sorted_attrs(const SGML_dtd * dtd, unsigned *countp, int lower) +static int len_AttrList(AttrList data) +{ + int result = 0; + + for (result = 0; data[result].name != 0; ++result) { + ; + } + return result; +} + +static void sort_uniq_AttrList(attr *data) +{ + unsigned have = len_AttrList(data); + unsigned j, k; + + qsort(data, have, sizeof(*data), compare_attr); + /* + * Eliminate duplicates + */ + for (j = k = 0; j < have; ++j) { + for (k = j; data[k].name; ++k) { + if (data[k + 1].name == 0) + break; + if (strcmp(data[j].name, data[k + 1].name)) { + break; + } + } + data[j] = data[k]; + } + memset(data + j, 0, sizeof(data[0])); +} + +static attr *copy_AttrList(AttrList data) +{ + unsigned need = len_AttrList(data); + unsigned n; + + attr *result = (attr *) calloc(need + 1, sizeof(attr)); + + for (n = 0; n < need; ++n) + result[n] = data[n]; + sort_uniq_AttrList(result); + return result; +} + +static attr *merge_AttrLists(const AttrType * data) +{ + const AttrType *at; + attr *result = 0; + unsigned need = 1; + unsigned have = 0; + unsigned j; + + for (at = data; at->name; ++at) { + need += len_AttrList(at->list); + } + result = (attr *) calloc(need + 1, sizeof(attr)); + for (at = data; at->name; ++at) { + if (!strcmp(at->name, "events")) { + ; /* lynx does not use events */ + } else { + for (j = 0; at->list[j].name; ++j) { + result[have++] = at->list[j]; + } + } + } + sort_uniq_AttrList(result); + return result; +} + +static int clean_AttrList(attr * target, AttrList source) +{ + int result = 0; + int j, k; + + for (j = 0; target[j].name != 0; ++j) { + for (k = 0; source[k].name != 0; ++k) { + if (!strcmp(target[j].name, source[k].name)) { + k = j--; + for (;;) { + target[k] = target[k + 1]; + if (target[k++].name == 0) + break; + } + ++result; + break; + } + } + } + return result; +} + +/* + * Actually COUNT the number of attributes, to make it possible to edit a + * attribute-table in src0_HTMLDTD.h and have all of the files updated by + * just doing a "make sources". + */ +static int AttrCount(HTTag * tag) +{ + return len_AttrList(tag->attributes); +} + +static AttrInfo *sorted_attrs(const SGML_dtd * dtd, unsigned *countp) { int j; @@ -215,12 +368,9 @@ static AttrInfo *sorted_attrs(const SGML_dtd * dtd, unsigned *countp, int lower) /* 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].name = NameOfAttrs(dtd, j); data[count].attrs = dtd->tags[j].attributes; - data[count].count = dtd->tags[j].number_of_attributes; + data[count].count = AttrCount(&(dtd->tags[j])); data[count].which = j; ++count; } @@ -250,42 +400,84 @@ static void dump_src_HTTag_Defines(FILE *output, const SGML_dtd * dtd, int which tag->flags); } +static void dump_AttrItem(FILE *output, const attr * data) +{ + char buffer[BUFSIZ]; + char pretty = 'N'; + + sprintf(buffer, "\"%s\"", data->name); +#ifdef USE_PRETTYSRC + switch (data->type) { + case HTMLA_NORMAL: + pretty = 'N'; + break; + case HTMLA_ANAME: + pretty = 'i'; + break; + case HTMLA_HREF: + pretty = 'h'; + break; + case HTMLA_CLASS: + pretty = 'c'; + break; + case HTMLA_AUXCLASS: + pretty = 'x'; + break; + } +#endif + fprintf(output, "\t{ %-15s T(%c) },\n", buffer, pretty); +} + +static void dump_AttrItem0(FILE *output) +{ + fprintf(output, "\t{ 0 T(N) }\t/* Terminate list */\n"); +} + +static void dump_src_AttrType(FILE *output, const char *name, AttrList data, const char **from) +{ + int n; + + fprintf(output, "static const attr %s_attr_list[] = {\n", name); + if (data != 0) { + for (n = 0; data[n].name != 0; ++n) { + dump_AttrItem(output, data + n); + } + } + fprintf(output, "\t{ 0 T(N) } /* Terminate list */\n"); + fprintf(output, "};\n"); + NOTE(""); + fprintf(output, "static const AttrType %s_attr_type[] = {\n", name); + if (from != 0) { + while (*from != 0) { + fprintf(output, "\t{ ATTR_TYPE(%s) },\n", *from); + ++from; + } + } else { + fprintf(output, "\t{ ATTR_TYPE(%s) },\n", name); + } + fprintf(output, "\t{ 0, 0 },\n"); + fprintf(output, "};\n"); + NOTE(""); +} + static void dump_src_HTTag_Attrs(FILE *output, const SGML_dtd * dtd, int which) { HTTag *tag = &(dtd->tags[which]); + attr *list = merge_AttrLists(tag->attr_types); char buffer[BUFSIZ]; - char pretty = 'N'; int n; + int limit = len_AttrList(list); - sprintf(buffer, "static const attr %s_attr[] = {", XXX_attr(dtd, which)); + sprintf(buffer, "static const attr %s_attr[] = {", NameOfAttrs(dtd, which)); fprintf(output, "%-40s/* %s attributes */\n", buffer, tag->name); - for (n = 0; n < tag->number_of_attributes; ++n) { - sprintf(buffer, "\"%s\"", tag->attributes[n].name); -#ifdef USE_PRETTYSRC - switch (tag->attributes[n].type) { - case HTMLA_NORMAL: - pretty = 'N'; - break; - case HTMLA_ANAME: - pretty = 'i'; - break; - case HTMLA_HREF: - pretty = 'h'; - break; - case HTMLA_CLASS: - pretty = 'c'; - break; - case HTMLA_AUXCLASS: - pretty = 'x'; - break; - } -#endif - fprintf(output, "\t{ %-15s T(%c) },\n", buffer, pretty); + for (n = 0; n < limit; ++n) { + dump_AttrItem(output, list + n); } - fprintf(output, "\t{ 0 T(N) }\t/* Terminate list */\n"); + dump_AttrItem0(output); fprintf(output, "};\n"); NOTE(""); + free(list); } static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which) @@ -298,8 +490,7 @@ static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which) P_macro = "P0"; #endif 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, 24, "ATTR_DATA(%s), ", NameOfAttrs(dtd, which)); PrintF(output, 14, "%s,", SGMLContent2s(tag->contents)); fprintf(output, "T_%s", DEF_name(dtd, which)); fprintf(output, "},\n"); @@ -307,11 +498,23 @@ static void dump_src_HTTag(FILE *output, const SGML_dtd * dtd, int which) static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version) { + static AttrType generic_types[] = + { + ATTR_TYPE(core), + ATTR_TYPE(i18n), + ATTR_TYPE(events), + ATTR_TYPE(align), + ATTR_TYPE(cellalign), + ATTR_TYPE(bgcolor), + {0, 0} + }; + AttrType *gt; + const char *marker = "src_HTMLDTD_H"; int j; unsigned count = 0; - AttrInfo *data = sorted_attrs(dtd, &count, 1); + AttrInfo *data = sorted_attrs(dtd, &count); fprintf(output, "/* %cLynxId%c */\n", '$', '$'); fprintf(output, "#ifndef %s%d\n", marker, dtd_version); @@ -344,6 +547,58 @@ static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version) NOTE("#endif"); NOTE("/* *INDENT-OFF* */"); NOTE(""); + NOTE("#define ATTR_TYPE(name) #name, name##_attr_list"); + NOTE(""); + NOTE("/* generic attributes, used in different tags */"); + for (gt = generic_types; gt->name != 0; ++gt) { + dump_src_AttrType(output, gt->name, gt->list, 0); + } + NOTE(""); + NOTE("/* tables defining attributes per-tag in terms of generic attributes (editable) */"); + for (j = 0; j < (int) count; ++j) { + int which = data[j].which; + + if (first_attrs(dtd, which)) { + HTTag *tag = &(dtd->tags[which]); + const AttrType *types = tag->attr_types; + const char *name = NameOfAttrs(dtd, which); + attr *list = 0; + const char *from_attr[10]; + int from_size = 0; + + while (types->name != 0) { + from_attr[from_size++] = types->name; + if (!strcmp(types->name, name)) { + list = copy_AttrList(types->list); + for (gt = generic_types; gt->name != 0; ++gt) { + if (clean_AttrList(list, gt->list)) { + int k; + int found = 0; + + for (k = 0; k < from_size; ++k) { + if (!strcmp(from_attr[k], gt->name)) { + found = 1; + break; + } + } + if (!found) + from_attr[from_size++] = gt->name; + break; + } + } + } + ++types; + } + from_attr[from_size] = 0; + + if (list != 0) { + dump_src_AttrType(output, name, list, from_attr); + free(list); + } + } + } + NOTE(""); + NOTE("/* attribute lists for the runtime (generated by dtd_util) */"); for (j = 0; j < (int) count; ++j) { dump_src_HTTag_Attrs(output, dtd, data[j].which); } @@ -384,6 +639,8 @@ static void dump_source(FILE *output, const SGML_dtd * dtd, int dtd_version) NOTE("#define NULL_HTTag NULL_HTTag_"); NOTE("#endif"); NOTE(""); + NOTE("#define ATTR_DATA(name) name##_attr, HTML_##name##_ATTRIBUTES, name##_attr_type"); + NOTE(""); NOTE("#endif /* once_HTMLDTD */"); NOTE("/* *INDENT-OFF* */"); @@ -430,7 +687,7 @@ static void dump_header(FILE *output, const SGML_dtd * dtd) int j; unsigned count = 0; - AttrInfo *data = sorted_attrs(dtd, &count, 0); + AttrInfo *data = sorted_attrs(dtd, &count); fprintf(output, "/* %cLynxId%c */\n", '$', '$'); fprintf(output, "#ifndef %s\n", marker); @@ -495,7 +752,10 @@ static void dump_header(FILE *output, const SGML_dtd * dtd) fprintf(output, "#endif\t\t\t\t/* %s */\n", marker); } -static void dump_flat_attrs(FILE *output, const char *name, const attr * attributes, int number_of_attributes) +static void dump_flat_attrs(FILE *output, + const char *name, + const attr * attributes, + int number_of_attributes) { int n; @@ -575,7 +835,7 @@ static void dump_flat_HTTag(FILE *output, unsigned n, HTTag * tag) #ifdef EXP_JUSTIFY_ELTS fprintf(output, "\t\t%s\n", tag->can_justify ? "justify" : "nojustify"); #endif - dump_flat_attrs(output, "attributes", tag->attributes, tag->number_of_attributes); + dump_flat_attrs(output, "attributes", tag->attributes, AttrCount(tag)); dump_flat_SGMLContent(output, "contents", tag->contents); dump_flat_TagClass(output, "tagclass", tag->tagclass); dump_flat_TagClass(output, "contains", tag->contains); diff --git a/WWW/Library/Implementation/hdr_HTMLDTD.h b/WWW/Library/Implementation/hdr_HTMLDTD.h index d0850283..2dee030e 100644 --- a/WWW/Library/Implementation/hdr_HTMLDTD.h +++ b/WWW/Library/Implementation/hdr_HTMLDTD.h @@ -1,4 +1,4 @@ -/* $LynxId: hdr_HTMLDTD.h,v 1.2 2008/07/06 18:16:18 tom Exp $ */ +/* $LynxId: hdr_HTMLDTD.h,v 1.19 2008/09/20 14:25:27 tom Exp $ */ #ifndef hdr_HTMLDTD_H #define hdr_HTMLDTD_H 1 @@ -168,15 +168,15 @@ extern "C" { #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_HREFLANG 7 +#define HTML_A_ID 8 +#define HTML_A_ISMAP 9 +#define HTML_A_LANG 10 +#define HTML_A_MD 11 +#define HTML_A_NAME 12 +#define HTML_A_NOTAB 13 +#define HTML_A_ONBLUR 14 +#define HTML_A_ONFOCUS 15 #define HTML_A_REL 16 #define HTML_A_REV 17 #define HTML_A_SHAPE 18 @@ -217,19 +217,19 @@ extern "C" { #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_ACCESSKEY 0 +#define HTML_AREA_ALT 1 +#define HTML_AREA_CLASS 2 +#define HTML_AREA_CLEAR 3 +#define HTML_AREA_COORDS 4 +#define HTML_AREA_DIR 5 +#define HTML_AREA_HREF 6 +#define HTML_AREA_ID 7 +#define HTML_AREA_LANG 8 +#define HTML_AREA_NOHREF 9 +#define HTML_AREA_NOTAB 10 +#define HTML_AREA_ONBLUR 11 +#define HTML_AREA_ONFOCUS 12 #define HTML_AREA_SHAPE 13 #define HTML_AREA_STYLE 14 #define HTML_AREA_TABINDEX 15 @@ -237,10 +237,13 @@ extern "C" { #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_BASE_CLASS 0 +#define HTML_BASE_HREF 1 +#define HTML_BASE_ID 2 +#define HTML_BASE_STYLE 3 +#define HTML_BASE_TARGET 4 +#define HTML_BASE_TITLE 5 +#define HTML_BASE_ATTRIBUTES 6 #define HTML_BGSOUND_CLASS 0 #define HTML_BGSOUND_CLEAR 1 @@ -297,21 +300,22 @@ extern "C" { #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_BUTTON_ACCESSKEY 0 +#define HTML_BUTTON_CLASS 1 +#define HTML_BUTTON_CLEAR 2 +#define HTML_BUTTON_DIR 3 +#define HTML_BUTTON_DISABLED 4 +#define HTML_BUTTON_ID 5 +#define HTML_BUTTON_LANG 6 +#define HTML_BUTTON_NAME 7 +#define HTML_BUTTON_ONBLUR 8 +#define HTML_BUTTON_ONFOCUS 9 +#define HTML_BUTTON_STYLE 10 +#define HTML_BUTTON_TABINDEX 11 +#define HTML_BUTTON_TITLE 12 +#define HTML_BUTTON_TYPE 13 +#define HTML_BUTTON_VALUE 14 +#define HTML_BUTTON_ATTRIBUTES 15 #define HTML_CAPTION_ACCESSKEY 0 #define HTML_CAPTION_ALIGN 1 @@ -348,6 +352,16 @@ extern "C" { #define HTML_CREDIT_TITLE 6 #define HTML_CREDIT_ATTRIBUTES 7 +#define HTML_DEL_CITE 0 +#define HTML_DEL_CLASS 1 +#define HTML_DEL_DATETIME 2 +#define HTML_DEL_DIR 3 +#define HTML_DEL_ID 4 +#define HTML_DEL_LANG 5 +#define HTML_DEL_STYLE 6 +#define HTML_DEL_TITLE 7 +#define HTML_DEL_ATTRIBUTES 8 + #define HTML_DIV_ALIGN 0 #define HTML_DIV_CLASS 1 #define HTML_DIV_CLEAR 2 @@ -437,38 +451,48 @@ extern "C" { #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_FONT_STYLE 9 +#define HTML_FONT_TITLE 10 +#define HTML_FONT_ATTRIBUTES 11 + +#define HTML_FORM_ACCEPT 0 +#define HTML_FORM_ACCEPT_CHARSET 1 +#define HTML_FORM_ACTION 2 +#define HTML_FORM_CLASS 3 +#define HTML_FORM_CLEAR 4 +#define HTML_FORM_DIR 5 +#define HTML_FORM_ENCTYPE 6 +#define HTML_FORM_ID 7 +#define HTML_FORM_LANG 8 +#define HTML_FORM_METHOD 9 +#define HTML_FORM_ONRESET 10 +#define HTML_FORM_ONSUBMIT 11 +#define HTML_FORM_SCRIPT 12 +#define HTML_FORM_STYLE 13 +#define HTML_FORM_SUBJECT 14 +#define HTML_FORM_TARGET 15 +#define HTML_FORM_TITLE 16 +#define HTML_FORM_ATTRIBUTES 17 + +#define HTML_FRAME_CLASS 0 +#define HTML_FRAME_FRAMEBORDER 1 +#define HTML_FRAME_ID 2 +#define HTML_FRAME_LONGDESC 3 +#define HTML_FRAME_MARGINHEIGHT 4 +#define HTML_FRAME_MARGINWIDTH 5 +#define HTML_FRAME_NAME 6 +#define HTML_FRAME_NORESIZE 7 +#define HTML_FRAME_SCROLLING 8 +#define HTML_FRAME_SRC 9 +#define HTML_FRAME_STYLE 10 +#define HTML_FRAME_TITLE 11 +#define HTML_FRAME_ATTRIBUTES 12 #define HTML_FRAMESET_COLS 0 -#define HTML_FRAMESET_ROWS 1 -#define HTML_FRAMESET_ATTRIBUTES 2 +#define HTML_FRAMESET_ONLOAD 1 +#define HTML_FRAMESET_ONUNLOAD 2 +#define HTML_FRAMESET_ROWS 3 +#define HTML_FRAMESET_ATTRIBUTES 4 #define HTML_GEN_CLASS 0 #define HTML_GEN_CLEAR 1 @@ -500,28 +524,31 @@ extern "C" { #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_HR_LANG 5 +#define HTML_HR_MD 6 +#define HTML_HR_NOSHADE 7 +#define HTML_HR_SIZE 8 +#define HTML_HR_SRC 9 +#define HTML_HR_STYLE 10 +#define HTML_HR_TITLE 11 +#define HTML_HR_WIDTH 12 +#define HTML_HR_ATTRIBUTES 13 #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_IFRAME_CLASS 1 +#define HTML_IFRAME_FRAMEBORDER 2 +#define HTML_IFRAME_HEIGHT 3 +#define HTML_IFRAME_ID 4 +#define HTML_IFRAME_LONGDESC 5 +#define HTML_IFRAME_MARGINHEIGHT 6 +#define HTML_IFRAME_MARGINWIDTH 7 +#define HTML_IFRAME_NAME 8 +#define HTML_IFRAME_SCROLLING 9 +#define HTML_IFRAME_SRC 10 +#define HTML_IFRAME_STYLE 11 +#define HTML_IFRAME_TITLE 12 +#define HTML_IFRAME_WIDTH 13 +#define HTML_IFRAME_ATTRIBUTES 14 #define HTML_IMG_ALIGN 0 #define HTML_IMG_ALT 1 @@ -530,62 +557,70 @@ extern "C" { #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_IMG_HSPACE 7 +#define HTML_IMG_ID 8 +#define HTML_IMG_ISMAP 9 +#define HTML_IMG_ISOBJECT 10 +#define HTML_IMG_LANG 11 +#define HTML_IMG_LONGDESC 12 +#define HTML_IMG_MD 13 +#define HTML_IMG_NAME 14 +#define HTML_IMG_SRC 15 +#define HTML_IMG_STYLE 16 +#define HTML_IMG_TITLE 17 +#define HTML_IMG_UNITS 18 +#define HTML_IMG_USEMAP 19 +#define HTML_IMG_VSPACE 20 +#define HTML_IMG_WIDTH 21 +#define HTML_IMG_ATTRIBUTES 22 #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_INPUT_ACCESSKEY 2 +#define HTML_INPUT_ALIGN 3 +#define HTML_INPUT_ALT 4 +#define HTML_INPUT_CHECKED 5 +#define HTML_INPUT_CLASS 6 +#define HTML_INPUT_CLEAR 7 +#define HTML_INPUT_DIR 8 +#define HTML_INPUT_DISABLED 9 +#define HTML_INPUT_ERROR 10 +#define HTML_INPUT_HEIGHT 11 +#define HTML_INPUT_ID 12 +#define HTML_INPUT_ISMAP 13 +#define HTML_INPUT_LANG 14 +#define HTML_INPUT_MAX 15 +#define HTML_INPUT_MAXLENGTH 16 +#define HTML_INPUT_MD 17 +#define HTML_INPUT_MIN 18 +#define HTML_INPUT_NAME 19 +#define HTML_INPUT_NOTAB 20 +#define HTML_INPUT_ONBLUR 21 +#define HTML_INPUT_ONCHANGE 22 +#define HTML_INPUT_ONFOCUS 23 +#define HTML_INPUT_ONSELECT 24 +#define HTML_INPUT_READONLY 25 +#define HTML_INPUT_SIZE 26 +#define HTML_INPUT_SRC 27 +#define HTML_INPUT_STYLE 28 +#define HTML_INPUT_TABINDEX 29 +#define HTML_INPUT_TITLE 30 +#define HTML_INPUT_TYPE 31 +#define HTML_INPUT_USEMAP 32 +#define HTML_INPUT_VALUE 33 +#define HTML_INPUT_WIDTH 34 +#define HTML_INPUT_ATTRIBUTES 35 #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_ISINDEX_CLASS 1 +#define HTML_ISINDEX_DIR 2 +#define HTML_ISINDEX_HREF 3 +#define HTML_ISINDEX_ID 4 +#define HTML_ISINDEX_LANG 5 +#define HTML_ISINDEX_PROMPT 6 +#define HTML_ISINDEX_STYLE 7 +#define HTML_ISINDEX_TITLE 8 +#define HTML_ISINDEX_ATTRIBUTES 9 #define HTML_KEYGEN_CHALLENGE 0 #define HTML_KEYGEN_CLASS 1 @@ -604,10 +639,11 @@ extern "C" { #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_LABEL_ONBLUR 7 +#define HTML_LABEL_ONFOCUS 8 +#define HTML_LABEL_STYLE 9 +#define HTML_LABEL_TITLE 10 +#define HTML_LABEL_ATTRIBUTES 11 #define HTML_LEGEND_ACCESSKEY 0 #define HTML_LEGEND_ALIGN 1 @@ -637,16 +673,19 @@ extern "C" { #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_LINK_DIR 2 +#define HTML_LINK_HREF 3 +#define HTML_LINK_HREFLANG 4 +#define HTML_LINK_ID 5 +#define HTML_LINK_LANG 6 +#define HTML_LINK_MEDIA 7 +#define HTML_LINK_REL 8 +#define HTML_LINK_REV 9 +#define HTML_LINK_STYLE 10 +#define HTML_LINK_TARGET 11 +#define HTML_LINK_TITLE 12 +#define HTML_LINK_TYPE 13 +#define HTML_LINK_ATTRIBUTES 14 #define HTML_MAP_CLASS 0 #define HTML_MAP_CLEAR 1 @@ -671,7 +710,8 @@ extern "C" { #define HTML_META_CONTENT 0 #define HTML_META_HTTP_EQUIV 1 #define HTML_META_NAME 2 -#define HTML_META_ATTRIBUTES 3 +#define HTML_META_SCHEME 3 +#define HTML_META_ATTRIBUTES 4 #define HTML_NEXTID_N 0 #define HTML_NEXTID_ATTRIBUTES 1 @@ -689,31 +729,32 @@ extern "C" { #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_OBJECT_ARCHIVE 1 +#define HTML_OBJECT_BORDER 2 +#define HTML_OBJECT_CLASS 3 +#define HTML_OBJECT_CLASSID 4 +#define HTML_OBJECT_CODEBASE 5 +#define HTML_OBJECT_CODETYPE 6 +#define HTML_OBJECT_DATA 7 +#define HTML_OBJECT_DECLARE 8 +#define HTML_OBJECT_DIR 9 +#define HTML_OBJECT_HEIGHT 10 +#define HTML_OBJECT_HSPACE 11 +#define HTML_OBJECT_ID 12 +#define HTML_OBJECT_ISMAP 13 +#define HTML_OBJECT_LANG 14 +#define HTML_OBJECT_NAME 15 +#define HTML_OBJECT_NOTAB 16 +#define HTML_OBJECT_SHAPES 17 +#define HTML_OBJECT_STANDBY 18 +#define HTML_OBJECT_STYLE 19 +#define HTML_OBJECT_TABINDEX 20 +#define HTML_OBJECT_TITLE 21 +#define HTML_OBJECT_TYPE 22 +#define HTML_OBJECT_USEMAP 23 +#define HTML_OBJECT_VSPACE 24 +#define HTML_OBJECT_WIDTH 25 +#define HTML_OBJECT_ATTRIBUTES 26 #define HTML_OL_CLASS 0 #define HTML_OL_CLEAR 1 @@ -735,13 +776,14 @@ extern "C" { #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_OPTION_LABEL 6 +#define HTML_OPTION_LANG 7 +#define HTML_OPTION_SELECTED 8 +#define HTML_OPTION_SHAPE 9 +#define HTML_OPTION_STYLE 10 +#define HTML_OPTION_TITLE 11 +#define HTML_OPTION_VALUE 12 +#define HTML_OPTION_ATTRIBUTES 13 #define HTML_OVERLAY_CLASS 0 #define HTML_OVERLAY_HEIGHT 1 @@ -788,21 +830,33 @@ extern "C" { #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_Q_CITE 0 +#define HTML_Q_CLASS 1 +#define HTML_Q_CLEAR 2 +#define HTML_Q_DIR 3 +#define HTML_Q_ID 4 +#define HTML_Q_LANG 5 +#define HTML_Q_STYLE 6 +#define HTML_Q_TITLE 7 +#define HTML_Q_ATTRIBUTES 8 + +#define HTML_SCRIPT_CHARSET 0 +#define HTML_SCRIPT_CLASS 1 +#define HTML_SCRIPT_CLEAR 2 +#define HTML_SCRIPT_DEFER 3 +#define HTML_SCRIPT_DIR 4 +#define HTML_SCRIPT_EVENT 5 +#define HTML_SCRIPT_FOR 6 +#define HTML_SCRIPT_ID 7 +#define HTML_SCRIPT_LANG 8 +#define HTML_SCRIPT_LANGUAGE 9 +#define HTML_SCRIPT_NAME 10 +#define HTML_SCRIPT_SCRIPTENGINE 11 +#define HTML_SCRIPT_SRC 12 +#define HTML_SCRIPT_STYLE 13 +#define HTML_SCRIPT_TITLE 14 +#define HTML_SCRIPT_TYPE 15 +#define HTML_SCRIPT_ATTRIBUTES 16 #define HTML_SELECT_ALIGN 0 #define HTML_SELECT_CLASS 1 @@ -828,11 +882,16 @@ extern "C" { #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_STYLE_CLASS 0 +#define HTML_STYLE_DIR 1 +#define HTML_STYLE_ID 2 +#define HTML_STYLE_LANG 3 +#define HTML_STYLE_MEDIA 4 +#define HTML_STYLE_NOTATION 5 +#define HTML_STYLE_STYLE 6 +#define HTML_STYLE_TITLE 7 +#define HTML_STYLE_TYPE 8 +#define HTML_STYLE_ATTRIBUTES 9 #define HTML_TAB_ALIGN 0 #define HTML_TAB_CLASS 1 @@ -871,49 +930,54 @@ extern "C" { #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_TD_ABBR 0 +#define HTML_TD_ALIGN 1 +#define HTML_TD_AXES 2 +#define HTML_TD_AXIS 3 +#define HTML_TD_BACKGROUND 4 +#define HTML_TD_CHAR 5 +#define HTML_TD_CHAROFF 6 +#define HTML_TD_CLASS 7 +#define HTML_TD_CLEAR 8 +#define HTML_TD_COLSPAN 9 +#define HTML_TD_DIR 10 +#define HTML_TD_DP 11 +#define HTML_TD_HEADERS 12 +#define HTML_TD_HEIGHT 13 +#define HTML_TD_ID 14 +#define HTML_TD_LANG 15 +#define HTML_TD_NOWRAP 16 +#define HTML_TD_ROWSPAN 17 +#define HTML_TD_SCOPE 18 +#define HTML_TD_STYLE 19 +#define HTML_TD_TITLE 20 +#define HTML_TD_VALIGN 21 +#define HTML_TD_WIDTH 22 +#define HTML_TD_ATTRIBUTES 23 #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_TEXTAREA_ACCESSKEY 1 +#define HTML_TEXTAREA_ALIGN 2 +#define HTML_TEXTAREA_CLASS 3 +#define HTML_TEXTAREA_CLEAR 4 +#define HTML_TEXTAREA_COLS 5 +#define HTML_TEXTAREA_DIR 6 +#define HTML_TEXTAREA_DISABLED 7 +#define HTML_TEXTAREA_ERROR 8 +#define HTML_TEXTAREA_ID 9 +#define HTML_TEXTAREA_LANG 10 +#define HTML_TEXTAREA_NAME 11 +#define HTML_TEXTAREA_NOTAB 12 +#define HTML_TEXTAREA_ONBLUR 13 +#define HTML_TEXTAREA_ONCHANGE 14 +#define HTML_TEXTAREA_ONFOCUS 15 +#define HTML_TEXTAREA_ONSELECT 16 +#define HTML_TEXTAREA_READONLY 17 +#define HTML_TEXTAREA_ROWS 18 +#define HTML_TEXTAREA_STYLE 19 +#define HTML_TEXTAREA_TABINDEX 20 +#define HTML_TEXTAREA_TITLE 21 +#define HTML_TEXTAREA_ATTRIBUTES 22 #define HTML_TR_ALIGN 0 #define HTML_TR_CHAR 1 diff --git a/WWW/Library/Implementation/src0_HTMLDTD.h b/WWW/Library/Implementation/src0_HTMLDTD.h index 19431ef7..86e0da38 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.9 2008/09/16 23:47:45 tom Exp $ */ +/* $LynxId: src0_HTMLDTD.h,v 1.39 2008/09/20 14:25:27 tom Exp $ */ #ifndef src_HTMLDTD_H0 #define src_HTMLDTD_H0 1 @@ -137,7 +137,1136 @@ #endif /* *INDENT-OFF* */ -static const attr a_attr[] = { /* A attributes */ +#define ATTR_TYPE(name) #name, name##_attr_list + +/* generic attributes, used in different tags */ +static const attr core_attr_list[] = { + { "CLASS" T(c) }, + { "ID" T(i) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType core_attr_type[] = { + { ATTR_TYPE(core) }, + { 0, 0 }, +}; + +static const attr i18n_attr_list[] = { + { "DIR" T(N) }, + { "LANG" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType i18n_attr_type[] = { + { ATTR_TYPE(i18n) }, + { 0, 0 }, +}; + +static const attr events_attr_list[] = { + { "ONCLICK" T(N) }, + { "ONDBLCLICK" T(N) }, + { "ONKEYDOWN" T(N) }, + { "ONKEYPRESS" T(N) }, + { "ONKEYUP" T(N) }, + { "ONMOUSEDOWN" T(N) }, + { "ONMOUSEMOVE" T(N) }, + { "ONMOUSEOUT" T(N) }, + { "ONMOUSEOVER" T(N) }, + { "ONMOUSEUP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType events_attr_type[] = { + { ATTR_TYPE(events) }, + { 0, 0 }, +}; + +static const attr align_attr_list[] = { + { "ALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType align_attr_type[] = { + { ATTR_TYPE(align) }, + { 0, 0 }, +}; + +static const attr cellalign_attr_list[] = { + { "ALIGN" T(N) }, + { "CHAR" T(N) }, + { "CHAROFF" T(N) }, + { "VALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType cellalign_attr_type[] = { + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr bgcolor_attr_list[] = { + { "BGCOLOR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType bgcolor_attr_type[] = { + { ATTR_TYPE(bgcolor) }, + { 0, 0 }, +}; + + +/* tables defining attributes per-tag in terms of generic attributes (editable) */ +static const attr A_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CHARSET" T(N) }, + { "CLEAR" T(N) }, + { "COORDS" T(N) }, + { "HREF" T(h) }, + { "HREFLANG" T(N) }, + { "ISMAP" T(N) }, + { "MD" T(N) }, + { "NAME" T(i) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "REL" T(N) }, + { "REV" T(N) }, + { "SHAPE" T(N) }, + { "TABINDEX" T(N) }, + { "TARGET" T(N) }, + { "TYPE" T(N) }, + { "URN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType A_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(A) }, + { 0, 0 }, +}; + +static const attr ADDRESS_attr_list[] = { + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType ADDRESS_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(ADDRESS) }, + { 0, 0 }, +}; + +static const attr APPLET_attr_list[] = { + { "ALT" T(N) }, + { "CLEAR" T(N) }, + { "CODE" T(N) }, + { "CODEBASE" T(h) }, + { "DOWNLOAD" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "NAME" T(i) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType APPLET_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(APPLET) }, + { 0, 0 }, +}; + +static const attr AREA_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "ALT" T(N) }, + { "CLEAR" T(N) }, + { "COORDS" T(N) }, + { "HREF" T(h) }, + { "NOHREF" T(N) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "SHAPE" T(N) }, + { "TABINDEX" T(N) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType AREA_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(AREA) }, + { 0, 0 }, +}; + +static const attr BASE_attr_list[] = { + { "HREF" T(h) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BASE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(BASE) }, + { 0, 0 }, +}; + +static const attr BGSOUND_attr_list[] = { + { "CLEAR" T(N) }, + { "LOOP" T(N) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BGSOUND_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BGSOUND) }, + { 0, 0 }, +}; + +static const attr BODY_attr_list[] = { + { "ALINK" T(N) }, + { "BACKGROUND" T(h) }, + { "CLEAR" T(N) }, + { "LINK" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, + { "TEXT" T(N) }, + { "VLINK" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BODY_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BODY) }, + { ATTR_TYPE(bgcolor) }, + { 0, 0 }, +}; + +static const attr BODYTEXT_attr_list[] = { + { "CLEAR" T(N) }, + { "DATA" T(N) }, + { "NAME" T(N) }, + { "OBJECT" T(N) }, + { "REF" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { "VALUETYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BODYTEXT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BODYTEXT) }, + { 0, 0 }, +}; + +static const attr BQ_attr_list[] = { + { "CITE" T(h) }, + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BQ_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BQ) }, + { 0, 0 }, +}; + +static const attr BUTTON_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "NAME" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BUTTON_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(BUTTON) }, + { 0, 0 }, +}; + +static const attr CAPTION_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType CAPTION_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(CAPTION) }, + { 0, 0 }, +}; + +static const attr COL_attr_list[] = { + { "CLEAR" T(N) }, + { "SPAN" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType COL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(COL) }, + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr CREDIT_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType CREDIT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(CREDIT) }, + { 0, 0 }, +}; + +static const attr DEL_attr_list[] = { + { "CITE" T(N) }, + { "DATETIME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DEL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(DEL) }, + { 0, 0 }, +}; + +static const attr DIV_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DIV_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(DIV) }, + { 0, 0 }, +}; + +static const attr DL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(DL) }, + { 0, 0 }, +}; + +static const attr EMBED_attr_list[] = { + { "ALT" T(N) }, + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "ISMAP" T(N) }, + { "MD" T(N) }, + { "NAME" T(i) }, + { "NOFLOW" T(N) }, + { "PARAMS" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "USEMAP" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType EMBED_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(EMBED) }, + { 0, 0 }, +}; + +static const attr FIELDSET_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FIELDSET_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FIELDSET) }, + { 0, 0 }, +}; + +static const attr FIG_attr_list[] = { + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "ISOBJECT" T(N) }, + { "MD" T(N) }, + { "NOFLOW" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FIG_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(FIG) }, + { 0, 0 }, +}; + +static const attr FN_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FN) }, + { 0, 0 }, +}; + +static const attr FONT_attr_list[] = { + { "CLEAR" T(N) }, + { "COLOR" T(N) }, + { "END" T(N) }, + { "FACE" T(N) }, + { "SIZE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FONT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FONT) }, + { 0, 0 }, +}; + +static const attr FORM_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACTION" T(h) }, + { "CLEAR" T(N) }, + { "ENCTYPE" T(N) }, + { "METHOD" T(N) }, + { "ONRESET" T(N) }, + { "ONSUBMIT" T(N) }, + { "SCRIPT" T(N) }, + { "SUBJECT" T(N) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FORM_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FORM) }, + { 0, 0 }, +}; + +static const attr FRAME_attr_list[] = { + { "FRAMEBORDER" T(N) }, + { "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 const AttrType FRAME_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(FRAME) }, + { 0, 0 }, +}; + +static const attr FRAMESET_attr_list[] = { + { "COLS" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, + { "ROWS" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FRAMESET_attr_type[] = { + { ATTR_TYPE(FRAMESET) }, + { 0, 0 }, +}; + +static const attr GEN_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType GEN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(GEN) }, + { 0, 0 }, +}; + +static const attr H_attr_list[] = { + { "CLEAR" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "NOWRAP" T(N) }, + { "SEQNUM" T(N) }, + { "SKIP" T(N) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType H_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(H) }, + { 0, 0 }, +}; + +static const attr HR_attr_list[] = { + { "CLEAR" T(N) }, + { "MD" T(N) }, + { "NOSHADE" T(N) }, + { "SIZE" T(N) }, + { "SRC" T(h) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType HR_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(HR) }, + { 0, 0 }, +}; + +static const attr IFRAME_attr_list[] = { + { "FRAMEBORDER" T(N) }, + { "HEIGHT" T(N) }, + { "LONGDESC" T(h) }, + { "MARGINHEIGHT" T(N) }, + { "MARGINWIDTH" T(N) }, + { "NAME" T(N) }, + { "SCROLLING" T(N) }, + { "SRC" T(h) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType IFRAME_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(IFRAME) }, + { 0, 0 }, +}; + +static const attr IMG_attr_list[] = { + { "ALT" T(N) }, + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "ISMAP" T(N) }, + { "ISOBJECT" T(N) }, + { "LONGDESC" T(h) }, + { "MD" T(N) }, + { "NAME" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "USEMAP" T(h) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType IMG_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(IMG) }, + { 0, 0 }, +}; + +static const attr INPUT_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, + { "ALT" T(N) }, + { "CHECKED" T(N) }, + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "HEIGHT" T(N) }, + { "ISMAP" 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) }, + { "ONFOCUS" T(N) }, + { "ONSELECT" T(N) }, + { "READONLY" T(N) }, + { "SIZE" T(N) }, + { "SRC" T(h) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "USEMAP" T(N) }, + { "VALUE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType INPUT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(INPUT) }, + { 0, 0 }, +}; + +static const attr ISINDEX_attr_list[] = { + { "ACTION" T(h) }, + { "HREF" T(h) }, + { "PROMPT" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType ISINDEX_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(ISINDEX) }, + { 0, 0 }, +}; + +static const attr KEYGEN_attr_list[] = { + { "CHALLENGE" T(N) }, + { "NAME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType KEYGEN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(KEYGEN) }, + { 0, 0 }, +}; + +static const attr LABEL_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "FOR" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LABEL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LABEL) }, + { 0, 0 }, +}; + +static const attr LEGEND_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LEGEND_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(LEGEND) }, + { 0, 0 }, +}; + +static const attr LI_attr_list[] = { + { "CLEAR" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "SKIP" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LI_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LI) }, + { 0, 0 }, +}; + +static const attr LINK_attr_list[] = { + { "CHARSET" T(N) }, + { "HREF" T(h) }, + { "HREFLANG" T(N) }, + { "MEDIA" T(N) }, + { "REL" T(N) }, + { "REV" T(N) }, + { "TARGET" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LINK_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LINK) }, + { 0, 0 }, +}; + +static const attr MAP_attr_list[] = { + { "CLEAR" T(N) }, + { "NAME" T(i) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType MAP_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(MAP) }, + { 0, 0 }, +}; + +static const attr MATH_attr_list[] = { + { "BOX" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType MATH_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(MATH) }, + { 0, 0 }, +}; + +static const attr META_attr_list[] = { + { "CONTENT" T(N) }, + { "HTTP-EQUIV" T(N) }, + { "NAME" T(N) }, + { "SCHEME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType META_attr_type[] = { + { ATTR_TYPE(META) }, + { 0, 0 }, +}; + +static const attr NEXTID_attr_list[] = { + { "N" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType NEXTID_attr_type[] = { + { ATTR_TYPE(NEXTID) }, + { 0, 0 }, +}; + +static const attr NOTE_attr_list[] = { + { "CLEAR" T(N) }, + { "MD" T(N) }, + { "ROLE" T(x) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType NOTE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(NOTE) }, + { 0, 0 }, +}; + +static const attr OBJECT_attr_list[] = { + { "ARCHIVE" T(N) }, + { "BORDER" T(N) }, + { "CLASSID" T(h) }, + { "CODEBASE" T(h) }, + { "CODETYPE" T(N) }, + { "DATA" T(h) }, + { "DECLARE" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "ISMAP" T(N) }, + { "NAME" T(N) }, + { "NOTAB" T(N) }, + { "SHAPES" T(N) }, + { "STANDBY" T(N) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "USEMAP" T(h) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OBJECT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(OBJECT) }, + { 0, 0 }, +}; + +static const attr OL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { "CONTINUE" T(N) }, + { "SEQNUM" T(N) }, + { "START" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(OL) }, + { 0, 0 }, +}; + +static const attr OPTION_attr_list[] = { + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "LABEL" T(N) }, + { "SELECTED" T(N) }, + { "SHAPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OPTION_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(OPTION) }, + { 0, 0 }, +}; + +static const attr OVERLAY_attr_list[] = { + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "MD" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { "X" T(N) }, + { "Y" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OVERLAY_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(OVERLAY) }, + { 0, 0 }, +}; + +static const attr P_attr_list[] = { + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType P_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(P) }, + { 0, 0 }, +}; + +static const attr PARAM_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACCEPT-ENCODING" T(N) }, + { "CLEAR" T(N) }, + { "DATA" T(N) }, + { "NAME" T(N) }, + { "OBJECT" T(N) }, + { "REF" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { "VALUEREF" T(N) }, + { "VALUETYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType PARAM_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(PARAM) }, + { 0, 0 }, +}; + +static const attr Q_attr_list[] = { + { "CITE" T(h) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType Q_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(Q) }, + { 0, 0 }, +}; + +static const attr SCRIPT_attr_list[] = { + { "CHARSET" T(N) }, + { "CLEAR" T(N) }, + { "DEFER" T(N) }, + { "EVENT" T(N) }, + { "FOR" T(N) }, + { "LANGUAGE" T(N) }, + { "NAME" T(N) }, + { "SCRIPTENGINE" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType SCRIPT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(SCRIPT) }, + { 0, 0 }, +}; + +static const attr SELECT_attr_list[] = { + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "HEIGHT" 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) }, + { "TABINDEX" T(N) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType SELECT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(SELECT) }, + { 0, 0 }, +}; + +static const attr STYLE_attr_list[] = { + { "MEDIA" T(N) }, + { "NOTATION" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType STYLE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(STYLE) }, + { 0, 0 }, +}; + +static const attr TAB_attr_list[] = { + { "CLEAR" T(N) }, + { "DP" T(N) }, + { "INDENT" T(N) }, + { "TO" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TAB_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TAB) }, + { 0, 0 }, +}; + +static const attr TABLE_attr_list[] = { + { "BACKGROUND" T(h) }, + { "BORDER" T(N) }, + { "CELLPADDING" T(N) }, + { "CELLSPACING" T(N) }, + { "CLEAR" T(N) }, + { "COLS" T(N) }, + { "COLSPEC" T(N) }, + { "DP" T(N) }, + { "FRAME" T(N) }, + { "NOFLOW" T(N) }, + { "NOWRAP" T(N) }, + { "RULES" T(N) }, + { "SUMMARY" T(N) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TABLE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TABLE) }, + { 0, 0 }, +}; + +static const attr TD_attr_list[] = { + { "ABBR" T(N) }, + { "AXES" T(N) }, + { "AXIS" T(N) }, + { "BACKGROUND" T(h) }, + { "CLEAR" T(N) }, + { "COLSPAN" T(N) }, + { "DP" T(N) }, + { "HEADERS" T(N) }, + { "HEIGHT" T(N) }, + { "NOWRAP" T(N) }, + { "ROWSPAN" T(N) }, + { "SCOPE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TD_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(TD) }, + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr TEXTAREA_attr_list[] = { + { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "COLS" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "NAME" T(N) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONCHANGE" T(N) }, + { "ONFOCUS" T(N) }, + { "ONSELECT" T(N) }, + { "READONLY" T(N) }, + { "ROWS" T(N) }, + { "TABINDEX" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TEXTAREA_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TEXTAREA) }, + { 0, 0 }, +}; + +static const attr TR_attr_list[] = { + { "CLEAR" T(N) }, + { "DP" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TR_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(cellalign) }, + { ATTR_TYPE(TR) }, + { 0, 0 }, +}; + +static const attr UL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "PLAIN" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { "WRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType UL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(UL) }, + { 0, 0 }, +}; + + +/* attribute lists for the runtime (generated by dtd_util) */ +static const attr A_attr[] = { /* A attributes */ { "ACCESSKEY" T(N) }, { "CHARSET" T(N) }, { "CLASS" T(c) }, @@ -145,15 +1274,15 @@ static const attr a_attr[] = { /* A attributes */ { "COORDS" T(N) }, { "DIR" T(N) }, { "HREF" T(h) }, + { "HREFLANG" T(N) }, { "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) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "REL" T(N) }, { "REV" T(N) }, { "SHAPE" T(N) }, @@ -166,7 +1295,7 @@ static const attr a_attr[] = { /* A attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr address_attr[] = { /* ADDRESS attributes */ +static const attr ADDRESS_attr[] = { /* ADDRESS attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -178,7 +1307,7 @@ static const attr address_attr[] = { /* ADDRESS attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr applet_attr[] = { /* APPLET attributes */ +static const attr APPLET_attr[] = { /* APPLET attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "CLASS" T(c) }, @@ -199,7 +1328,8 @@ static const attr applet_attr[] = { /* APPLET attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr area_attr[] = { /* AREA attributes */ +static const attr AREA_attr[] = { /* AREA attributes */ + { "ACCESSKEY" T(N) }, { "ALT" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -210,9 +1340,8 @@ static const attr area_attr[] = { /* AREA attributes */ { "LANG" T(N) }, { "NOHREF" T(N) }, { "NOTAB" T(N) }, - { "ONCLICK" T(N) }, - { "ONMOUSEOUT" T(N) }, - { "ONMOUSEOVER" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "SHAPE" T(N) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, @@ -221,14 +1350,17 @@ static const attr area_attr[] = { /* AREA attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr base_attr[] = { /* BASE attributes */ +static const attr BASE_attr[] = { /* BASE attributes */ + { "CLASS" T(c) }, { "HREF" T(h) }, + { "ID" T(i) }, + { "STYLE" T(N) }, { "TARGET" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr bgsound_attr[] = { /* BGSOUND attributes */ +static const attr BGSOUND_attr[] = { /* BGSOUND attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -241,7 +1373,7 @@ static const attr bgsound_attr[] = { /* BGSOUND attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr body_attr[] = { /* BODY attributes */ +static const attr BODY_attr[] = { /* BODY attributes */ { "ALINK" T(N) }, { "BACKGROUND" T(h) }, { "BGCOLOR" T(N) }, @@ -260,7 +1392,7 @@ static const attr body_attr[] = { /* BODY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr bodytext_attr[] = { /* BODYTEXT attributes */ +static const attr BODYTEXT_attr[] = { /* BODYTEXT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DATA" T(N) }, @@ -278,7 +1410,7 @@ static const attr bodytext_attr[] = { /* BODYTEXT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr bq_attr[] = { /* BLOCKQUOTE attributes */ +static const attr BQ_attr[] = { /* BLOCKQUOTE attributes */ { "CITE" T(h) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -291,7 +1423,8 @@ static const attr bq_attr[] = { /* BLOCKQUOTE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr button_attr[] = { /* BUTTON attributes */ +static const attr BUTTON_attr[] = { /* BUTTON attributes */ + { "ACCESSKEY" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -309,7 +1442,7 @@ static const attr button_attr[] = { /* BUTTON attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr caption_attr[] = { /* CAPTION attributes */ +static const attr CAPTION_attr[] = { /* CAPTION attributes */ { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, @@ -322,7 +1455,7 @@ static const attr caption_attr[] = { /* CAPTION attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr col_attr[] = { /* COL attributes */ +static const attr COL_attr[] = { /* COL attributes */ { "ALIGN" T(N) }, { "CHAR" T(N) }, { "CHAROFF" T(N) }, @@ -339,7 +1472,7 @@ static const attr col_attr[] = { /* COL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr credit_attr[] = { /* CREDIT attributes */ +static const attr CREDIT_attr[] = { /* CREDIT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -350,7 +1483,19 @@ static const attr credit_attr[] = { /* CREDIT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr div_attr[] = { /* CENTER attributes */ +static const attr DEL_attr[] = { /* DEL attributes */ + { "CITE" T(N) }, + { "CLASS" T(c) }, + { "DATETIME" T(N) }, + { "DIR" T(N) }, + { "ID" T(i) }, + { "LANG" T(N) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr DIV_attr[] = { /* CENTER attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -362,7 +1507,7 @@ static const attr div_attr[] = { /* CENTER attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr dl_attr[] = { /* DL attributes */ +static const attr DL_attr[] = { /* DL attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -374,7 +1519,7 @@ static const attr dl_attr[] = { /* DL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr embed_attr[] = { /* EMBED attributes */ +static const attr EMBED_attr[] = { /* EMBED attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "BORDER" T(N) }, @@ -399,7 +1544,7 @@ static const attr embed_attr[] = { /* EMBED attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fieldset_attr[] = { /* FIELDSET attributes */ +static const attr FIELDSET_attr[] = { /* FIELDSET attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -410,7 +1555,7 @@ static const attr fieldset_attr[] = { /* FIELDSET attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fig_attr[] = { /* FIG attributes */ +static const attr FIG_attr[] = { /* FIG attributes */ { "ALIGN" T(N) }, { "BORDER" T(N) }, { "CLASS" T(c) }, @@ -431,7 +1576,7 @@ static const attr fig_attr[] = { /* FIG attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fn_attr[] = { /* FN attributes */ +static const attr FN_attr[] = { /* FN attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -442,7 +1587,7 @@ static const attr fn_attr[] = { /* FN attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr font_attr[] = { /* BASEFONT attributes */ +static const attr FONT_attr[] = { /* BASEFONT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COLOR" T(N) }, @@ -452,10 +1597,13 @@ static const attr font_attr[] = { /* BASEFONT attributes */ { "ID" T(i) }, { "LANG" T(N) }, { "SIZE" T(N) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr form_attr[] = { /* FORM attributes */ +static const attr FORM_attr[] = { /* FORM attributes */ + { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, { "ACTION" T(h) }, { "CLASS" T(c) }, @@ -465,6 +1613,7 @@ static const attr form_attr[] = { /* FORM attributes */ { "ID" T(i) }, { "LANG" T(N) }, { "METHOD" T(N) }, + { "ONRESET" T(N) }, { "ONSUBMIT" T(N) }, { "SCRIPT" T(N) }, { "STYLE" T(N) }, @@ -474,7 +1623,9 @@ static const attr form_attr[] = { /* FORM attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr frame_attr[] = { /* FRAME attributes */ +static const attr FRAME_attr[] = { /* FRAME attributes */ + { "CLASS" T(c) }, + { "FRAMEBORDER" T(N) }, { "ID" T(i) }, { "LONGDESC" T(h) }, { "MARGINHEIGHT" T(N) }, @@ -483,16 +1634,20 @@ static const attr frame_attr[] = { /* FRAME attributes */ { "NORESIZE" T(N) }, { "SCROLLING" T(N) }, { "SRC" T(h) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr frameset_attr[] = { /* FRAMESET attributes */ +static const attr FRAMESET_attr[] = { /* FRAMESET attributes */ { "COLS" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, { "ROWS" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr gen_attr[] = { /* ABBR attributes */ +static const attr GEN_attr[] = { /* ABBR attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -503,7 +1658,7 @@ static const attr gen_attr[] = { /* ABBR attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr h_attr[] = { /* H1 attributes */ +static const attr H_attr[] = { /* H1 attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -521,12 +1676,13 @@ static const attr h_attr[] = { /* H1 attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr hr_attr[] = { /* HR attributes */ +static const attr HR_attr[] = { /* HR attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, { "ID" T(i) }, + { "LANG" T(N) }, { "MD" T(N) }, { "NOSHADE" T(N) }, { "SIZE" T(N) }, @@ -537,8 +1693,9 @@ static const attr hr_attr[] = { /* HR attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr iframe_attr[] = { /* IFRAME attributes */ +static const attr IFRAME_attr[] = { /* IFRAME attributes */ { "ALIGN" T(N) }, + { "CLASS" T(c) }, { "FRAMEBORDER" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, @@ -549,11 +1706,12 @@ static const attr iframe_attr[] = { /* IFRAME attributes */ { "SCROLLING" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, + { "TITLE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr img_attr[] = { /* IMG attributes */ +static const attr IMG_attr[] = { /* IMG attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "BORDER" T(N) }, @@ -561,24 +1719,28 @@ static const attr img_attr[] = { /* IMG attributes */ { "CLEAR" T(N) }, { "DIR" T(N) }, { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, { "ID" T(i) }, { "ISMAP" T(N) }, { "ISOBJECT" T(N) }, { "LANG" T(N) }, { "LONGDESC" T(h) }, { "MD" T(N) }, + { "NAME" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { "UNITS" T(N) }, { "USEMAP" T(h) }, + { "VSPACE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr input_attr[] = { /* INPUT attributes */ +static const attr INPUT_attr[] = { /* INPUT attributes */ { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "ALT" T(N) }, { "CHECKED" T(N) }, @@ -589,6 +1751,7 @@ static const attr input_attr[] = { /* INPUT attributes */ { "ERROR" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, + { "ISMAP" T(N) }, { "LANG" T(N) }, { "MAX" T(N) }, { "MAXLENGTH" T(N) }, @@ -598,32 +1761,35 @@ static const attr input_attr[] = { /* INPUT attributes */ { "NOTAB" T(N) }, { "ONBLUR" T(N) }, { "ONCHANGE" T(N) }, - { "ONCLICK" T(N) }, { "ONFOCUS" T(N) }, { "ONSELECT" T(N) }, + { "READONLY" T(N) }, { "SIZE" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, { "TITLE" T(N) }, { "TYPE" T(N) }, + { "USEMAP" T(N) }, { "VALUE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr isindex_attr[] = { /* ISINDEX attributes */ +static const attr ISINDEX_attr[] = { /* ISINDEX attributes */ { "ACTION" T(h) }, + { "CLASS" T(c) }, { "DIR" T(N) }, { "HREF" T(h) }, { "ID" T(i) }, { "LANG" T(N) }, { "PROMPT" T(N) }, + { "STYLE" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr keygen_attr[] = { /* KEYGEN attributes */ +static const attr KEYGEN_attr[] = { /* KEYGEN attributes */ { "CHALLENGE" T(N) }, { "CLASS" T(c) }, { "DIR" T(N) }, @@ -635,7 +1801,7 @@ static const attr keygen_attr[] = { /* KEYGEN attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr label_attr[] = { /* LABEL attributes */ +static const attr LABEL_attr[] = { /* LABEL attributes */ { "ACCESSKEY" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -643,13 +1809,14 @@ static const attr label_attr[] = { /* LABEL attributes */ { "FOR" T(N) }, { "ID" T(i) }, { "LANG" T(N) }, - { "ONCLICK" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr legend_attr[] = { /* LEGEND attributes */ +static const attr LEGEND_attr[] = { /* LEGEND attributes */ { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, @@ -662,7 +1829,7 @@ static const attr legend_attr[] = { /* LEGEND attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr li_attr[] = { /* LI attributes */ +static const attr LI_attr[] = { /* LI attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DINGBAT" T(N) }, @@ -679,11 +1846,14 @@ static const attr li_attr[] = { /* LI attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr link_attr[] = { /* LINK attributes */ +static const attr LINK_attr[] = { /* LINK attributes */ { "CHARSET" T(N) }, { "CLASS" T(c) }, + { "DIR" T(N) }, { "HREF" T(h) }, + { "HREFLANG" T(N) }, { "ID" T(i) }, + { "LANG" T(N) }, { "MEDIA" T(N) }, { "REL" T(N) }, { "REV" T(N) }, @@ -694,7 +1864,7 @@ static const attr link_attr[] = { /* LINK attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr map_attr[] = { /* MAP attributes */ +static const attr MAP_attr[] = { /* MAP attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -706,7 +1876,7 @@ static const attr map_attr[] = { /* MAP attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr math_attr[] = { /* MATH attributes */ +static const attr MATH_attr[] = { /* MATH attributes */ { "BOX" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -718,19 +1888,20 @@ static const attr math_attr[] = { /* MATH attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr meta_attr[] = { /* META attributes */ +static const attr META_attr[] = { /* META attributes */ { "CONTENT" T(N) }, { "HTTP-EQUIV" T(N) }, { "NAME" T(N) }, + { "SCHEME" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr nextid_attr[] = { /* NEXTID attributes */ +static const attr NEXTID_attr[] = { /* NEXTID attributes */ { "N" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr note_attr[] = { /* NOTE attributes */ +static const attr NOTE_attr[] = { /* NOTE attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -744,8 +1915,9 @@ static const attr note_attr[] = { /* NOTE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr object_attr[] = { /* OBJECT attributes */ +static const attr OBJECT_attr[] = { /* OBJECT attributes */ { "ALIGN" T(N) }, + { "ARCHIVE" T(N) }, { "BORDER" T(N) }, { "CLASS" T(c) }, { "CLASSID" T(h) }, @@ -773,7 +1945,7 @@ static const attr object_attr[] = { /* OBJECT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr ol_attr[] = { /* OL attributes */ +static const attr OL_attr[] = { /* OL attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -789,13 +1961,14 @@ static const attr ol_attr[] = { /* OL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr option_attr[] = { /* OPTION attributes */ +static const attr OPTION_attr[] = { /* OPTION attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, { "DISABLED" T(N) }, { "ERROR" T(N) }, { "ID" T(i) }, + { "LABEL" T(N) }, { "LANG" T(N) }, { "SELECTED" T(N) }, { "SHAPE" T(N) }, @@ -805,7 +1978,7 @@ static const attr option_attr[] = { /* OPTION attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr overlay_attr[] = { /* OVERLAY attributes */ +static const attr OVERLAY_attr[] = { /* OVERLAY attributes */ { "CLASS" T(c) }, { "HEIGHT" T(N) }, { "ID" T(i) }, @@ -821,7 +1994,7 @@ static const attr overlay_attr[] = { /* OVERLAY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr p_attr[] = { /* P attributes */ +static const attr P_attr[] = { /* P attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -834,7 +2007,7 @@ static const attr p_attr[] = { /* P attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr param_attr[] = { /* PARAM attributes */ +static const attr PARAM_attr[] = { /* PARAM attributes */ { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, { "ACCEPT-ENCODING" T(N) }, @@ -856,9 +2029,23 @@ static const attr param_attr[] = { /* PARAM attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr script_attr[] = { /* SCRIPT attributes */ +static const attr Q_attr[] = { /* Q attributes */ + { "CITE" T(h) }, + { "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 const attr SCRIPT_attr[] = { /* SCRIPT attributes */ + { "CHARSET" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, + { "DEFER" T(N) }, { "DIR" T(N) }, { "EVENT" T(N) }, { "FOR" T(N) }, @@ -874,7 +2061,7 @@ static const attr script_attr[] = { /* SCRIPT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr select_attr[] = { /* SELECT attributes */ +static const attr SELECT_attr[] = { /* SELECT attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -900,15 +2087,20 @@ static const attr select_attr[] = { /* SELECT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr style_attr[] = { /* STYLE attributes */ +static const attr STYLE_attr[] = { /* STYLE attributes */ + { "CLASS" T(c) }, { "DIR" T(N) }, + { "ID" T(i) }, { "LANG" T(N) }, + { "MEDIA" T(N) }, { "NOTATION" T(N) }, + { "STYLE" T(N) }, { "TITLE" T(N) }, + { "TYPE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr tab_attr[] = { /* TAB attributes */ +static const attr TAB_attr[] = { /* TAB attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -923,7 +2115,7 @@ static const attr tab_attr[] = { /* TAB attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr table_attr[] = { /* TABLE attributes */ +static const attr TABLE_attr[] = { /* TABLE attributes */ { "ALIGN" T(N) }, { "BACKGROUND" T(h) }, { "BORDER" T(N) }, @@ -949,7 +2141,8 @@ static const attr table_attr[] = { /* TABLE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr td_attr[] = { /* TD attributes */ +static const attr TD_attr[] = { /* TD attributes */ + { "ABBR" T(N) }, { "ALIGN" T(N) }, { "AXES" T(N) }, { "AXIS" T(N) }, @@ -961,11 +2154,13 @@ static const attr td_attr[] = { /* TD attributes */ { "COLSPAN" T(N) }, { "DIR" T(N) }, { "DP" T(N) }, + { "HEADERS" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, { "LANG" T(N) }, { "NOWRAP" T(N) }, { "ROWSPAN" T(N) }, + { "SCOPE" T(N) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { "VALIGN" T(N) }, @@ -973,8 +2168,9 @@ static const attr td_attr[] = { /* TD attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr textarea_attr[] = { /* TEXTAREA attributes */ +static const attr TEXTAREA_attr[] = { /* TEXTAREA attributes */ { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -990,6 +2186,7 @@ static const attr textarea_attr[] = { /* TEXTAREA attributes */ { "ONCHANGE" T(N) }, { "ONFOCUS" T(N) }, { "ONSELECT" T(N) }, + { "READONLY" T(N) }, { "ROWS" T(N) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, @@ -997,7 +2194,7 @@ static const attr textarea_attr[] = { /* TEXTAREA attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr tr_attr[] = { /* TBODY attributes */ +static const attr TR_attr[] = { /* TBODY attributes */ { "ALIGN" T(N) }, { "CHAR" T(N) }, { "CHAROFF" T(N) }, @@ -1014,7 +2211,7 @@ static const attr tr_attr[] = { /* TBODY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr ul_attr[] = { /* DIR attributes */ +static const attr UL_attr[] = { /* DIR attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -1185,131 +2382,133 @@ static const attr ul_attr[] = { /* DIR attributes */ #define NULL_HTTag NULL_HTTag_ #endif +#define ATTR_DATA(name) name##_attr, HTML_##name##_ATTRIBUTES, name##_attr_type + #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), ATTR_DATA(A), SGML_EMPTY, T_A}, + { P(ABBR), ATTR_DATA(GEN), SGML_MIXED, T_ABBR}, + { P(ACRONYM), ATTR_DATA(GEN), SGML_MIXED, T_ACRONYM}, + { P(ADDRESS), ATTR_DATA(ADDRESS), SGML_MIXED, T_ADDRESS}, + { P(APPLET), ATTR_DATA(APPLET), SGML_MIXED, T_APPLET}, + { P(AREA), ATTR_DATA(AREA), SGML_EMPTY, T_AREA}, + { P(AU), ATTR_DATA(GEN), SGML_MIXED, T_AU}, + { P(AUTHOR), ATTR_DATA(GEN), SGML_MIXED, T_AUTHOR}, + { P(B), ATTR_DATA(GEN), SGML_EMPTY, T_B}, + { P0(BANNER), ATTR_DATA(GEN), SGML_MIXED, T_BANNER}, + { P(BASE), ATTR_DATA(BASE), SGML_EMPTY, T_BASE}, + { P(BASEFONT), ATTR_DATA(FONT), SGML_EMPTY, T_BASEFONT}, + { P(BDO), ATTR_DATA(GEN), SGML_MIXED, T_BDO}, + { P(BGSOUND), ATTR_DATA(BGSOUND), SGML_EMPTY, T_BGSOUND}, + { P(BIG), ATTR_DATA(GEN), SGML_MIXED, T_BIG}, + { P(BLINK), ATTR_DATA(GEN), SGML_EMPTY, T_BLINK}, + { P(BLOCKQUOTE), ATTR_DATA(BQ), SGML_MIXED, T_BLOCKQUOTE}, + { P(BODY), ATTR_DATA(BODY), SGML_MIXED, T_BODY}, + { P(BODYTEXT), ATTR_DATA(BODYTEXT), SGML_MIXED, T_BODYTEXT}, + { P(BQ), ATTR_DATA(BQ), SGML_MIXED, T_BQ}, + { P(BR), ATTR_DATA(GEN), SGML_EMPTY, T_BR}, + { P(BUTTON), ATTR_DATA(BUTTON), SGML_MIXED, T_BUTTON}, + { P(CAPTION), ATTR_DATA(CAPTION), SGML_MIXED, T_CAPTION}, + { P(CENTER), ATTR_DATA(DIV), SGML_MIXED, T_CENTER}, + { P(CITE), ATTR_DATA(GEN), SGML_EMPTY, T_CITE}, + { P(CODE), ATTR_DATA(GEN), SGML_MIXED, T_CODE}, + { P(COL), ATTR_DATA(COL), SGML_EMPTY, T_COL}, + { P(COLGROUP), ATTR_DATA(COL), SGML_EMPTY, T_COLGROUP}, + { P(COMMENT), ATTR_DATA(GEN), SGML_MIXED, T_COMMENT}, + { P(CREDIT), ATTR_DATA(CREDIT), SGML_MIXED, T_CREDIT}, + { P(DD), ATTR_DATA(GEN), SGML_EMPTY, T_DD}, + { P(DEL), ATTR_DATA(DEL), SGML_MIXED, T_DEL}, + { P(DFN), ATTR_DATA(GEN), SGML_MIXED, T_DFN}, + { P(DIR), ATTR_DATA(UL), SGML_MIXED, T_DIR}, + { P(DIV), ATTR_DATA(DIV), SGML_MIXED, T_DIV}, + { P(DL), ATTR_DATA(DL), SGML_MIXED, T_DL}, + { P(DLC), ATTR_DATA(DL), SGML_MIXED, T_DLC}, + { P(DT), ATTR_DATA(GEN), SGML_EMPTY, T_DT}, + { P(EM), ATTR_DATA(GEN), SGML_EMPTY, T_EM}, + { P(EMBED), ATTR_DATA(EMBED), SGML_EMPTY, T_EMBED}, + { P(FIELDSET), ATTR_DATA(FIELDSET), SGML_MIXED, T_FIELDSET}, + { P(FIG), ATTR_DATA(FIG), SGML_MIXED, T_FIG}, + { P(FN), ATTR_DATA(FN), SGML_MIXED, T_FN}, + { P(FONT), ATTR_DATA(FONT), SGML_EMPTY, T_FONT}, + { P(FORM), ATTR_DATA(FORM), SGML_EMPTY, T_FORM}, + { P(FRAME), ATTR_DATA(FRAME), SGML_EMPTY, T_FRAME}, + { P(FRAMESET), ATTR_DATA(FRAMESET), SGML_MIXED, T_FRAMESET}, + { P0(H1), ATTR_DATA(H), SGML_MIXED, T_H1}, + { P0(H2), ATTR_DATA(H), SGML_MIXED, T_H2}, + { P0(H3), ATTR_DATA(H), SGML_MIXED, T_H3}, + { P0(H4), ATTR_DATA(H), SGML_MIXED, T_H4}, + { P0(H5), ATTR_DATA(H), SGML_MIXED, T_H5}, + { P0(H6), ATTR_DATA(H), SGML_MIXED, T_H6}, + { P(HEAD), ATTR_DATA(GEN), SGML_MIXED, T_HEAD}, + { P(HR), ATTR_DATA(HR), SGML_EMPTY, T_HR}, + { P(HTML), ATTR_DATA(GEN), SGML_MIXED, T_HTML}, + { P(HY), ATTR_DATA(GEN), SGML_EMPTY, T_HY}, + { P(I), ATTR_DATA(GEN), SGML_EMPTY, T_I}, + { P(IFRAME), ATTR_DATA(IFRAME), SGML_MIXED, T_IFRAME}, + { P(IMG), ATTR_DATA(IMG), SGML_EMPTY, T_IMG}, + { P(INPUT), ATTR_DATA(INPUT), SGML_EMPTY, T_INPUT}, + { P(INS), ATTR_DATA(DEL), SGML_MIXED, T_INS}, + { P(ISINDEX), ATTR_DATA(ISINDEX), SGML_EMPTY, T_ISINDEX}, + { P(KBD), ATTR_DATA(GEN), SGML_MIXED, T_KBD}, + { P(KEYGEN), ATTR_DATA(KEYGEN), SGML_EMPTY, T_KEYGEN}, + { P(LABEL), ATTR_DATA(LABEL), SGML_MIXED, T_LABEL}, + { P(LEGEND), ATTR_DATA(LEGEND), SGML_MIXED, T_LEGEND}, + { P(LH), ATTR_DATA(GEN), SGML_EMPTY, T_LH}, + { P(LI), ATTR_DATA(LI), SGML_EMPTY, T_LI}, + { P(LINK), ATTR_DATA(LINK), SGML_EMPTY, T_LINK}, + { P(LISTING), ATTR_DATA(GEN), SGML_LITTERAL,T_LISTING}, + { P(MAP), ATTR_DATA(MAP), SGML_MIXED, T_MAP}, + { P(MARQUEE), ATTR_DATA(GEN), SGML_MIXED, T_MARQUEE}, + { P(MATH), ATTR_DATA(MATH), SGML_LITTERAL,T_MATH}, + { P(MENU), ATTR_DATA(UL), SGML_MIXED, T_MENU}, + { P(META), ATTR_DATA(META), SGML_EMPTY, T_META}, + { P(NEXTID), ATTR_DATA(NEXTID), SGML_EMPTY, T_NEXTID}, + { P(NOFRAMES), ATTR_DATA(GEN), SGML_MIXED, T_NOFRAMES}, + { P(NOTE), ATTR_DATA(NOTE), SGML_MIXED, T_NOTE}, + { P(OBJECT), ATTR_DATA(OBJECT), SGML_LITTERAL,T_OBJECT}, + { P(OL), ATTR_DATA(OL), SGML_MIXED, T_OL}, + { P(OPTION), ATTR_DATA(OPTION), SGML_EMPTY, T_OPTION}, + { P(OVERLAY), ATTR_DATA(OVERLAY), SGML_EMPTY, T_OVERLAY}, + { P(P), ATTR_DATA(P), SGML_EMPTY, T_P}, + { P(PARAM), ATTR_DATA(PARAM), SGML_EMPTY, T_PARAM}, + { P(PLAINTEXT), ATTR_DATA(GEN), SGML_LITTERAL,T_PLAINTEXT}, + { P0(PRE), ATTR_DATA(GEN), SGML_MIXED, T_PRE}, + { P(Q), ATTR_DATA(Q), SGML_MIXED, T_Q}, + { P(S), ATTR_DATA(GEN), SGML_MIXED, T_S}, + { P(SAMP), ATTR_DATA(GEN), SGML_MIXED, T_SAMP}, + { P(SCRIPT), ATTR_DATA(SCRIPT), SGML_LITTERAL,T_SCRIPT}, + { P(SELECT), ATTR_DATA(SELECT), SGML_MIXED, T_SELECT}, + { P(SHY), ATTR_DATA(GEN), SGML_EMPTY, T_SHY}, + { P(SMALL), ATTR_DATA(GEN), SGML_MIXED, T_SMALL}, + { P(SPAN), ATTR_DATA(GEN), SGML_MIXED, T_SPAN}, + { P(SPOT), ATTR_DATA(GEN), SGML_EMPTY, T_SPOT}, + { P(STRIKE), ATTR_DATA(GEN), SGML_MIXED, T_STRIKE}, + { P(STRONG), ATTR_DATA(GEN), SGML_EMPTY, T_STRONG}, + { P(STYLE), ATTR_DATA(STYLE), SGML_LITTERAL,T_STYLE}, + { P(SUB), ATTR_DATA(GEN), SGML_MIXED, T_SUB}, + { P(SUP), ATTR_DATA(GEN), SGML_MIXED, T_SUP}, + { P(TAB), ATTR_DATA(TAB), SGML_EMPTY, T_TAB}, + { P(TABLE), ATTR_DATA(TABLE), SGML_MIXED, T_TABLE}, + { P(TBODY), ATTR_DATA(TR), SGML_EMPTY, T_TBODY}, + { P(TD), ATTR_DATA(TD), SGML_EMPTY, T_TD}, + { P(TEXTAREA), ATTR_DATA(TEXTAREA), SGML_LITTERAL,T_TEXTAREA}, + { P(TEXTFLOW), ATTR_DATA(BODYTEXT), SGML_MIXED, T_TEXTFLOW}, + { P(TFOOT), ATTR_DATA(TR), SGML_EMPTY, T_TFOOT}, + { P(TH), ATTR_DATA(TD), SGML_EMPTY, T_TH}, + { P(THEAD), ATTR_DATA(TR), SGML_EMPTY, T_THEAD}, + { P(TITLE), ATTR_DATA(GEN), SGML_RCDATA, T_TITLE}, + { P(TR), ATTR_DATA(TR), SGML_EMPTY, T_TR}, + { P(TT), ATTR_DATA(GEN), SGML_EMPTY, T_TT}, + { P(U), ATTR_DATA(GEN), SGML_EMPTY, T_U}, + { P(UL), ATTR_DATA(UL), SGML_MIXED, T_UL}, + { P(VAR), ATTR_DATA(GEN), SGML_MIXED, T_VAR}, + { P(WBR), ATTR_DATA(GEN), SGML_EMPTY, T_WBR}, + { P0(XMP), ATTR_DATA(GEN), 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), ATTR_DATA(OBJECT), SGML_MIXED, T_OBJECT_PCDATA}, }; /* *INDENT-ON* */ diff --git a/WWW/Library/Implementation/src1_HTMLDTD.h b/WWW/Library/Implementation/src1_HTMLDTD.h index 6d65a670..96ab8824 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.9 2008/09/16 23:47:45 tom Exp $ */ +/* $LynxId: src1_HTMLDTD.h,v 1.39 2008/09/20 14:25:27 tom Exp $ */ #ifndef src_HTMLDTD_H1 #define src_HTMLDTD_H1 1 @@ -137,7 +137,1136 @@ #endif /* *INDENT-OFF* */ -static const attr a_attr[] = { /* A attributes */ +#define ATTR_TYPE(name) #name, name##_attr_list + +/* generic attributes, used in different tags */ +static const attr core_attr_list[] = { + { "CLASS" T(c) }, + { "ID" T(i) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType core_attr_type[] = { + { ATTR_TYPE(core) }, + { 0, 0 }, +}; + +static const attr i18n_attr_list[] = { + { "DIR" T(N) }, + { "LANG" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType i18n_attr_type[] = { + { ATTR_TYPE(i18n) }, + { 0, 0 }, +}; + +static const attr events_attr_list[] = { + { "ONCLICK" T(N) }, + { "ONDBLCLICK" T(N) }, + { "ONKEYDOWN" T(N) }, + { "ONKEYPRESS" T(N) }, + { "ONKEYUP" T(N) }, + { "ONMOUSEDOWN" T(N) }, + { "ONMOUSEMOVE" T(N) }, + { "ONMOUSEOUT" T(N) }, + { "ONMOUSEOVER" T(N) }, + { "ONMOUSEUP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType events_attr_type[] = { + { ATTR_TYPE(events) }, + { 0, 0 }, +}; + +static const attr align_attr_list[] = { + { "ALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType align_attr_type[] = { + { ATTR_TYPE(align) }, + { 0, 0 }, +}; + +static const attr cellalign_attr_list[] = { + { "ALIGN" T(N) }, + { "CHAR" T(N) }, + { "CHAROFF" T(N) }, + { "VALIGN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType cellalign_attr_type[] = { + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr bgcolor_attr_list[] = { + { "BGCOLOR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType bgcolor_attr_type[] = { + { ATTR_TYPE(bgcolor) }, + { 0, 0 }, +}; + + +/* tables defining attributes per-tag in terms of generic attributes (editable) */ +static const attr A_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CHARSET" T(N) }, + { "CLEAR" T(N) }, + { "COORDS" T(N) }, + { "HREF" T(h) }, + { "HREFLANG" T(N) }, + { "ISMAP" T(N) }, + { "MD" T(N) }, + { "NAME" T(i) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "REL" T(N) }, + { "REV" T(N) }, + { "SHAPE" T(N) }, + { "TABINDEX" T(N) }, + { "TARGET" T(N) }, + { "TYPE" T(N) }, + { "URN" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType A_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(A) }, + { 0, 0 }, +}; + +static const attr ADDRESS_attr_list[] = { + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType ADDRESS_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(ADDRESS) }, + { 0, 0 }, +}; + +static const attr APPLET_attr_list[] = { + { "ALT" T(N) }, + { "CLEAR" T(N) }, + { "CODE" T(N) }, + { "CODEBASE" T(h) }, + { "DOWNLOAD" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "NAME" T(i) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType APPLET_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(APPLET) }, + { 0, 0 }, +}; + +static const attr AREA_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "ALT" T(N) }, + { "CLEAR" T(N) }, + { "COORDS" T(N) }, + { "HREF" T(h) }, + { "NOHREF" T(N) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "SHAPE" T(N) }, + { "TABINDEX" T(N) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType AREA_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(AREA) }, + { 0, 0 }, +}; + +static const attr BASE_attr_list[] = { + { "HREF" T(h) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BASE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(BASE) }, + { 0, 0 }, +}; + +static const attr BGSOUND_attr_list[] = { + { "CLEAR" T(N) }, + { "LOOP" T(N) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BGSOUND_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BGSOUND) }, + { 0, 0 }, +}; + +static const attr BODY_attr_list[] = { + { "ALINK" T(N) }, + { "BACKGROUND" T(h) }, + { "CLEAR" T(N) }, + { "LINK" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, + { "TEXT" T(N) }, + { "VLINK" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BODY_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BODY) }, + { ATTR_TYPE(bgcolor) }, + { 0, 0 }, +}; + +static const attr BODYTEXT_attr_list[] = { + { "CLEAR" T(N) }, + { "DATA" T(N) }, + { "NAME" T(N) }, + { "OBJECT" T(N) }, + { "REF" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { "VALUETYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BODYTEXT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BODYTEXT) }, + { 0, 0 }, +}; + +static const attr BQ_attr_list[] = { + { "CITE" T(h) }, + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BQ_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(BQ) }, + { 0, 0 }, +}; + +static const attr BUTTON_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "NAME" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType BUTTON_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(BUTTON) }, + { 0, 0 }, +}; + +static const attr CAPTION_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType CAPTION_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(CAPTION) }, + { 0, 0 }, +}; + +static const attr COL_attr_list[] = { + { "CLEAR" T(N) }, + { "SPAN" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType COL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(COL) }, + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr CREDIT_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType CREDIT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(CREDIT) }, + { 0, 0 }, +}; + +static const attr DEL_attr_list[] = { + { "CITE" T(N) }, + { "DATETIME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DEL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(DEL) }, + { 0, 0 }, +}; + +static const attr DIV_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DIV_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(DIV) }, + { 0, 0 }, +}; + +static const attr DL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType DL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(DL) }, + { 0, 0 }, +}; + +static const attr EMBED_attr_list[] = { + { "ALT" T(N) }, + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "ISMAP" T(N) }, + { "MD" T(N) }, + { "NAME" T(i) }, + { "NOFLOW" T(N) }, + { "PARAMS" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "USEMAP" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType EMBED_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(EMBED) }, + { 0, 0 }, +}; + +static const attr FIELDSET_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FIELDSET_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FIELDSET) }, + { 0, 0 }, +}; + +static const attr FIG_attr_list[] = { + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "ISOBJECT" T(N) }, + { "MD" T(N) }, + { "NOFLOW" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FIG_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(FIG) }, + { 0, 0 }, +}; + +static const attr FN_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FN) }, + { 0, 0 }, +}; + +static const attr FONT_attr_list[] = { + { "CLEAR" T(N) }, + { "COLOR" T(N) }, + { "END" T(N) }, + { "FACE" T(N) }, + { "SIZE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FONT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FONT) }, + { 0, 0 }, +}; + +static const attr FORM_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACTION" T(h) }, + { "CLEAR" T(N) }, + { "ENCTYPE" T(N) }, + { "METHOD" T(N) }, + { "ONRESET" T(N) }, + { "ONSUBMIT" T(N) }, + { "SCRIPT" T(N) }, + { "SUBJECT" T(N) }, + { "TARGET" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FORM_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(FORM) }, + { 0, 0 }, +}; + +static const attr FRAME_attr_list[] = { + { "FRAMEBORDER" T(N) }, + { "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 const AttrType FRAME_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(FRAME) }, + { 0, 0 }, +}; + +static const attr FRAMESET_attr_list[] = { + { "COLS" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, + { "ROWS" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType FRAMESET_attr_type[] = { + { ATTR_TYPE(FRAMESET) }, + { 0, 0 }, +}; + +static const attr GEN_attr_list[] = { + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType GEN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(GEN) }, + { 0, 0 }, +}; + +static const attr H_attr_list[] = { + { "CLEAR" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "NOWRAP" T(N) }, + { "SEQNUM" T(N) }, + { "SKIP" T(N) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType H_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(H) }, + { 0, 0 }, +}; + +static const attr HR_attr_list[] = { + { "CLEAR" T(N) }, + { "MD" T(N) }, + { "NOSHADE" T(N) }, + { "SIZE" T(N) }, + { "SRC" T(h) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType HR_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(HR) }, + { 0, 0 }, +}; + +static const attr IFRAME_attr_list[] = { + { "FRAMEBORDER" T(N) }, + { "HEIGHT" T(N) }, + { "LONGDESC" T(h) }, + { "MARGINHEIGHT" T(N) }, + { "MARGINWIDTH" T(N) }, + { "NAME" T(N) }, + { "SCROLLING" T(N) }, + { "SRC" T(h) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType IFRAME_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(IFRAME) }, + { 0, 0 }, +}; + +static const attr IMG_attr_list[] = { + { "ALT" T(N) }, + { "BORDER" T(N) }, + { "CLEAR" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "ISMAP" T(N) }, + { "ISOBJECT" T(N) }, + { "LONGDESC" T(h) }, + { "MD" T(N) }, + { "NAME" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "USEMAP" T(h) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType IMG_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(IMG) }, + { 0, 0 }, +}; + +static const attr INPUT_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, + { "ALT" T(N) }, + { "CHECKED" T(N) }, + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "HEIGHT" T(N) }, + { "ISMAP" 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) }, + { "ONFOCUS" T(N) }, + { "ONSELECT" T(N) }, + { "READONLY" T(N) }, + { "SIZE" T(N) }, + { "SRC" T(h) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "USEMAP" T(N) }, + { "VALUE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType INPUT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(INPUT) }, + { 0, 0 }, +}; + +static const attr ISINDEX_attr_list[] = { + { "ACTION" T(h) }, + { "HREF" T(h) }, + { "PROMPT" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType ISINDEX_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(ISINDEX) }, + { 0, 0 }, +}; + +static const attr KEYGEN_attr_list[] = { + { "CHALLENGE" T(N) }, + { "NAME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType KEYGEN_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(KEYGEN) }, + { 0, 0 }, +}; + +static const attr LABEL_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "FOR" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LABEL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LABEL) }, + { 0, 0 }, +}; + +static const attr LEGEND_attr_list[] = { + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LEGEND_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(LEGEND) }, + { 0, 0 }, +}; + +static const attr LI_attr_list[] = { + { "CLEAR" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "SKIP" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LI_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LI) }, + { 0, 0 }, +}; + +static const attr LINK_attr_list[] = { + { "CHARSET" T(N) }, + { "HREF" T(h) }, + { "HREFLANG" T(N) }, + { "MEDIA" T(N) }, + { "REL" T(N) }, + { "REV" T(N) }, + { "TARGET" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType LINK_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(LINK) }, + { 0, 0 }, +}; + +static const attr MAP_attr_list[] = { + { "CLEAR" T(N) }, + { "NAME" T(i) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType MAP_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(MAP) }, + { 0, 0 }, +}; + +static const attr MATH_attr_list[] = { + { "BOX" T(N) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType MATH_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(MATH) }, + { 0, 0 }, +}; + +static const attr META_attr_list[] = { + { "CONTENT" T(N) }, + { "HTTP-EQUIV" T(N) }, + { "NAME" T(N) }, + { "SCHEME" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType META_attr_type[] = { + { ATTR_TYPE(META) }, + { 0, 0 }, +}; + +static const attr NEXTID_attr_list[] = { + { "N" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType NEXTID_attr_type[] = { + { ATTR_TYPE(NEXTID) }, + { 0, 0 }, +}; + +static const attr NOTE_attr_list[] = { + { "CLEAR" T(N) }, + { "MD" T(N) }, + { "ROLE" T(x) }, + { "SRC" T(h) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType NOTE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(NOTE) }, + { 0, 0 }, +}; + +static const attr OBJECT_attr_list[] = { + { "ARCHIVE" T(N) }, + { "BORDER" T(N) }, + { "CLASSID" T(h) }, + { "CODEBASE" T(h) }, + { "CODETYPE" T(N) }, + { "DATA" T(h) }, + { "DECLARE" T(N) }, + { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, + { "ISMAP" T(N) }, + { "NAME" T(N) }, + { "NOTAB" T(N) }, + { "SHAPES" T(N) }, + { "STANDBY" T(N) }, + { "TABINDEX" T(N) }, + { "TYPE" T(N) }, + { "USEMAP" T(h) }, + { "VSPACE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OBJECT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(OBJECT) }, + { 0, 0 }, +}; + +static const attr OL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { "CONTINUE" T(N) }, + { "SEQNUM" T(N) }, + { "START" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(OL) }, + { 0, 0 }, +}; + +static const attr OPTION_attr_list[] = { + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "LABEL" T(N) }, + { "SELECTED" T(N) }, + { "SHAPE" T(N) }, + { "VALUE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OPTION_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(OPTION) }, + { 0, 0 }, +}; + +static const attr OVERLAY_attr_list[] = { + { "HEIGHT" T(N) }, + { "IMAGEMAP" T(N) }, + { "MD" T(N) }, + { "SRC" T(h) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { "X" T(N) }, + { "Y" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType OVERLAY_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(OVERLAY) }, + { 0, 0 }, +}; + +static const attr P_attr_list[] = { + { "CLEAR" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType P_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(P) }, + { 0, 0 }, +}; + +static const attr PARAM_attr_list[] = { + { "ACCEPT" T(N) }, + { "ACCEPT-CHARSET" T(N) }, + { "ACCEPT-ENCODING" T(N) }, + { "CLEAR" T(N) }, + { "DATA" T(N) }, + { "NAME" T(N) }, + { "OBJECT" T(N) }, + { "REF" T(N) }, + { "TYPE" T(N) }, + { "VALUE" T(N) }, + { "VALUEREF" T(N) }, + { "VALUETYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType PARAM_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(PARAM) }, + { 0, 0 }, +}; + +static const attr Q_attr_list[] = { + { "CITE" T(h) }, + { "CLEAR" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType Q_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(Q) }, + { 0, 0 }, +}; + +static const attr SCRIPT_attr_list[] = { + { "CHARSET" T(N) }, + { "CLEAR" T(N) }, + { "DEFER" T(N) }, + { "EVENT" T(N) }, + { "FOR" T(N) }, + { "LANGUAGE" T(N) }, + { "NAME" T(N) }, + { "SCRIPTENGINE" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType SCRIPT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(SCRIPT) }, + { 0, 0 }, +}; + +static const attr SELECT_attr_list[] = { + { "CLEAR" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "HEIGHT" 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) }, + { "TABINDEX" T(N) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType SELECT_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(SELECT) }, + { 0, 0 }, +}; + +static const attr STYLE_attr_list[] = { + { "MEDIA" T(N) }, + { "NOTATION" T(N) }, + { "TYPE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType STYLE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(STYLE) }, + { 0, 0 }, +}; + +static const attr TAB_attr_list[] = { + { "CLEAR" T(N) }, + { "DP" T(N) }, + { "INDENT" T(N) }, + { "TO" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TAB_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TAB) }, + { 0, 0 }, +}; + +static const attr TABLE_attr_list[] = { + { "BACKGROUND" T(h) }, + { "BORDER" T(N) }, + { "CELLPADDING" T(N) }, + { "CELLSPACING" T(N) }, + { "CLEAR" T(N) }, + { "COLS" T(N) }, + { "COLSPEC" T(N) }, + { "DP" T(N) }, + { "FRAME" T(N) }, + { "NOFLOW" T(N) }, + { "NOWRAP" T(N) }, + { "RULES" T(N) }, + { "SUMMARY" T(N) }, + { "UNITS" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TABLE_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TABLE) }, + { 0, 0 }, +}; + +static const attr TD_attr_list[] = { + { "ABBR" T(N) }, + { "AXES" T(N) }, + { "AXIS" T(N) }, + { "BACKGROUND" T(h) }, + { "CLEAR" T(N) }, + { "COLSPAN" T(N) }, + { "DP" T(N) }, + { "HEADERS" T(N) }, + { "HEIGHT" T(N) }, + { "NOWRAP" T(N) }, + { "ROWSPAN" T(N) }, + { "SCOPE" T(N) }, + { "WIDTH" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TD_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(TD) }, + { ATTR_TYPE(cellalign) }, + { 0, 0 }, +}; + +static const attr TEXTAREA_attr_list[] = { + { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, + { "CLEAR" T(N) }, + { "COLS" T(N) }, + { "DISABLED" T(N) }, + { "ERROR" T(N) }, + { "NAME" T(N) }, + { "NOTAB" T(N) }, + { "ONBLUR" T(N) }, + { "ONCHANGE" T(N) }, + { "ONFOCUS" T(N) }, + { "ONSELECT" T(N) }, + { "READONLY" T(N) }, + { "ROWS" T(N) }, + { "TABINDEX" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TEXTAREA_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(align) }, + { ATTR_TYPE(TEXTAREA) }, + { 0, 0 }, +}; + +static const attr TR_attr_list[] = { + { "CLEAR" T(N) }, + { "DP" T(N) }, + { "NOWRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType TR_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(events) }, + { ATTR_TYPE(cellalign) }, + { ATTR_TYPE(TR) }, + { 0, 0 }, +}; + +static const attr UL_attr_list[] = { + { "CLEAR" T(N) }, + { "COMPACT" T(N) }, + { "DINGBAT" T(N) }, + { "MD" T(N) }, + { "PLAIN" T(N) }, + { "SRC" T(h) }, + { "TYPE" T(N) }, + { "WRAP" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const AttrType UL_attr_type[] = { + { ATTR_TYPE(core) }, + { ATTR_TYPE(i18n) }, + { ATTR_TYPE(UL) }, + { 0, 0 }, +}; + + +/* attribute lists for the runtime (generated by dtd_util) */ +static const attr A_attr[] = { /* A attributes */ { "ACCESSKEY" T(N) }, { "CHARSET" T(N) }, { "CLASS" T(c) }, @@ -145,15 +1274,15 @@ static const attr a_attr[] = { /* A attributes */ { "COORDS" T(N) }, { "DIR" T(N) }, { "HREF" T(h) }, + { "HREFLANG" T(N) }, { "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) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "REL" T(N) }, { "REV" T(N) }, { "SHAPE" T(N) }, @@ -166,7 +1295,7 @@ static const attr a_attr[] = { /* A attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr address_attr[] = { /* ADDRESS attributes */ +static const attr ADDRESS_attr[] = { /* ADDRESS attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -178,7 +1307,7 @@ static const attr address_attr[] = { /* ADDRESS attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr applet_attr[] = { /* APPLET attributes */ +static const attr APPLET_attr[] = { /* APPLET attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "CLASS" T(c) }, @@ -199,7 +1328,8 @@ static const attr applet_attr[] = { /* APPLET attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr area_attr[] = { /* AREA attributes */ +static const attr AREA_attr[] = { /* AREA attributes */ + { "ACCESSKEY" T(N) }, { "ALT" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -210,9 +1340,8 @@ static const attr area_attr[] = { /* AREA attributes */ { "LANG" T(N) }, { "NOHREF" T(N) }, { "NOTAB" T(N) }, - { "ONCLICK" T(N) }, - { "ONMOUSEOUT" T(N) }, - { "ONMOUSEOVER" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "SHAPE" T(N) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, @@ -221,14 +1350,17 @@ static const attr area_attr[] = { /* AREA attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr base_attr[] = { /* BASE attributes */ +static const attr BASE_attr[] = { /* BASE attributes */ + { "CLASS" T(c) }, { "HREF" T(h) }, + { "ID" T(i) }, + { "STYLE" T(N) }, { "TARGET" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr bgsound_attr[] = { /* BGSOUND attributes */ +static const attr BGSOUND_attr[] = { /* BGSOUND attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -241,7 +1373,7 @@ static const attr bgsound_attr[] = { /* BGSOUND attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr body_attr[] = { /* BODY attributes */ +static const attr BODY_attr[] = { /* BODY attributes */ { "ALINK" T(N) }, { "BACKGROUND" T(h) }, { "BGCOLOR" T(N) }, @@ -260,7 +1392,7 @@ static const attr body_attr[] = { /* BODY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr bodytext_attr[] = { /* BODYTEXT attributes */ +static const attr BODYTEXT_attr[] = { /* BODYTEXT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DATA" T(N) }, @@ -278,7 +1410,7 @@ static const attr bodytext_attr[] = { /* BODYTEXT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr bq_attr[] = { /* BLOCKQUOTE attributes */ +static const attr BQ_attr[] = { /* BLOCKQUOTE attributes */ { "CITE" T(h) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -291,7 +1423,8 @@ static const attr bq_attr[] = { /* BLOCKQUOTE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr button_attr[] = { /* BUTTON attributes */ +static const attr BUTTON_attr[] = { /* BUTTON attributes */ + { "ACCESSKEY" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -309,7 +1442,7 @@ static const attr button_attr[] = { /* BUTTON attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr caption_attr[] = { /* CAPTION attributes */ +static const attr CAPTION_attr[] = { /* CAPTION attributes */ { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, @@ -322,7 +1455,7 @@ static const attr caption_attr[] = { /* CAPTION attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr col_attr[] = { /* COL attributes */ +static const attr COL_attr[] = { /* COL attributes */ { "ALIGN" T(N) }, { "CHAR" T(N) }, { "CHAROFF" T(N) }, @@ -339,7 +1472,7 @@ static const attr col_attr[] = { /* COL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr credit_attr[] = { /* CREDIT attributes */ +static const attr CREDIT_attr[] = { /* CREDIT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -350,7 +1483,19 @@ static const attr credit_attr[] = { /* CREDIT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr div_attr[] = { /* CENTER attributes */ +static const attr DEL_attr[] = { /* DEL attributes */ + { "CITE" T(N) }, + { "CLASS" T(c) }, + { "DATETIME" T(N) }, + { "DIR" T(N) }, + { "ID" T(i) }, + { "LANG" T(N) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, + { 0 T(N) } /* Terminate list */ +}; + +static const attr DIV_attr[] = { /* CENTER attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -362,7 +1507,7 @@ static const attr div_attr[] = { /* CENTER attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr dl_attr[] = { /* DL attributes */ +static const attr DL_attr[] = { /* DL attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -374,7 +1519,7 @@ static const attr dl_attr[] = { /* DL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr embed_attr[] = { /* EMBED attributes */ +static const attr EMBED_attr[] = { /* EMBED attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "BORDER" T(N) }, @@ -399,7 +1544,7 @@ static const attr embed_attr[] = { /* EMBED attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fieldset_attr[] = { /* FIELDSET attributes */ +static const attr FIELDSET_attr[] = { /* FIELDSET attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -410,7 +1555,7 @@ static const attr fieldset_attr[] = { /* FIELDSET attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fig_attr[] = { /* FIG attributes */ +static const attr FIG_attr[] = { /* FIG attributes */ { "ALIGN" T(N) }, { "BORDER" T(N) }, { "CLASS" T(c) }, @@ -431,7 +1576,7 @@ static const attr fig_attr[] = { /* FIG attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr fn_attr[] = { /* FN attributes */ +static const attr FN_attr[] = { /* FN attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -442,7 +1587,7 @@ static const attr fn_attr[] = { /* FN attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr font_attr[] = { /* BASEFONT attributes */ +static const attr FONT_attr[] = { /* BASEFONT attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COLOR" T(N) }, @@ -452,10 +1597,13 @@ static const attr font_attr[] = { /* BASEFONT attributes */ { "ID" T(i) }, { "LANG" T(N) }, { "SIZE" T(N) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr form_attr[] = { /* FORM attributes */ +static const attr FORM_attr[] = { /* FORM attributes */ + { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, { "ACTION" T(h) }, { "CLASS" T(c) }, @@ -465,6 +1613,7 @@ static const attr form_attr[] = { /* FORM attributes */ { "ID" T(i) }, { "LANG" T(N) }, { "METHOD" T(N) }, + { "ONRESET" T(N) }, { "ONSUBMIT" T(N) }, { "SCRIPT" T(N) }, { "STYLE" T(N) }, @@ -474,7 +1623,9 @@ static const attr form_attr[] = { /* FORM attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr frame_attr[] = { /* FRAME attributes */ +static const attr FRAME_attr[] = { /* FRAME attributes */ + { "CLASS" T(c) }, + { "FRAMEBORDER" T(N) }, { "ID" T(i) }, { "LONGDESC" T(h) }, { "MARGINHEIGHT" T(N) }, @@ -483,16 +1634,20 @@ static const attr frame_attr[] = { /* FRAME attributes */ { "NORESIZE" T(N) }, { "SCROLLING" T(N) }, { "SRC" T(h) }, + { "STYLE" T(N) }, + { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr frameset_attr[] = { /* FRAMESET attributes */ +static const attr FRAMESET_attr[] = { /* FRAMESET attributes */ { "COLS" T(N) }, + { "ONLOAD" T(N) }, + { "ONUNLOAD" T(N) }, { "ROWS" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr gen_attr[] = { /* ABBR attributes */ +static const attr GEN_attr[] = { /* ABBR attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -503,7 +1658,7 @@ static const attr gen_attr[] = { /* ABBR attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr h_attr[] = { /* H1 attributes */ +static const attr H_attr[] = { /* H1 attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -521,12 +1676,13 @@ static const attr h_attr[] = { /* H1 attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr hr_attr[] = { /* HR attributes */ +static const attr HR_attr[] = { /* HR attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, { "ID" T(i) }, + { "LANG" T(N) }, { "MD" T(N) }, { "NOSHADE" T(N) }, { "SIZE" T(N) }, @@ -537,8 +1693,9 @@ static const attr hr_attr[] = { /* HR attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr iframe_attr[] = { /* IFRAME attributes */ +static const attr IFRAME_attr[] = { /* IFRAME attributes */ { "ALIGN" T(N) }, + { "CLASS" T(c) }, { "FRAMEBORDER" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, @@ -549,11 +1706,12 @@ static const attr iframe_attr[] = { /* IFRAME attributes */ { "SCROLLING" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, + { "TITLE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr img_attr[] = { /* IMG attributes */ +static const attr IMG_attr[] = { /* IMG attributes */ { "ALIGN" T(N) }, { "ALT" T(N) }, { "BORDER" T(N) }, @@ -561,24 +1719,28 @@ static const attr img_attr[] = { /* IMG attributes */ { "CLEAR" T(N) }, { "DIR" T(N) }, { "HEIGHT" T(N) }, + { "HSPACE" T(N) }, { "ID" T(i) }, { "ISMAP" T(N) }, { "ISOBJECT" T(N) }, { "LANG" T(N) }, { "LONGDESC" T(h) }, { "MD" T(N) }, + { "NAME" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { "UNITS" T(N) }, { "USEMAP" T(h) }, + { "VSPACE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr input_attr[] = { /* INPUT attributes */ +static const attr INPUT_attr[] = { /* INPUT attributes */ { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "ALT" T(N) }, { "CHECKED" T(N) }, @@ -589,6 +1751,7 @@ static const attr input_attr[] = { /* INPUT attributes */ { "ERROR" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, + { "ISMAP" T(N) }, { "LANG" T(N) }, { "MAX" T(N) }, { "MAXLENGTH" T(N) }, @@ -598,32 +1761,35 @@ static const attr input_attr[] = { /* INPUT attributes */ { "NOTAB" T(N) }, { "ONBLUR" T(N) }, { "ONCHANGE" T(N) }, - { "ONCLICK" T(N) }, { "ONFOCUS" T(N) }, { "ONSELECT" T(N) }, + { "READONLY" T(N) }, { "SIZE" T(N) }, { "SRC" T(h) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, { "TITLE" T(N) }, { "TYPE" T(N) }, + { "USEMAP" T(N) }, { "VALUE" T(N) }, { "WIDTH" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr isindex_attr[] = { /* ISINDEX attributes */ +static const attr ISINDEX_attr[] = { /* ISINDEX attributes */ { "ACTION" T(h) }, + { "CLASS" T(c) }, { "DIR" T(N) }, { "HREF" T(h) }, { "ID" T(i) }, { "LANG" T(N) }, { "PROMPT" T(N) }, + { "STYLE" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr keygen_attr[] = { /* KEYGEN attributes */ +static const attr KEYGEN_attr[] = { /* KEYGEN attributes */ { "CHALLENGE" T(N) }, { "CLASS" T(c) }, { "DIR" T(N) }, @@ -635,7 +1801,7 @@ static const attr keygen_attr[] = { /* KEYGEN attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr label_attr[] = { /* LABEL attributes */ +static const attr LABEL_attr[] = { /* LABEL attributes */ { "ACCESSKEY" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -643,13 +1809,14 @@ static const attr label_attr[] = { /* LABEL attributes */ { "FOR" T(N) }, { "ID" T(i) }, { "LANG" T(N) }, - { "ONCLICK" T(N) }, + { "ONBLUR" T(N) }, + { "ONFOCUS" T(N) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr legend_attr[] = { /* LEGEND attributes */ +static const attr LEGEND_attr[] = { /* LEGEND attributes */ { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, @@ -662,7 +1829,7 @@ static const attr legend_attr[] = { /* LEGEND attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr li_attr[] = { /* LI attributes */ +static const attr LI_attr[] = { /* LI attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DINGBAT" T(N) }, @@ -679,11 +1846,14 @@ static const attr li_attr[] = { /* LI attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr link_attr[] = { /* LINK attributes */ +static const attr LINK_attr[] = { /* LINK attributes */ { "CHARSET" T(N) }, { "CLASS" T(c) }, + { "DIR" T(N) }, { "HREF" T(h) }, + { "HREFLANG" T(N) }, { "ID" T(i) }, + { "LANG" T(N) }, { "MEDIA" T(N) }, { "REL" T(N) }, { "REV" T(N) }, @@ -694,7 +1864,7 @@ static const attr link_attr[] = { /* LINK attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr map_attr[] = { /* MAP attributes */ +static const attr MAP_attr[] = { /* MAP attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -706,7 +1876,7 @@ static const attr map_attr[] = { /* MAP attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr math_attr[] = { /* MATH attributes */ +static const attr MATH_attr[] = { /* MATH attributes */ { "BOX" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -718,19 +1888,20 @@ static const attr math_attr[] = { /* MATH attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr meta_attr[] = { /* META attributes */ +static const attr META_attr[] = { /* META attributes */ { "CONTENT" T(N) }, { "HTTP-EQUIV" T(N) }, { "NAME" T(N) }, + { "SCHEME" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr nextid_attr[] = { /* NEXTID attributes */ +static const attr NEXTID_attr[] = { /* NEXTID attributes */ { "N" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr note_attr[] = { /* NOTE attributes */ +static const attr NOTE_attr[] = { /* NOTE attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, @@ -744,8 +1915,9 @@ static const attr note_attr[] = { /* NOTE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr object_attr[] = { /* OBJECT attributes */ +static const attr OBJECT_attr[] = { /* OBJECT attributes */ { "ALIGN" T(N) }, + { "ARCHIVE" T(N) }, { "BORDER" T(N) }, { "CLASS" T(c) }, { "CLASSID" T(h) }, @@ -773,7 +1945,7 @@ static const attr object_attr[] = { /* OBJECT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr ol_attr[] = { /* OL attributes */ +static const attr OL_attr[] = { /* OL attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -789,13 +1961,14 @@ static const attr ol_attr[] = { /* OL attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr option_attr[] = { /* OPTION attributes */ +static const attr OPTION_attr[] = { /* OPTION attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "DIR" T(N) }, { "DISABLED" T(N) }, { "ERROR" T(N) }, { "ID" T(i) }, + { "LABEL" T(N) }, { "LANG" T(N) }, { "SELECTED" T(N) }, { "SHAPE" T(N) }, @@ -805,7 +1978,7 @@ static const attr option_attr[] = { /* OPTION attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr overlay_attr[] = { /* OVERLAY attributes */ +static const attr OVERLAY_attr[] = { /* OVERLAY attributes */ { "CLASS" T(c) }, { "HEIGHT" T(N) }, { "ID" T(i) }, @@ -821,7 +1994,7 @@ static const attr overlay_attr[] = { /* OVERLAY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr p_attr[] = { /* P attributes */ +static const attr P_attr[] = { /* P attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -834,7 +2007,7 @@ static const attr p_attr[] = { /* P attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr param_attr[] = { /* PARAM attributes */ +static const attr PARAM_attr[] = { /* PARAM attributes */ { "ACCEPT" T(N) }, { "ACCEPT-CHARSET" T(N) }, { "ACCEPT-ENCODING" T(N) }, @@ -856,9 +2029,23 @@ static const attr param_attr[] = { /* PARAM attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr script_attr[] = { /* SCRIPT attributes */ +static const attr Q_attr[] = { /* Q attributes */ + { "CITE" T(h) }, + { "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 const attr SCRIPT_attr[] = { /* SCRIPT attributes */ + { "CHARSET" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, + { "DEFER" T(N) }, { "DIR" T(N) }, { "EVENT" T(N) }, { "FOR" T(N) }, @@ -874,7 +2061,7 @@ static const attr script_attr[] = { /* SCRIPT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr select_attr[] = { /* SELECT attributes */ +static const attr SELECT_attr[] = { /* SELECT attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -900,15 +2087,20 @@ static const attr select_attr[] = { /* SELECT attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr style_attr[] = { /* STYLE attributes */ +static const attr STYLE_attr[] = { /* STYLE attributes */ + { "CLASS" T(c) }, { "DIR" T(N) }, + { "ID" T(i) }, { "LANG" T(N) }, + { "MEDIA" T(N) }, { "NOTATION" T(N) }, + { "STYLE" T(N) }, { "TITLE" T(N) }, + { "TYPE" T(N) }, { 0 T(N) } /* Terminate list */ }; -static const attr tab_attr[] = { /* TAB attributes */ +static const attr TAB_attr[] = { /* TAB attributes */ { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -923,7 +2115,7 @@ static const attr tab_attr[] = { /* TAB attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr table_attr[] = { /* TABLE attributes */ +static const attr TABLE_attr[] = { /* TABLE attributes */ { "ALIGN" T(N) }, { "BACKGROUND" T(h) }, { "BORDER" T(N) }, @@ -949,7 +2141,8 @@ static const attr table_attr[] = { /* TABLE attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr td_attr[] = { /* TD attributes */ +static const attr TD_attr[] = { /* TD attributes */ + { "ABBR" T(N) }, { "ALIGN" T(N) }, { "AXES" T(N) }, { "AXIS" T(N) }, @@ -961,11 +2154,13 @@ static const attr td_attr[] = { /* TD attributes */ { "COLSPAN" T(N) }, { "DIR" T(N) }, { "DP" T(N) }, + { "HEADERS" T(N) }, { "HEIGHT" T(N) }, { "ID" T(i) }, { "LANG" T(N) }, { "NOWRAP" T(N) }, { "ROWSPAN" T(N) }, + { "SCOPE" T(N) }, { "STYLE" T(N) }, { "TITLE" T(N) }, { "VALIGN" T(N) }, @@ -973,8 +2168,9 @@ static const attr td_attr[] = { /* TD attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr textarea_attr[] = { /* TEXTAREA attributes */ +static const attr TEXTAREA_attr[] = { /* TEXTAREA attributes */ { "ACCEPT-CHARSET" T(N) }, + { "ACCESSKEY" T(N) }, { "ALIGN" T(N) }, { "CLASS" T(c) }, { "CLEAR" T(N) }, @@ -990,6 +2186,7 @@ static const attr textarea_attr[] = { /* TEXTAREA attributes */ { "ONCHANGE" T(N) }, { "ONFOCUS" T(N) }, { "ONSELECT" T(N) }, + { "READONLY" T(N) }, { "ROWS" T(N) }, { "STYLE" T(N) }, { "TABINDEX" T(N) }, @@ -997,7 +2194,7 @@ static const attr textarea_attr[] = { /* TEXTAREA attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr tr_attr[] = { /* TBODY attributes */ +static const attr TR_attr[] = { /* TBODY attributes */ { "ALIGN" T(N) }, { "CHAR" T(N) }, { "CHAROFF" T(N) }, @@ -1014,7 +2211,7 @@ static const attr tr_attr[] = { /* TBODY attributes */ { 0 T(N) } /* Terminate list */ }; -static const attr ul_attr[] = { /* DIR attributes */ +static const attr UL_attr[] = { /* DIR attributes */ { "CLASS" T(c) }, { "CLEAR" T(N) }, { "COMPACT" T(N) }, @@ -1185,131 +2382,133 @@ static const attr ul_attr[] = { /* DIR attributes */ #define NULL_HTTag NULL_HTTag_ #endif +#define ATTR_DATA(name) name##_attr, HTML_##name##_ATTRIBUTES, name##_attr_type + #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), ATTR_DATA(A), SGML_MIXED, T_A}, + { P(ABBR), ATTR_DATA(GEN), SGML_MIXED, T_ABBR}, + { P(ACRONYM), ATTR_DATA(GEN), SGML_MIXED, T_ACRONYM}, + { P(ADDRESS), ATTR_DATA(ADDRESS), SGML_MIXED, T_ADDRESS}, + { P(APPLET), ATTR_DATA(APPLET), SGML_MIXED, T_APPLET}, + { P(AREA), ATTR_DATA(AREA), SGML_EMPTY, T_AREA}, + { P(AU), ATTR_DATA(GEN), SGML_MIXED, T_AU}, + { P(AUTHOR), ATTR_DATA(GEN), SGML_MIXED, T_AUTHOR}, + { P(B), ATTR_DATA(GEN), SGML_MIXED, T_B}, + { P0(BANNER), ATTR_DATA(GEN), SGML_MIXED, T_BANNER}, + { P(BASE), ATTR_DATA(BASE), SGML_EMPTY, T_BASE}, + { P(BASEFONT), ATTR_DATA(FONT), SGML_EMPTY, T_BASEFONT}, + { P(BDO), ATTR_DATA(GEN), SGML_MIXED, T_BDO}, + { P(BGSOUND), ATTR_DATA(BGSOUND), SGML_EMPTY, T_BGSOUND}, + { P(BIG), ATTR_DATA(GEN), SGML_MIXED, T_BIG}, + { P(BLINK), ATTR_DATA(GEN), SGML_MIXED, T_BLINK}, + { P(BLOCKQUOTE), ATTR_DATA(BQ), SGML_MIXED, T_BLOCKQUOTE}, + { P(BODY), ATTR_DATA(BODY), SGML_MIXED, T_BODY}, + { P(BODYTEXT), ATTR_DATA(BODYTEXT), SGML_MIXED, T_BODYTEXT}, + { P(BQ), ATTR_DATA(BQ), SGML_MIXED, T_BQ}, + { P(BR), ATTR_DATA(GEN), SGML_EMPTY, T_BR}, + { P(BUTTON), ATTR_DATA(BUTTON), SGML_MIXED, T_BUTTON}, + { P(CAPTION), ATTR_DATA(CAPTION), SGML_MIXED, T_CAPTION}, + { P(CENTER), ATTR_DATA(DIV), SGML_MIXED, T_CENTER}, + { P(CITE), ATTR_DATA(GEN), SGML_MIXED, T_CITE}, + { P(CODE), ATTR_DATA(GEN), SGML_MIXED, T_CODE}, + { P(COL), ATTR_DATA(COL), SGML_EMPTY, T_COL}, + { P(COLGROUP), ATTR_DATA(COL), SGML_ELEMENT, T_COLGROUP}, + { P(COMMENT), ATTR_DATA(GEN), SGML_PCDATA, T_COMMENT}, + { P(CREDIT), ATTR_DATA(CREDIT), SGML_MIXED, T_CREDIT}, + { P(DD), ATTR_DATA(GEN), SGML_MIXED, T_DD}, + { P(DEL), ATTR_DATA(DEL), SGML_MIXED, T_DEL}, + { P(DFN), ATTR_DATA(GEN), SGML_MIXED, T_DFN}, + { P(DIR), ATTR_DATA(UL), SGML_MIXED, T_DIR}, + { P(DIV), ATTR_DATA(DIV), SGML_MIXED, T_DIV}, + { P(DL), ATTR_DATA(DL), SGML_MIXED, T_DL}, + { P(DLC), ATTR_DATA(DL), SGML_MIXED, T_DLC}, + { P(DT), ATTR_DATA(GEN), SGML_MIXED, T_DT}, + { P(EM), ATTR_DATA(GEN), SGML_MIXED, T_EM}, + { P(EMBED), ATTR_DATA(EMBED), SGML_EMPTY, T_EMBED}, + { P(FIELDSET), ATTR_DATA(FIELDSET), SGML_MIXED, T_FIELDSET}, + { P(FIG), ATTR_DATA(FIG), SGML_MIXED, T_FIG}, + { P(FN), ATTR_DATA(FN), SGML_MIXED, T_FN}, + { P(FONT), ATTR_DATA(FONT), SGML_MIXED, T_FONT}, + { P(FORM), ATTR_DATA(FORM), SGML_MIXED, T_FORM}, + { P(FRAME), ATTR_DATA(FRAME), SGML_EMPTY, T_FRAME}, + { P(FRAMESET), ATTR_DATA(FRAMESET), SGML_ELEMENT, T_FRAMESET}, + { P0(H1), ATTR_DATA(H), SGML_MIXED, T_H1}, + { P0(H2), ATTR_DATA(H), SGML_MIXED, T_H2}, + { P0(H3), ATTR_DATA(H), SGML_MIXED, T_H3}, + { P0(H4), ATTR_DATA(H), SGML_MIXED, T_H4}, + { P0(H5), ATTR_DATA(H), SGML_MIXED, T_H5}, + { P0(H6), ATTR_DATA(H), SGML_MIXED, T_H6}, + { P(HEAD), ATTR_DATA(GEN), SGML_ELEMENT, T_HEAD}, + { P(HR), ATTR_DATA(HR), SGML_EMPTY, T_HR}, + { P(HTML), ATTR_DATA(GEN), SGML_MIXED, T_HTML}, + { P(HY), ATTR_DATA(GEN), SGML_EMPTY, T_HY}, + { P(I), ATTR_DATA(GEN), SGML_MIXED, T_I}, + { P(IFRAME), ATTR_DATA(IFRAME), SGML_MIXED, T_IFRAME}, + { P(IMG), ATTR_DATA(IMG), SGML_EMPTY, T_IMG}, + { P(INPUT), ATTR_DATA(INPUT), SGML_EMPTY, T_INPUT}, + { P(INS), ATTR_DATA(DEL), SGML_MIXED, T_INS}, + { P(ISINDEX), ATTR_DATA(ISINDEX), SGML_EMPTY, T_ISINDEX}, + { P(KBD), ATTR_DATA(GEN), SGML_MIXED, T_KBD}, + { P(KEYGEN), ATTR_DATA(KEYGEN), SGML_EMPTY, T_KEYGEN}, + { P(LABEL), ATTR_DATA(LABEL), SGML_MIXED, T_LABEL}, + { P(LEGEND), ATTR_DATA(LEGEND), SGML_MIXED, T_LEGEND}, + { P(LH), ATTR_DATA(GEN), SGML_MIXED, T_LH}, + { P(LI), ATTR_DATA(LI), SGML_MIXED, T_LI}, + { P(LINK), ATTR_DATA(LINK), SGML_EMPTY, T_LINK}, + { P(LISTING), ATTR_DATA(GEN), SGML_LITTERAL,T_LISTING}, + { P(MAP), ATTR_DATA(MAP), SGML_ELEMENT, T_MAP}, + { P(MARQUEE), ATTR_DATA(GEN), SGML_MIXED, T_MARQUEE}, + { P(MATH), ATTR_DATA(MATH), SGML_PCDATA, T_MATH}, + { P(MENU), ATTR_DATA(UL), SGML_MIXED, T_MENU}, + { P(META), ATTR_DATA(META), SGML_EMPTY, T_META}, + { P(NEXTID), ATTR_DATA(NEXTID), SGML_EMPTY, T_NEXTID}, + { P(NOFRAMES), ATTR_DATA(GEN), SGML_MIXED, T_NOFRAMES}, + { P(NOTE), ATTR_DATA(NOTE), SGML_MIXED, T_NOTE}, + { P(OBJECT), ATTR_DATA(OBJECT), SGML_LITTERAL,T_OBJECT}, + { P(OL), ATTR_DATA(OL), SGML_MIXED, T_OL}, + { P(OPTION), ATTR_DATA(OPTION), SGML_PCDATA, T_OPTION}, + { P(OVERLAY), ATTR_DATA(OVERLAY), SGML_PCDATA, T_OVERLAY}, + { P(P), ATTR_DATA(P), SGML_MIXED, T_P}, + { P(PARAM), ATTR_DATA(PARAM), SGML_EMPTY, T_PARAM}, + { P(PLAINTEXT), ATTR_DATA(GEN), SGML_LITTERAL,T_PLAINTEXT}, + { P0(PRE), ATTR_DATA(GEN), SGML_MIXED, T_PRE}, + { P(Q), ATTR_DATA(Q), SGML_MIXED, T_Q}, + { P(S), ATTR_DATA(GEN), SGML_MIXED, T_S}, + { P(SAMP), ATTR_DATA(GEN), SGML_MIXED, T_SAMP}, + { P(SCRIPT), ATTR_DATA(SCRIPT), SGML_SCRIPT, T_SCRIPT}, + { P(SELECT), ATTR_DATA(SELECT), SGML_ELEMENT, T_SELECT}, + { P(SHY), ATTR_DATA(GEN), SGML_EMPTY, T_SHY}, + { P(SMALL), ATTR_DATA(GEN), SGML_MIXED, T_SMALL}, + { P(SPAN), ATTR_DATA(GEN), SGML_MIXED, T_SPAN}, + { P(SPOT), ATTR_DATA(GEN), SGML_EMPTY, T_SPOT}, + { P(STRIKE), ATTR_DATA(GEN), SGML_MIXED, T_STRIKE}, + { P(STRONG), ATTR_DATA(GEN), SGML_MIXED, T_STRONG}, + { P(STYLE), ATTR_DATA(STYLE), SGML_CDATA, T_STYLE}, + { P(SUB), ATTR_DATA(GEN), SGML_MIXED, T_SUB}, + { P(SUP), ATTR_DATA(GEN), SGML_MIXED, T_SUP}, + { P(TAB), ATTR_DATA(TAB), SGML_EMPTY, T_TAB}, + { P(TABLE), ATTR_DATA(TABLE), SGML_ELEMENT, T_TABLE}, + { P(TBODY), ATTR_DATA(TR), SGML_ELEMENT, T_TBODY}, + { P(TD), ATTR_DATA(TD), SGML_MIXED, T_TD}, + { P(TEXTAREA), ATTR_DATA(TEXTAREA), SGML_PCDATA, T_TEXTAREA}, + { P(TEXTFLOW), ATTR_DATA(BODYTEXT), SGML_MIXED, T_TEXTFLOW}, + { P(TFOOT), ATTR_DATA(TR), SGML_ELEMENT, T_TFOOT}, + { P(TH), ATTR_DATA(TD), SGML_MIXED, T_TH}, + { P(THEAD), ATTR_DATA(TR), SGML_ELEMENT, T_THEAD}, + { P(TITLE), ATTR_DATA(GEN), SGML_PCDATA, T_TITLE}, + { P(TR), ATTR_DATA(TR), SGML_MIXED, T_TR}, + { P(TT), ATTR_DATA(GEN), SGML_MIXED, T_TT}, + { P(U), ATTR_DATA(GEN), SGML_MIXED, T_U}, + { P(UL), ATTR_DATA(UL), SGML_MIXED, T_UL}, + { P(VAR), ATTR_DATA(GEN), SGML_MIXED, T_VAR}, + { P(WBR), ATTR_DATA(GEN), SGML_EMPTY, T_WBR}, + { P0(XMP), ATTR_DATA(GEN), 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), ATTR_DATA(OBJECT), SGML_MIXED, T_OBJECT_PCDATA}, }; /* *INDENT-ON* */ |