📄 htmlpdtd.c
字号:
/* HTMLPDTD.c** STATIC DTD FOR HTML (with frame support)**** (c) COPYRIGHT MIT 1995.** Please first read the full copyright statement in the file COPYRIGH.** @(#) $Id: HTMLPDTD.c,v 2.32 1999/07/22 23:57:44 raff Exp $**** 6 Nov 93 MD Increased size of img_attr array to make space** for terminator.*//* Library include files */#include "wwwsys.h"#include "HTUtils.h"#include "HTMLPDTD.h"struct _HTStructured { HTStructuredClass * isa; /* ... */};/*** ENTITY NAMES** This table must be matched exactly with ALL the translation tables*/PRIVATE const char* entities[HTML_ENTITIES] = {/* 00 */ "AElig", /* capital AE diphthong (ligature) */ "Aacute", /* capital A, acute accent */ "Acirc", /* capital A, circumflex accent */ "Agrave", /* capital A, grave accent */ "Aring", /* capital A, ring */ "Atilde", /* capital A, tilde */ "Auml", /* capital A, dieresis or umlaut mark */ "Ccedil", /* capital C, cedilla */ "ETH", /* capital Eth, Icelandic */ "Eacute", /* capital E, acute accent */ /* 10 */ "Ecirc", /* capital E, circumflex accent */ "Egrave", /* capital E, grave accent */ "Euml", /* capital E, dieresis or umlaut mark */ "Iacute", /* capital I, acute accent */ "Icirc", /* capital I, circumflex accent */ "Igrave", /* capital I, grave accent */ "Iuml", /* capital I, dieresis or umlaut mark */ "Ntilde", /* capital N, tilde */ "Oacute", /* capital O, acute accent */ "Ocirc", /* capital O, circumflex accent */ /* 20 */ "Ograve", /* capital O, grave accent */ "Oslash", /* capital O, slash */ "Otilde", /* capital O, tilde */ "Ouml", /* capital O, dieresis or umlaut mark */ "THORN", /* capital THORN, Icelandic */ "Uacute", /* capital U, acute accent */ "Ucirc", /* capital U, circumflex accent */ "Ugrave", /* capital U, grave accent */ "Uuml", /* capital U, dieresis or umlaut mark */ "Yacute", /* capital Y, acute accent */ /* 30 */ "aacute", /* small a, acute accent */ "acirc", /* small a, circumflex accent */ "acute", /* acute accent */ "aelig", /* small ae diphthong (ligature) */ "agrave", /* small a, grave accent */ "amp", /* ampersand */ "aring", /* small a, ring */ "atilde", /* small a, tilde */ "auml", /* small a, dieresis or umlaut mark */ "brvbar", /* broken vertical bar *//* 40 */ "ccedil", /* small c, cedilla */ "cedil", /* cedilla */ "cent", /* cent sign */ "copy", /* copyright */ "curren", /* general currency sign */ "deg", /* degree sign */ "divide", /* division sign */ "eacute", /* small e, acute accent */ "ecirc", /* small e, circumflex accent */ "egrave", /* small e, grave accent */ /* 50 */ "eth", /* small eth, Icelandic */ "euml", /* small e, dieresis or umlaut mark */ "frac12", /* fraction one-half */ "frac14", /* fraction one-fourth */ "frac34", /* fraction three-fourth */ "gt", /* greater than */ "iacute", /* small i, acute accent */ "icirc", /* small i, circumflex accent */ "iexcl", /* inverted exclamation */ "igrave", /* small i, grave accent */ /* 60 */ "iquest", /* inverted question mark */ "iuml", /* small i, dieresis or umlaut mark */ "laquo", /* left angle quote */ "lt", /* less than */ "macr", /* macron accent */ "micro", /* micro sign (greek mu) */ "middot", /* middle dot */ "nbsp", /* non breaking space */ "not", /* not sign */ "ntilde", /* small n, tilde */ /* 70 */ "oacute", /* small o, acute accent */ "ocirc", /* small o, circumflex accent */ "ograve", /* small o, grave accent */ "ordf", /* feminine ordinal */ "ordm", /* masculine ordinal */ "oslash", /* small o, slash */ "otilde", /* small o, tilde */ "ouml", /* small o, dieresis or umlaut mark */ "para", /* paragraph sign */ "plusmn", /* plus or minus *//* 80 */ "pound", /* pound sign */ "quot", /* double quote sign - June 1994 */ "raquo", /* right angle quote */ "reg", /* registered trademark */ "sect", /* section sign */ "shi", /* soft hyphen */ "sup1", /* superscript 1 */ "sup2", /* superscript 2 */ "sup3", /* superscript 3 */ "szlig", /* small sharp s, German (sz ligature) */ /* 90 */ "thorn", /* small thorn, Icelandic */ "times", /* multiply sign */ "uacute", /* small u, acute accent */ "ucirc", /* small u, circumflex accent */ "ugrave", /* small u, grave accent */ "uml", /* dieresis or umlaut mark */ "uuml", /* small u, dieresis or umlaut mark */ "yacute", /* small y, acute accent */ "yen", /* yen sign */ "yuml" /* small y, dieresis or umlaut mark */ /* 100 */};/*** ATTRIBUTE DEFINITION MACROS (see HTMLPDTD.h)*//* * redefine the macros, so that the "stringized" attribute name * is generated */#undef HTML_ATTR#define HTML_ATTR(t,a) { #a }#undef HTML_ATTRIBUTES#define HTML_ATTRIBUTES(t) { 0 }/*** ATTRIBUTE LISTS*/PRIVATE HTAttr no_attr[1] = {{ 0 }};PRIVATE HTAttr body_attr[HTML_BODY_ATTRIBUTES+1] = { /* to catch images */ HTML_ATTR(BODY,ALINK), 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)}; PRIVATE HTAttr frame_attr[HTML_FRAME_ATTRIBUTES+1] = { /* frame attributes */ HTML_ATTR(FRAME,CLASS), 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)};PRIVATE HTAttr frameset_attr[HTML_FRAMESET_ATTRIBUTES+1] = { /* frameset attributes */ HTML_ATTR(FRAMESET,CLASS), HTML_ATTR(FRAMESET,COLS), HTML_ATTR(FRAMESET,ID), HTML_ATTR(FRAMESET,ROWS), HTML_ATTR(FRAMESET,STYLE), HTML_ATTR(FRAMESET,TITLE), HTML_ATTRIBUTES(FRAMESET)};PRIVATE HTAttr a_attr[HTML_A_ATTRIBUTES+1] = { /* Anchor attributes */ HTML_ATTR(A,ACCESSKEY), 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)}; PRIVATE HTAttr applet_attr[HTML_APPLET_ATTRIBUTES+1] = { HTML_ATTR(APPLET,ALIGN), 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)};PRIVATE HTAttr area_attr[HTML_AREA_ATTRIBUTES+1] = { /* Area attributes */ HTML_ATTR(AREA,ACCESSKEY), 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)}; PRIVATE HTAttr base_attr[HTML_BASE_ATTRIBUTES+1] = { /* BASE attributes */ HTML_ATTR(BASE,HREF), HTML_ATTR(BASE,TARGET), HTML_ATTRIBUTES(BASE)}; PRIVATE HTAttr bdo_attr[HTML_BDO_ATTRIBUTES+1] = { HTML_ATTR(BDO,CLASS), HTML_ATTR(BDO,DIR), HTML_ATTR(BDO,ID), HTML_ATTR(BDO,LANG), HTML_ATTR(BDO,STYLE), HTML_ATTR(BDO,TITLE), HTML_ATTRIBUTES(BDO)};PRIVATE HTAttr bq_attr[HTML_BQ_ATTRIBUTES+1] = { HTML_ATTR(BQ,CITE), 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)};PRIVATE HTAttr br_attr[HTML_BR_ATTRIBUTES+1] = { HTML_ATTR(BR,CLASS), HTML_ATTR(BR,CLEAR), HTML_ATTR(BR,ID), HTML_ATTR(BR,STYLE), HTML_ATTR(BR,TITLE), HTML_ATTRIBUTES(BR)};PRIVATE HTAttr button_attr[HTML_BUTTON_ATTRIBUTES+1] = { HTML_ATTR(BUTTON,ACCESSKEY), 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),};PRIVATE HTAttr col_attr[HTML_COL_ATTRIBUTES+1] = { HTML_ATTR(COL,CLASS), 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)};PRIVATE HTAttr changes_attr[HTML_CHANGES_ATTRIBUTES+1] = { HTML_ATTR(CHANGES,CITE), 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)};PRIVATE HTAttr font_attr[HTML_FONT_ATTRIBUTES+1] = { HTML_ATTR(FONT,CLASS), 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)};PRIVATE HTAttr form_attr[HTML_FORM_ATTRIBUTES+1] = { HTML_ATTR(FORM,ACCEPT), { "ACCEPT-CHARSET" }, /* HTML_ATTR(FORM,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)};PRIVATE HTAttr gen_attr[HTML_GEN_ATTRIBUTES+1] = { /* General, for many things */ HTML_ATTR(GEN,CLASS), HTML_ATTR(GEN,DIR), HTML_ATTR(GEN,ID), HTML_ATTR(GEN,LANG), HTML_ATTR(GEN,STYLE), HTML_ATTR(GEN,TITLE), HTML_ATTRIBUTES(GEN)};PRIVATE HTAttr block_attr[HTML_BLOCK_ATTRIBUTES+1] = { /* DIV, SPAN, H1-H6 */ HTML_ATTR(BLOCK,ALIGN), 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)};PRIVATE HTAttr head_attr[HTML_HEAD_ATTRIBUTES+1] = { HTML_ATTR(HEAD,DIR), HTML_ATTR(HEAD,LANG), HTML_ATTR(HEAD,PROFILE), HTML_ATTRIBUTES(HEAD)};PRIVATE HTAttr hr_attr[HTML_HR_ATTRIBUTES+1] = { HTML_ATTR(HR,ALIGN), 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)};PRIVATE HTAttr html_attr[HTML_HTML_ATTRIBUTES+1] = { HTML_ATTR(HTML,DIR), HTML_ATTR(HTML,LANG), HTML_ATTR(HTML,VERSION), HTML_ATTRIBUTES(HTML)};PRIVATE HTAttr iframe_attr[HTML_IFRAME_ATTRIBUTES+1] = { HTML_ATTR(IFRAME,ALIGN), 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)};PRIVATE HTAttr img_attr[HTML_IMG_ATTRIBUTES+1] = { /* IMG attributes */ HTML_ATTR(IMG,ALIGN), 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)}; PRIVATE HTAttr input_attr[HTML_INPUT_ATTRIBUTES+1] = { HTML_ATTR(INPUT,ACCEPT), 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)};PRIVATE HTAttr isindex_attr[HTML_ISINDEX_ATTRIBUTES+1] = { HTML_ATTR(ISINDEX,CLASS), 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)};PRIVATE HTAttr label_attr[HTML_LABEL_ATTRIBUTES+1] = { HTML_ATTR(LABEL,ACCESSKEY), HTML_ATTR(LABEL,CLASS),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -