/* ** (c) COPYRIGHT MIT 1995. ** Please first read the full copyright statement in the file COPYRIGH. */
SGML purists should excuse the use of the term "DTD" in this file to represent DTD-related information which is not exactly a DTD itself. The C modular structure doesn't work very well here, as the dtd is partly in the .h and partly in the .c which are not very independent. Tant pis! There are a couple of HTML-specific utility routines also defined.
This module is a part of the W3C Sample Code Library.
#ifndef HTMLDTD_H
#define HTMLDTD_H
#include "HTStruct.h"
#include "SGML.h"
#ifdef __cplusplus
extern "C" { 
#endif 
The entity names are defined in the C file. This gives the number of them. Must Match all tables by element!
#define HTML_ENTITIES 100
These include tables in HTMLPDTD.c and code in HTML.c. Note that not everything from HTML 4.0 is there!
typedef enum _HTMLElement {
	HTML_A = 0,
	HTML_ABBR,
	HTML_ACRONYM,
	HTML_ADDRESS,
	HTML_APPLET,
	HTML_AREA,
	HTML_B,
	HTML_BASE,
	HTML_BASEFONT,
	HTML_BDO,
	HTML_BIG,
	HTML_BLOCKQUOTE,
	HTML_BODY,
	HTML_BR,
	HTML_BUTTON,
	HTML_CAPTION,
	HTML_CENTER,
	HTML_CITE,
	HTML_CODE,
	HTML_COL,
	HTML_COLGROUP,
	HTML_DD,
	HTML_DEL,
 	HTML_DFN,
	HTML_DIR,
	HTML_DIV,
 	HTML_DL,
 	HTML_DT,
	HTML_EM,
	HTML_FIELDSET,
	HTML_FONT,
	HTML_FORM,
	HTML_FRAME,
	HTML_FRAMESET,
	HTML_H1,
 	HTML_H2,
 	HTML_H3,
	HTML_H4,
	HTML_H5,
 	HTML_H6, 
	HTML_HEAD,
 	HTML_HR,
	HTML_HTML,
	HTML_I,
	HTML_IFRAME,
	HTML_IMG,
	HTML_INPUT,
	HTML_INS,
	HTML_ISINDEX,
 	HTML_KBD,
	HTML_LABEL,
	HTML_LEGEND,
 	HTML_LI,
 	HTML_LINK,
	HTML_MAP,
	HTML_MENU,
	HTML_META,
	HTML_NEXTID,	/* !!! */
	HTML_NOFRAMES,
	HTML_NOSCRIPT,
	HTML_OBJECT,
	HTML_OL,
	HTML_OPTGROUP,
	HTML_OPTION,
	HTML_P,
	HTML_PARAM,
	HTML_PRE,
	HTML_Q,
	HTML_S,
	HTML_SAMP,
	HTML_SCRIPT,
	HTML_SELECT,
	HTML_SMALL,
	HTML_SPAN,
	HTML_STRIKE,
	HTML_STRONG,
	HTML_STYLE,
	HTML_SUB,
	HTML_SUP,
	HTML_TABLE,
	HTML_TBODY,
	HTML_TD,
	HTML_TEXTAREA,
	HTML_TFOOT,
	HTML_TH,
	HTML_THEAD,
	HTML_TITLE,
	HTML_TR,
	HTML_TT,
	HTML_U,
	HTML_UL,
	HTML_VAR,
	HTML_ELEMENTS		/* This must be the last entry */
} HTMLElement;
Identifier is HTML_<element>_<attribute>. These must match the tables in HTMLPDTD.c!
/* Define an attribute as HTML__ */ #define HTML_ATTR(t,a) HTML_##t##_##a #define HTML_ATTRIBUTES(t) HTML_##t##_ATTRIBUTES 
enum _HTML_A_Attributes {
	HTML_ATTR(A,ACCESSKEY) = 0,
	HTML_ATTR(A,CHARSET),
	HTML_ATTR(A,CLASS),
	HTML_ATTR(A,COORDS),
	HTML_ATTR(A,DIR),
	HTML_ATTR(A,HREF),
	HTML_ATTR(A,HREFLANG),
	HTML_ATTR(A,ID),
	HTML_ATTR(A,NAME),
	HTML_ATTR(A,REL),
	HTML_ATTR(A,REV),
	HTML_ATTR(A,SHAPE),
	HTML_ATTR(A,STYLE),
	HTML_ATTR(A,TABINDEX),
	HTML_ATTR(A,TARGET),
	HTML_ATTR(A,TYPE),
	HTML_ATTR(A,TITLE),
	HTML_ATTRIBUTES(A)
};
enum _HTML_APPLET_Attributes {
	HTML_ATTR(APPLET,ALIGN) = 0,
	HTML_ATTR(APPLET,ALT),
	HTML_ATTR(APPLET,ARCHIVE),
	HTML_ATTR(APPLET,CLASS),
	HTML_ATTR(APPLET,CODE),
	HTML_ATTR(APPLET,CODEBASE),
	HTML_ATTR(APPLET,HEIGHT),
	HTML_ATTR(APPLET,HSPACE),
	HTML_ATTR(APPLET,ID),
	HTML_ATTR(APPLET,NAME),
	HTML_ATTR(APPLET,OBJECT),
	HTML_ATTR(APPLET,STYLE),
	HTML_ATTR(APPLET,TITLE),
	HTML_ATTR(APPLET,VSPACE),
	HTML_ATTR(APPLET,WIDTH),
	HTML_ATTRIBUTES(APPLET)
};
enum _HTML_AREA_Attributes {
	HTML_ATTR(AREA,ACCESSKEY) = 0,
	HTML_ATTR(AREA,ALT),
	HTML_ATTR(AREA,CLASS),
	HTML_ATTR(AREA,COORDS),
	HTML_ATTR(AREA,DIR),
	HTML_ATTR(AREA,HREF),
	HTML_ATTR(AREA,ID),
	HTML_ATTR(AREA,NAME),
	HTML_ATTR(AREA,NOHREF),
	HTML_ATTR(AREA,LANG),
	HTML_ATTR(AREA,SHAPE),
	HTML_ATTR(AREA,STYLE),
	HTML_ATTR(AREA,TABINDEX),
	HTML_ATTR(AREA,TARGET),
	HTML_ATTR(AREA,TITLE),
	HTML_ATTRIBUTES(AREA)
};
enum _HTML_BASE_Attributes {
	HTML_ATTR(BASE,HREF) = 0,
	HTML_ATTR(BASE,TARGET),
	HTML_ATTRIBUTES(BASE)
};
enum _HTML_BDO_Attributes {
	HTML_ATTR(BDO,CLASS) = 0,
	HTML_ATTR(BDO,DIR),
	HTML_ATTR(BDO,ID),
	HTML_ATTR(BDO,LANG),
	HTML_ATTR(BDO,STYLE),
	HTML_ATTR(BDO,TITLE),
	HTML_ATTRIBUTES(BDO)
};
enum _HTML_BQ_Attributes {
	HTML_ATTR(BQ,CITE) = 0,
	HTML_ATTR(BQ,CLASS),
	HTML_ATTR(BQ,DIR),
	HTML_ATTR(BQ,ID),
	HTML_ATTR(BQ,LANG),
	HTML_ATTR(BQ,STYLE),
	HTML_ATTR(BQ,TITLE),
	HTML_ATTRIBUTES(BQ)
};
enum _HTML_BODY_Attributes {
	HTML_ATTR(BODY,ALINK) = 0,
	HTML_ATTR(BODY,BACKGROUND),
	HTML_ATTR(BODY,BGCOLOR),
	HTML_ATTR(BODY,CLASS),
	HTML_ATTR(BODY,DIR),
	HTML_ATTR(BODY,ID),
	HTML_ATTR(BODY,LANG),
	HTML_ATTR(BODY,LINK),
	HTML_ATTR(BODY,STYLE),
	HTML_ATTR(BODY,TEXT),
	HTML_ATTR(BODY,TITLE),
	HTML_ATTR(BODY,VLINK),
	HTML_ATTRIBUTES(BODY)
};
enum _HTML_BR_Attributes {
	HTML_ATTR(BR,CLASS) = 0,
	HTML_ATTR(BR,CLEAR),
	HTML_ATTR(BR,ID),
	HTML_ATTR(BR,STYLE),
	HTML_ATTR(BR,TITLE),
	HTML_ATTRIBUTES(BR)
};
enum _HTML_BUTTON_Attributes {
	HTML_ATTR(BUTTON,ACCESSKEY) = 0,
	HTML_ATTR(BUTTON,CLASS),
	HTML_ATTR(BUTTON,DIR),
	HTML_ATTR(BUTTON,DISABLED),
	HTML_ATTR(BUTTON,ID),
	HTML_ATTR(BUTTON,LANG),
	HTML_ATTR(BUTTON,NAME),
	HTML_ATTR(BUTTON,STYLE),
	HTML_ATTR(BUTTON,TABINDEX),
	HTML_ATTR(BUTTON,TITLE),
	HTML_ATTR(BUTTON,TYPE),
	HTML_ATTR(BUTTON,VALUE),
	HTML_ATTRIBUTES(BUTTON)
};
enum _HTML_COL_Attributes {
	HTML_ATTR(COL,CLASS) = 0,
	HTML_ATTR(COL,DIR),
	HTML_ATTR(COL,ID),
	HTML_ATTR(COL,LANG),
	HTML_ATTR(COL,SPAN),
	HTML_ATTR(COL,STYLE),
	HTML_ATTR(COL,TITLE),
	HTML_ATTR(COL,WIDTH),
	HTML_ATTRIBUTES(COL)
};
enum _HTML_CHANGES_Attributes {
	HTML_ATTR(CHANGES,CITE) = 0,
	HTML_ATTR(CHANGES,CLASS),
	HTML_ATTR(CHANGES,DATETIME),
	HTML_ATTR(CHANGES,DIR),
	HTML_ATTR(CHANGES,ID),
	HTML_ATTR(CHANGES,LANG),
	HTML_ATTR(CHANGES,STYLE),
	HTML_ATTR(CHANGES,TITLE),
	HTML_ATTRIBUTES(CHANGES)
};
enum _HTML_FONT_Attributes {
	HTML_ATTR(FONT,CLASS) = 0,
	HTML_ATTR(FONT,COLOR),
	HTML_ATTR(FONT,DIR),
	HTML_ATTR(FONT,FACE),
	HTML_ATTR(FONT,ID),
	HTML_ATTR(FONT,LANG),
	HTML_ATTR(FONT,SIZE),
	HTML_ATTR(FONT,STYLE),
	HTML_ATTR(FONT,TITLE),
	HTML_ATTRIBUTES(FONT)
};
enum _HTML_FORM_Attributes {
	HTML_ATTR(FORM,ACCEPT) = 0,
	HTML_ATTR(FORM,ACCEPT_CHARSET), /* { "ACCEPT-CHARSET" } */
	HTML_ATTR(FORM,ACTION),
	HTML_ATTR(FORM,CLASS),
	HTML_ATTR(FORM,DIR),
	HTML_ATTR(FORM,ENCTYPE),
	HTML_ATTR(FORM,ID),
	HTML_ATTR(FORM,LANG),
	HTML_ATTR(FORM,METHOD),
	HTML_ATTR(FORM,STYLE),
	HTML_ATTR(FORM,TARGET),
	HTML_ATTR(FORM,TITLE),
	HTML_ATTRIBUTES(FORM)
};
enum _HTML_FRAME_Attributes {
	HTML_ATTR(FRAME,CLASS) = 0,
	HTML_ATTR(FRAME,FRAMEBORDER),
	HTML_ATTR(FRAME,ID),
	HTML_ATTR(FRAME,NAME),
	HTML_ATTR(FRAME,MARGINHEIGHT),
	HTML_ATTR(FRAME,MARGINWIDTH),
	HTML_ATTR(FRAME,NORESIZE),
	HTML_ATTR(FRAME,LONGDESC),
	HTML_ATTR(FRAME,SCROLLING),
	HTML_ATTR(FRAME,SRC),
	HTML_ATTR(FRAME,STYLE),
	HTML_ATTR(FRAME,TARGET),
	HTML_ATTR(FRAME,TITLE),
	HTML_ATTRIBUTES(FRAME)
};
enum _HTML_FRAMESET_Attributes {
	HTML_ATTR(FRAMESET,CLASS) = 0,
	HTML_ATTR(FRAMESET,COLS),
	HTML_ATTR(FRAMESET,ID),
	HTML_ATTR(FRAMESET,ROWS),
	HTML_ATTR(FRAMESET,STYLE),
	HTML_ATTR(FRAMESET,TITLE),
	HTML_ATTRIBUTES(FRAMESET)
};
enum _HTML_GEN_Attributes {
	HTML_ATTR(GEN,CLASS) = 0,
	HTML_ATTR(GEN,DIR),
	HTML_ATTR(GEN,ID),
	HTML_ATTR(GEN,LANG),
	HTML_ATTR(GEN,STYLE),
	HTML_ATTR(GEN,TITLE),
	HTML_ATTRIBUTES(GEN)
};
enum _HTML_BLOCK_Attributes {
	HTML_ATTR(BLOCK,ALIGN) = 0,
	HTML_ATTR(BLOCK,CLASS),
	HTML_ATTR(BLOCK,DIR),
	HTML_ATTR(BLOCK,ID),
	HTML_ATTR(BLOCK,LANG),
	HTML_ATTR(BLOCK,STYLE),
	HTML_ATTR(BLOCK,TITLE),
	HTML_ATTRIBUTES(BLOCK)
};
enum _HTML_HEAD_Attributes {
	HTML_ATTR(HEAD,DIR) = 0,
	HTML_ATTR(HEAD,LANG),
	HTML_ATTR(HEAD,PROFILE),
	HTML_ATTRIBUTES(HEAD)
};
enum _HTML_HR_Attributes {
	HTML_ATTR(HR,ALIGN) = 0,
	HTML_ATTR(HR,CLASS),
	HTML_ATTR(HR,DIR),
	HTML_ATTR(HR,ID),
	HTML_ATTR(HR,LANG),
	HTML_ATTR(HR,NOSHADE),
	HTML_ATTR(HR,SIZE),
	HTML_ATTR(HR,STYLE),
	HTML_ATTR(HR,TITLE),
	HTML_ATTR(HR,WIDTH),
	HTML_ATTRIBUTES(HR)
};
enum _HTML_HTML_Attributes {
	HTML_ATTR(HTML,DIR) = 0,
	HTML_ATTR(HTML,LANG),
	HTML_ATTR(HTML,VERSION),
	HTML_ATTRIBUTES(HTML)
};
enum _HTML_IFRAME_Attributes {
	HTML_ATTR(IFRAME,ALIGN) = 0,
	HTML_ATTR(IFRAME,CLASS),
	HTML_ATTR(IFRAME,FRAMEBORDER),
	HTML_ATTR(IFRAME,HEIGHT),
	HTML_ATTR(IFRAME,ID),
	HTML_ATTR(IFRAME,LONGDESC),
	HTML_ATTR(IFRAME,MARGINHEIGHT),
	HTML_ATTR(IFRAME,MARGINWIDTH),
	HTML_ATTR(IFRAME,NAME),
	HTML_ATTR(IFRAME,SCROLLING),
	HTML_ATTR(IFRAME,SRC),
	HTML_ATTR(IFRAME,STYLE),
	HTML_ATTR(IFRAME,TARGET),
	HTML_ATTR(IFRAME,TITLE),
	HTML_ATTR(IFRAME,WIDTH),
	HTML_ATTRIBUTES(IFRAME)
};
enum _HTML_IMG_Attributes {
	HTML_ATTR(IMG,ALIGN) = 0,
	HTML_ATTR(IMG,ALT),
	HTML_ATTR(IMG,BORDER),
	HTML_ATTR(IMG,CLASS),
	HTML_ATTR(IMG,DIR),
	HTML_ATTR(IMG,HEIGHT),
	HTML_ATTR(IMG,HSPACE),
	HTML_ATTR(IMG,ID),
	HTML_ATTR(IMG,ISMAP),
	HTML_ATTR(IMG,LANG),
	HTML_ATTR(IMG,LONGDESC),
	HTML_ATTR(IMG,SRC),
	HTML_ATTR(IMG,STYLE),
	HTML_ATTR(IMG,TITLE),
	HTML_ATTR(IMG,USEMAP),
	HTML_ATTR(IMG,VSPACE),
	HTML_ATTR(IMG,WIDTH),
	HTML_ATTRIBUTES(IMG)
};
enum _HTML_INPUT_Attributes {
	HTML_ATTR(INPUT,ACCEPT) = 0,
	HTML_ATTR(INPUT,ACCESSKEY),
	HTML_ATTR(INPUT,ALIGN),
	HTML_ATTR(INPUT,ALT),
	HTML_ATTR(INPUT,CHECKED),
	HTML_ATTR(INPUT,CLASS),
	HTML_ATTR(INPUT,DIR),
	HTML_ATTR(INPUT,DISABLED),
	HTML_ATTR(INPUT,ID),
	HTML_ATTR(INPUT,LANG),
	HTML_ATTR(INPUT,MAXLENGTH),
	HTML_ATTR(INPUT,NAME),
	HTML_ATTR(INPUT,READONLY),
	HTML_ATTR(INPUT,SIZE),
	HTML_ATTR(INPUT,SRC),
	HTML_ATTR(INPUT,STYLE),
	HTML_ATTR(INPUT,TABINDEX),
	HTML_ATTR(INPUT,TITLE),
	HTML_ATTR(INPUT,TYPE),
	HTML_ATTR(INPUT,USEMAP),
	HTML_ATTR(INPUT,VALUE),
	HTML_ATTRIBUTES(INPUT)
};
enum _HTML_ISINDEX_Attributes {
	HTML_ATTR(ISINDEX,CLASS) = 0,
	HTML_ATTR(ISINDEX,DIR),
	HTML_ATTR(ISINDEX,ID),
	HTML_ATTR(ISINDEX,LANG),
	HTML_ATTR(ISINDEX,PROMPT),
	HTML_ATTR(ISINDEX,STYLE),
	HTML_ATTR(ISINDEX,TITLE),
	HTML_ATTRIBUTES(ISINDEX)
};
enum _HTML_LABEL_Attributes {
	HTML_ATTR(LABEL,ACCESSKEY) = 0,
	HTML_ATTR(LABEL,CLASS),
	HTML_ATTR(LABEL,DIR),
	HTML_ATTR(LABEL,FOR),
	HTML_ATTR(LABEL,ID),
	HTML_ATTR(LABEL,LANG),
	HTML_ATTR(LABEL,STYLE),
	HTML_ATTR(LABEL,TITLE),
	HTML_ATTRIBUTES(LABEL)
};
enum _HTML_LEGEND_Attributes {
    HTML_ATTR(LEGEND,ACCESSKEY) = 0,
    HTML_ATTR(LEGEND,ALIGN),
	HTML_ATTR(LEGEND,CLASS),
	HTML_ATTR(LEGEND,DIR),
	HTML_ATTR(LEGEND,ID),
	HTML_ATTR(LEGEND,LANG),
	HTML_ATTR(LEGEND,STYLE),
	HTML_ATTR(LEGEND,TITLE),
	HTML_ATTRIBUTES(LEGEND)
};
enum _HTML_LI_Attributes {
	HTML_ATTR(LI,CLASS) = 0,
	HTML_ATTR(LI,COMPACT),
	HTML_ATTR(LI,DIR),
	HTML_ATTR(LI,ID),
	HTML_ATTR(LI,LANG),
	HTML_ATTR(LI,STYLE),
	HTML_ATTR(LI,TITLE),
	HTML_ATTR(LI,TYPE),
	HTML_ATTR(LI,VALUE),
	HTML_ATTRIBUTES(LI)
};
enum _HTML_LINK_Attributes {
	HTML_ATTR(LINK,CHARSET) = 0,
	HTML_ATTR(LINK,CLASS),
	HTML_ATTR(LINK,DIR),
	HTML_ATTR(LINK,HREF),
	HTML_ATTR(LINK,HREFLANG),
	HTML_ATTR(LINK,ID),
	HTML_ATTR(LINK,LANG),
	HTML_ATTR(LINK,MEDIA),
	HTML_ATTR(LINK,REL),
	HTML_ATTR(LINK,REV),
	HTML_ATTR(LINK,STYLE),
	HTML_ATTR(LINK,TARGET),
	HTML_ATTR(LINK,TITLE),
	HTML_ATTR(LINK,TYPE),
	HTML_ATTRIBUTES(LINK)
};
enum _HTML_MAP_Attributes {
	HTML_ATTR(MAP,CLASS) = 0,
	HTML_ATTR(MAP,DIR),
	HTML_ATTR(MAP,ID),
	HTML_ATTR(MAP,LANG),
	HTML_ATTR(MAP,NAME),
	HTML_ATTR(MAP,STYLE),
	HTML_ATTR(MAP,TITLE),
	HTML_ATTRIBUTES(MAP)
};
enum _HTML_META_Attributes {
	HTML_ATTR(META,CONTENT) = 0,
	HTML_ATTR(META,DIR),
	HTML_ATTR(META,HTTP_EQUIV),    /* { "HTTP-EQUIV" ) */
	HTML_ATTR(META,LANG),
	HTML_ATTR(META,NAME),
	HTML_ATTR(META,SCHEME),
	HTML_ATTRIBUTES(META)
};	
#define HTML_NEXTID_ATTRIBUTES 1 #define HTML_NEXTID_N 0
enum _HTML_OBJECT_Attributes {
	HTML_ATTR(OBJECT,ALIGN) = 0,
	HTML_ATTR(OBJECT,ARCHIVE),
	HTML_ATTR(OBJECT,BORDER),
	HTML_ATTR(OBJECT,CLASS),
	HTML_ATTR(OBJECT,CLASSID),
	HTML_ATTR(OBJECT,CODEBASE),
	HTML_ATTR(OBJECT,CODETYPE),
	HTML_ATTR(OBJECT,DATA),
	HTML_ATTR(OBJECT,DECLARE),
	HTML_ATTR(OBJECT,DIR),
	HTML_ATTR(OBJECT,HEIGHT),
	HTML_ATTR(OBJECT,HSPACE),
	HTML_ATTR(OBJECT,ID),
	HTML_ATTR(OBJECT,LANG),
	HTML_ATTR(OBJECT,NAME),
	HTML_ATTR(OBJECT,STANDBY),
	HTML_ATTR(OBJECT,STYLE),
	HTML_ATTR(OBJECT,TABINDEX),
	HTML_ATTR(OBJECT,TITLE),
	HTML_ATTR(OBJECT,TYPE),
	HTML_ATTR(OBJECT,USEMAP),
	HTML_ATTR(OBJECT,VSPACE),
	HTML_ATTR(OBJECT,WIDTH),
	HTML_ATTRIBUTES(OBJECT)
};
enum _HTML_OL_Attributes {
	HTML_ATTR(OL,CLASS) = 0,
	HTML_ATTR(OL,COMPACT),
	HTML_ATTR(OL,DIR),
	HTML_ATTR(OL,ID),
	HTML_ATTR(OL,LANG),
	HTML_ATTR(OL,START),
	HTML_ATTR(OL,STYLE),
	HTML_ATTR(OL,TITLE),
	HTML_ATTR(OL,TYPE),
	HTML_ATTRIBUTES(OL)
};
enum _HTML_OPTGROUP_Attributes {
	HTML_ATTR(OPTGROUP,CLASS) = 0,
	HTML_ATTR(OPTGROUP,DISABLED),
	HTML_ATTR(OPTGROUP,DIR),
	HTML_ATTR(OPTGROUP,ID),
	HTML_ATTR(OPTGROUP,LABEL),
	HTML_ATTR(OPTGROUP,LANG),
	HTML_ATTR(OPTGROUP,STYLE),
	HTML_ATTR(OPTGROUP,TITLE),
	HTML_ATTRIBUTES(OPTGROUP)
};
enum _HTML_OPTION_Attributes {
	HTML_ATTR(OPTION,CLASS) = 0,
	HTML_ATTR(OPTION,DISABLED),
	HTML_ATTR(OPTION,DIR),
	HTML_ATTR(OPTION,ID),
	HTML_ATTR(OPTION,LABEL),
	HTML_ATTR(OPTION,LANG),
	HTML_ATTR(OPTION,SELECTED),
	HTML_ATTR(OPTION,STYLE),
	HTML_ATTR(OPTION,TITLE),
	HTML_ATTR(OPTION,VALUE),
	HTML_ATTRIBUTES(OPTION)
};
enum _HTML_PARAM_Attributes {
	HTML_ATTR(PARAM,ID) = 0,
	HTML_ATTR(PARAM,NAME),
	HTML_ATTR(PARAM,TYPE),
	HTML_ATTR(PARAM,VALUE),
	HTML_ATTR(PARAM,VALUETYPE),
	HTML_ATTRIBUTES(PARAM)
};
enum _HTML_PRE_Attributes {
	HTML_ATTR(PRE,CLASS) = 0,
	HTML_ATTR(PRE,DIR),
	HTML_ATTR(PRE,ID),
	HTML_ATTR(PRE,LANG),
	HTML_ATTR(PRE,STYLE),
	HTML_ATTR(PRE,TITLE),
	HTML_ATTR(PRE,WIDTH),
	HTML_ATTRIBUTES(PRE)
};
enum _HTML_SCRIPT_Attributes {
	HTML_ATTR(SCRIPT,CHARSET) = 0,
	HTML_ATTR(SCRIPT,DEFER),
	HTML_ATTR(SCRIPT,LANGUAGE),
	HTML_ATTR(SCRIPT,SRC),
	HTML_ATTR(SCRIPT,TYPE),
	HTML_ATTRIBUTES(SCRIPT)
};
enum _HTML_SELECT_Attributes {
	HTML_ATTR(SELECT,CLASS) = 0,
	HTML_ATTR(SELECT,DIR),
	HTML_ATTR(SELECT,DISABLED),
	HTML_ATTR(SELECT,ID),
	HTML_ATTR(SELECT,LANG),
	HTML_ATTR(SELECT,MULTIPLE),
	HTML_ATTR(SELECT,NAME),
	HTML_ATTR(SELECT,SIZE),
	HTML_ATTR(SELECT,STYLE),
	HTML_ATTR(SELECT,TABINDEX),
	HTML_ATTR(SELECT,TITLE),
	HTML_ATTRIBUTES(SELECT)
};
enum _HTML_STYLE_Attributes {
	HTML_ATTR(STYLE,DIR) = 0,
	HTML_ATTR(STYLE,LANG),
	HTML_ATTR(STYLE,MEDIA),
	HTML_ATTR(STYLE,TITLE),
	HTML_ATTR(STYLE,TYPE),
	HTML_ATTRIBUTES(STYLE)
};
enum _HTML_TABLE_Attributes {
	HTML_ATTR(TABLE,ALIGN) = 0,
	HTML_ATTR(TABLE,BGCOLOR),
	HTML_ATTR(TABLE,BORDER),
	HTML_ATTR(TABLE,CELLPADDING),
	HTML_ATTR(TABLE,CELLSPACING),
	HTML_ATTR(TABLE,CLASS),
	HTML_ATTR(TABLE,DIR),
	HTML_ATTR(TABLE,FRAME),
	HTML_ATTR(TABLE,ID),
	HTML_ATTR(TABLE,LANG),
	HTML_ATTR(TABLE,RULES),
	HTML_ATTR(TABLE,SUMMARY),
	HTML_ATTR(TABLE,STYLE),
	HTML_ATTR(TABLE,TITLE),
	HTML_ATTR(TABLE,WIDTH),
	HTML_ATTRIBUTES(TABLE)
};
enum _HTML_TELE_Attributes {
	HTML_ATTR(TELE,ALIGN) = 0,
	HTML_ATTR(TELE,CHAR),
	HTML_ATTR(TELE,CHAROFF),
	HTML_ATTR(TELE,CLASS),
	HTML_ATTR(TELE,DIR),
	HTML_ATTR(TELE,ID),
	HTML_ATTR(TELE,LANG),
	HTML_ATTR(TELE,STYLE),
	HTML_ATTR(TELE,TITLE),
	HTML_ATTR(TELE,VALIGN),
	HTML_ATTRIBUTES(TELE)
};
enum _HTML_TD_Attributes {
	HTML_ATTR(TD,ABBR) = 0,
	HTML_ATTR(TD,ALIGN),
	HTML_ATTR(TD,AXIS),
	HTML_ATTR(TD,BGCOLOR),
	HTML_ATTR(TD,CHAR),
	HTML_ATTR(TD,CHAROFF),
	HTML_ATTR(TD,CLASS),
	HTML_ATTR(TD,COLSPAN),
	HTML_ATTR(TD,DIR),
	HTML_ATTR(TD,ID),
	HTML_ATTR(TD,HEADERS),
	HTML_ATTR(TD,HEIGHT),
	HTML_ATTR(TD,LANG),
	HTML_ATTR(TD,NOWRAP),
	HTML_ATTR(TD,ROWSPAN),
	HTML_ATTR(TD,SCOPE),
	HTML_ATTR(TD,STYLE),
	HTML_ATTR(TD,TITLE),
	HTML_ATTR(TD,VALIGN),
	HTML_ATTR(TD,WIDTH),
	HTML_ATTRIBUTES(TD)
};
enum _HTML_TEXTAREA_Attributes {
	HTML_ATTR(TEXTAREA,CLASS) = 0,
	HTML_ATTR(TEXTAREA,COLS),
	HTML_ATTR(TEXTAREA,DIR),
	HTML_ATTR(TEXTAREA,DISABLED),
	HTML_ATTR(TEXTAREA,ID),
	HTML_ATTR(TEXTAREA,LANG),
	HTML_ATTR(TEXTAREA,NAME),
	HTML_ATTR(TEXTAREA,READONLY),
	HTML_ATTR(TEXTAREA,ROWS),
	HTML_ATTR(TEXTAREA,STYLE),
	HTML_ATTR(TEXTAREA,TABINDEX),
	HTML_ATTR(TEXTAREA,TITLE),
	HTML_ATTRIBUTES(TEXTAREA)
};
enum _HTML_TITLE_Attributes {
	HTML_ATTR(TITLE,DIR) = 0,
	HTML_ATTR(TITLE,LANG),
	HTML_ATTRIBUTES(TITLE)
};
enum _HTML_UL_Attributes {
	HTML_ATTR(UL,CLASS) = 0,
	HTML_ATTR(UL,COMPACT),
	HTML_ATTR(UL,DIR),
	HTML_ATTR(UL,ID),
	HTML_ATTR(UL,LANG),
	HTML_ATTR(UL,STYLE),
	HTML_ATTR(UL,TITLE),
	HTML_ATTR(UL,TYPE),
	HTML_ATTRIBUTES(UL)
};
extern SGML_dtd * HTML_dtd (void); extern BOOL HTML_setDtd (const SGML_dtd * dtd);
It is kinda convenient to have a particular routine for starting an anchor element, as everything else for HTML is simple anyway.
extern void HTStartAnchor ( HTStructured * targetstream, const char * name, const char * href);
This is the same idea but for images
extern void HTMLPutImg (HTStructured *obj, const char *src, const char *alt, const char *align);
This is another convenience routine, for specifying the next ID to be used by an editor in the series z1. z2,...
extern void HTNextID (HTStructured * targetStream, const char * s);
#ifdef __cplusplus } #endif #endif /* HTMLDTD_H */