📄 htmlpdtd.c
字号:
PRIVATE HTAttr meta_attr[HTML_META_ATTRIBUTES+1] = { { "CONTENT"}, { "HTTP-EQUIV"}, { "NAME"}, { "SCHEME" }, { 0 } /* Terminate list */}; PRIVATE HTAttr nextid_attr[HTML_NEXTID_ATTRIBUTES+1] = { { "N" }, { 0 } /* Terminate list */};PRIVATE HTAttr note_attr[HTML_NOTE_ATTRIBUTES+1] = { /* Footnotes etc etc */ { "ID" }, { "INDEX" }, { "LANG" }, { "ROLE" }, { 0 } /* terminate list */};PRIVATE HTAttr option_attr[HTML_OPTION_ATTRIBUTES+1] = { { "DISABLED" }, { "LANG" }, { "SELECTED" }, { 0 }};PRIVATE HTAttr render_attr[HTML_RENDER_ATTRIBUTES+1] = { { "STYLE" }, { "TAG" }, { 0 } /* Terminate list */};PRIVATE HTAttr select_attr[HTML_SELECT_ATTRIBUTES+1] = { { "ERROR" }, { "LANG" }, { "MULTIPLE" }, /* WSM bug fix, was SEVERAL */ { "NAME" }, { "SIZE" }, /* WSM bug fix, missing */ { 0 },};PRIVATE HTAttr tab_attr[HTML_TAB_ATTRIBUTES+1] = { { "ALIGN" }, { "AT" }, { 0 }};PRIVATE HTAttr table_attr[HTML_TABLE_ATTRIBUTES+1] = { { "BORDER" }, { "ID" }, { "INDEX" }, { "LANG" }, { 0 }};PRIVATE HTAttr td_attr[HTML_TD_ATTRIBUTES+1] = { { "ALIGN" }, { "COLSPAN" }, { "ROWSPAN" }, { "TAG" }, { 0 }};PRIVATE HTAttr textarea_attr[HTML_TEXTAREA_ATTRIBUTES+1] = { { "COLS" }, { "DISABLED" }, { "ERROR" }, { "LANG" }, { "NAME" }, { "ROWS" }, { 0 }};PRIVATE HTAttr ul_attr[HTML_UL_ATTRIBUTES+1] = { { "COMPACT" }, { "ID" }, { "INDEX" }, { "LANG" }, { "PLAIN" }, { "WRAP" }, { 0 }};/*** ELEMENTS** Must match definitions in HTMLPDTD.html!** Must be in alphabetical order.**** Name, Attributes, content*/PRIVATE HTTag tags[HTML_ELEMENTS] = { { "A" , a_attr, HTML_A_ATTRIBUTES, SGML_MIXED }, { "ABBREV" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "ABSTRACT" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "ACRONYM" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "ADDED" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "ADDRESS" , no_attr, 0, SGML_MIXED }, { "AREA" , area_attr, HTML_AREA_ATTRIBUTES, SGML_EMPTY }, { "ARG" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "B" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "BASE" , base_attr, HTML_BASE_ATTRIBUTES, SGML_EMPTY }, { "BIG" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "BLOCKQUOTE", no_attr, 0, SGML_MIXED }, { "BODY" , body_attr, HTML_BODY_ATTRIBUTES, SGML_MIXED }, { "BOX" , no_attr, 0, SGML_MIXED }, { "BR" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_EMPTY }, { "BYLINE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "CAPTION" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "CHANGED" , changed_attr, HTML_CHANGED_ATTRIBUTES, SGML_MIXED }, { "CITE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "CMD" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "CODE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "COMMENT" , no_attr, 0, SGML_MIXED }, { "DD" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_EMPTY }, { "DFN" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "DIR" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "DIV" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "DL" , glossary_attr,HTML_DL_ATTRIBUTES, SGML_MIXED }, { "DT" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_EMPTY }, { "EM" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "FIG" , fig_attr, HTML_FIG_ATTRIBUTES, SGML_MIXED }, { "FOOTNOTE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "FORM" , form_attr, HTML_FORM_ATTRIBUTES, SGML_MIXED }, { "FRAME" , frame_attr, HTML_FRAME_ATTRIBUTES, SGML_EMPTY }, { "FRAMESET", frameset_attr,HTML_FRAMESET_ATTRIBUTES, SGML_EMPTY }, { "H1" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H2" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H3" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H4" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H5" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H6" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "H7" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "HEAD" , no_attr, 0, SGML_MIXED }, { "HR" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_EMPTY }, { "HTML" , no_attr, 0, SGML_MIXED }, /* */ { "HTMLPLUS", htmlplus_attr,HTML_HTMLPLUS_ATTRIBUTES, SGML_MIXED }, { "I" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "IMAGE" , image_attr, HTML_IMAGE_ATTRIBUTES, SGML_EMPTY }, { "IMG" , img_attr, HTML_IMG_ATTRIBUTES, SGML_EMPTY }, { "INPUT" , input_attr, HTML_INPUT_ATTRIBUTES, SGML_EMPTY }, { "ISINDEX" , no_attr, 0, SGML_EMPTY }, { "KBD" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "L" , l_attr, HTML_L_ATTRIBUTES, SGML_MIXED }, { "LI" , li_attr, HTML_LI_ATTRIBUTES, SGML_EMPTY }, { "LINK" , link_attr, HTML_LINK_ATTRIBUTES, SGML_EMPTY }, { "LISTING" , no_attr, 0, SGML_LITERAL }, { "LIT" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "MAP" , map_attr, HTML_MAP_ATTRIBUTES, SGML_MIXED }, { "MARGIN" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "MATH" , id_attr, HTML_ID_ATTRIBUTE, SGML_MIXED }, { "MENU" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "META" , meta_attr, HTML_META_ATTRIBUTES, SGML_EMPTY }, { "NEXTID" , nextid_attr, 1, SGML_EMPTY }, { "NOTE" , note_attr, HTML_NOTE_ATTRIBUTES, SGML_EMPTY }, { "NOFRAMES", no_attr, 0, SGML_MIXED }, { "OBJECT" , object_attr, HTML_OBJECT_ATTRIBUTES, SGML_MIXED }, { "OL" , list_attr, HTML_LIST_ATTRIBUTES, SGML_MIXED }, { "OPTION" , option_attr, HTML_OPTION_ATTRIBUTES, SGML_EMPTY },/*Mixed?*/ { "OVER" , no_attr, 0, SGML_MIXED }, { "P" , l_attr, HTML_L_ATTRIBUTES, SGML_EMPTY }, { "PERSON" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "PLAINTEXT", no_attr, 0, SGML_LITERAL }, { "PRE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "Q" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "QUOTE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "RENDER" , render_attr, HTML_RENDER_ATTRIBUTES, SGML_MIXED }, { "REMOVED" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "S" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "SAMP" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "SELECT" , select_attr, HTML_SELECT_ATTRIBUTES, SGML_MIXED }, { "SMALL" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "SPAN" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "STRONG" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "SUB" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "SUP" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "TAB" , tab_attr, HTML_TAB_ATTRIBUTES, SGML_EMPTY }, { "TABLE" , table_attr, HTML_TABLE_ATTRIBUTES, SGML_MIXED }, { "TD" , td_attr, HTML_TABLE_ATTRIBUTES, SGML_MIXED }, { "TEXTAREA", textarea_attr,HTML_TEXTAREA_ATTRIBUTES,SGML_MIXED}, { "TH" , td_attr, HTML_TD_ATTRIBUTES, SGML_MIXED }, { "TITLE" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "TR" , id_attr, HTML_ID_ATTRIBUTE, SGML_MIXED }, { "TT" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "U" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "UL" , ul_attr, HTML_UL_ATTRIBUTES, SGML_MIXED }, { "VAR" , gen_attr, HTML_GEN_ATTRIBUTES, SGML_MIXED }, { "XMP" , no_attr, 0, SGML_LITERAL }};PRIVATE SGML_dtd HTMLP_dtd = { tags, HTML_ELEMENTS, entities, sizeof(entities)/sizeof(char**)};PRIVATE SGML_dtd * DTD = &HTMLP_dtd;PUBLIC SGML_dtd * HTML_dtd (void){ return DTD;}PUBLIC BOOL HTML_setDtd (const SGML_dtd * dtd){ if (dtd) { DTD = (SGML_dtd *) dtd; return YES; } return NO;}/* Start anchor element** --------------------**** It is kinda convenient to have a particulr routine for** starting an anchor element, as everything else for HTML is** simple anyway.*/PUBLIC void HTStartAnchor (HTStructured * obj, const char * name, const char * href){ BOOL present[HTML_A_ATTRIBUTES]; const char* value[HTML_A_ATTRIBUTES]; { int i; for(i=0; i<HTML_A_ATTRIBUTES; i++) present[i] = NO; } if (name) { present[HTML_A_NAME] = YES; value[HTML_A_NAME] = name; } if (href) { present[HTML_A_HREF] = YES; value[HTML_A_HREF] = href; } (*obj->isa->start_element)(obj, HTML_A , present, value);}/* Put image element** --------------------**** Hopefully as usefull as HTStartAnchor. Henrik 23/03-94*/PUBLIC void HTMLPutImg (HTStructured * obj, const char * src, const char * alt, const char * align){ BOOL present[HTML_IMG_ATTRIBUTES]; const char* value[HTML_IMG_ATTRIBUTES]; { int i; for(i=0; i<HTML_IMG_ATTRIBUTES; i++) present[i] = NO; } if (src) { present[HTML_IMG_SRC] = YES; value[HTML_IMG_SRC] = src; } if (alt) { present[HTML_IMG_ALT] = YES; value[HTML_IMG_ALT] = alt; } if (align) { present[HTML_IMG_ALIGN] = YES; value[HTML_IMG_ALIGN] = align; } (*obj->isa->start_element)(obj, HTML_IMG , present, value); /* (*obj->isa->end_element)(obj, HTML_IMG); */}PUBLIC void HTNextID (HTStructured * obj, const char * next_one){ BOOL present[HTML_NEXTID_ATTRIBUTES]; const char* value[HTML_NEXTID_ATTRIBUTES]; { int i; for(i=0; i<HTML_NEXTID_ATTRIBUTES; i++) present[i] = NO; } present[HTML_NEXTID_N] = YES; value[HTML_NEXTID_N] = next_one; (*obj->isa->start_element)(obj, HTML_NEXTID , present, value);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -