Annotation of Amaya/amaya/fetchHTMLname.c, revision 1.7
1.1 cvs 1: /*
2: *
3: * (c) COPYRIGHT MIT and INRIA, 1996.
4: * Please first read the full copyright statement in file COPYRIGHT.
5: *
6: */
7:
8: /*
9: *
10: * fetchHTMLname
11: *
12: * Author: I. Vatton
13: *
14: */
15:
16: /* This module is used by the html2thot parser and the css parser. */
17:
1.2 cvs 18: #define THOT_EXPORT
1.1 cvs 19: #include "amaya.h"
20: #include "fetchHTMLname.h"
21: #include "parser.h"
22:
1.3 cvs 23: #include "fetchHTMLname_f.h"
24: #include "fetchXMLname_f.h"
25:
1.1 cvs 26: /* mapping table of HTML elements */
27: static GIMapping HTMLGIMappingTable[] =
28: {
29: /* This table MUST be in alphabetical order */
1.7 ! cvs 30: {TEXT ("a"), SPACE, HTML_EL_Anchor, NULL},
! 31: {TEXT ("abbr"), SPACE, HTML_EL_ABBR, NULL},
! 32: {TEXT ("acronym"), SPACE, HTML_EL_ACRONYM, NULL},
! 33: {TEXT ("address"), SPACE, HTML_EL_Address, NULL},
! 34: {TEXT ("applet"), SPACE, HTML_EL_Applet, NULL},
! 35: {TEXT ("area"), TEXT ('E'), HTML_EL_AREA, NULL},
! 36: {TEXT ("b"), SPACE, HTML_EL_Bold_text, NULL},
! 37: {TEXT ("base"), TEXT ('E'), HTML_EL_BASE, NULL},
! 38: {TEXT ("basefont"), TEXT ('E'), HTML_EL_BaseFont, NULL},
! 39: {TEXT ("bdo"), SPACE, HTML_EL_BDO, NULL},
! 40: {TEXT ("big"), SPACE, HTML_EL_Big_text, NULL},
! 41: {TEXT ("blockquote"), SPACE, HTML_EL_Block_Quote, NULL},
! 42: {TEXT ("body"), SPACE, HTML_EL_BODY, NULL},
! 43: {TEXT ("br"), TEXT ('E'), HTML_EL_BR, NULL},
! 44: {TEXT ("button"), SPACE, HTML_EL_BUTTON, NULL},
! 45: {TEXT ("c"), SPACE, HTML_EL_TEXT_UNIT, NULL},
! 46: {TEXT ("caption"), SPACE, HTML_EL_CAPTION, NULL},
! 47: {TEXT ("center"), SPACE, HTML_EL_Center, NULL},
! 48: {TEXT ("cite"), SPACE, HTML_EL_Cite, NULL},
! 49: {TEXT ("code"), SPACE, HTML_EL_Code, NULL},
! 50: {TEXT ("colgroup"), SPACE, HTML_EL_COLGROUP, NULL},
! 51: {TEXT ("col"), SPACE, HTML_EL_COL, NULL},
! 52: {TEXT ("dd"), SPACE, HTML_EL_Definition, NULL},
! 53: {TEXT ("del"), SPACE, HTML_EL_DEL, NULL},
! 54: {TEXT ("dfn"), SPACE, HTML_EL_Def, NULL},
! 55: {TEXT ("dir"), SPACE, HTML_EL_Directory, NULL},
! 56: {TEXT ("div"), SPACE, HTML_EL_Division, NULL},
! 57: {TEXT ("dl"), SPACE, HTML_EL_Definition_List, NULL},
! 58: {TEXT ("dt"), SPACE, HTML_EL_Term, NULL},
! 59: {TEXT ("em"), SPACE, HTML_EL_Emphasis, NULL},
! 60: {TEXT ("fieldset"), SPACE, HTML_EL_FIELDSET, NULL},
! 61: {TEXT ("font"), SPACE, HTML_EL_Font_, NULL},
! 62: {TEXT ("form"), SPACE, HTML_EL_Form, NULL},
! 63: {TEXT ("frame"), TEXT ('E'), HTML_EL_FRAME, NULL},
! 64: {TEXT ("frameset"), SPACE, HTML_EL_FRAMESET, NULL},
! 65: {TEXT ("h1"), SPACE, HTML_EL_H1, NULL},
! 66: {TEXT ("h2"), SPACE, HTML_EL_H2, NULL},
! 67: {TEXT ("h3"), SPACE, HTML_EL_H3, NULL},
! 68: {TEXT ("h4"), SPACE, HTML_EL_H4, NULL},
! 69: {TEXT ("h5"), SPACE, HTML_EL_H5, NULL},
! 70: {TEXT ("h6"), SPACE, HTML_EL_H6, NULL},
! 71: {TEXT ("head"), SPACE, HTML_EL_HEAD, NULL},
! 72: {TEXT ("hr"), TEXT ('E'), HTML_EL_Horizontal_Rule, NULL},
! 73: {TEXT ("html"), SPACE, HTML_EL_HTML, NULL},
! 74: {TEXT ("i"), SPACE, HTML_EL_Italic_text, NULL},
! 75: {TEXT ("iframe"), SPACE, HTML_EL_IFRAME, NULL},
! 76: {TEXT ("image"), TEXT ('E'), HTML_EL_PICTURE_UNIT, NULL},
! 77: {TEXT ("img"), TEXT ('E'), HTML_EL_PICTURE_UNIT, NULL},
! 78: {TEXT ("input"), TEXT ('E'), HTML_EL_Input, NULL},
! 79: {TEXT ("ins"), SPACE, HTML_EL_INS, NULL},
! 80: {TEXT ("isindex"), TEXT ('E'), HTML_EL_ISINDEX, NULL},
! 81: {TEXT ("kbd"), SPACE, HTML_EL_Keyboard, NULL},
! 82: {TEXT ("label"), SPACE, HTML_EL_LABEL, NULL},
! 83: {TEXT ("legend"), SPACE, HTML_EL_LEGEND, NULL},
! 84: {TEXT ("li"), SPACE, HTML_EL_List_Item, NULL},
! 85: {TEXT ("link"), TEXT ('E'), HTML_EL_LINK, NULL},
! 86: {TEXT ("listing"), SPACE, HTML_EL_Preformatted, NULL}, /*converted to PRE */
! 87: {TEXT ("map"), SPACE, HTML_EL_MAP, NULL},
! 88: {TEXT ("math"), SPACE, HTML_EL_Math, NULL},
! 89: {TEXT ("mathdisp"), SPACE, HTML_EL_Math, NULL}, /* for compatibility with an
1.1 cvs 90: old version of MathML: WD-math-970704 */
1.7 ! cvs 91: {TEXT ("menu"), SPACE, HTML_EL_Menu, NULL},
! 92: {TEXT ("meta"), TEXT ('E'), HTML_EL_META, NULL},
! 93: {TEXT ("noframes"), SPACE, HTML_EL_NOFRAMES, NULL},
! 94: {TEXT ("noscript"), SPACE, HTML_EL_NOSCRIPT, NULL},
! 95: {TEXT ("object"), SPACE, HTML_EL_Object, NULL},
! 96: {TEXT ("ol"), SPACE, HTML_EL_Numbered_List, NULL},
! 97: {TEXT ("optgroup"), SPACE, HTML_EL_OptGroup, NULL},
! 98: {TEXT ("option"), SPACE, HTML_EL_Option, NULL},
! 99: {TEXT ("p"), SPACE, HTML_EL_Paragraph, NULL},
! 100: {TEXT ("p*"), SPACE, HTML_EL_Pseudo_paragraph, NULL},
! 101: {TEXT ("param"), TEXT ('E'), HTML_EL_Parameter, NULL},
! 102: {TEXT ("plaintext"), SPACE, HTML_EL_Preformatted, NULL},/* converted to PRE */
! 103: {TEXT ("pre"), SPACE, HTML_EL_Preformatted, NULL},
! 104: {TEXT ("q"), SPACE, HTML_EL_Quotation, NULL},
! 105: {TEXT ("s"), SPACE, HTML_EL_Struck_text, NULL},
! 106: {TEXT ("samp"), SPACE, HTML_EL_Sample, NULL},
! 107: {TEXT ("script"), SPACE, HTML_EL_SCRIPT, NULL},
! 108: {TEXT ("select"), SPACE, HTML_EL_Option_Menu, NULL},
! 109: {TEXT ("small"), SPACE, HTML_EL_Small_text, NULL},
! 110: {TEXT ("span"), SPACE, HTML_EL_Span, NULL},
! 111: {TEXT ("strike"), SPACE, HTML_EL_Struck_text, NULL},
! 112: {TEXT ("strong"), SPACE, HTML_EL_Strong, NULL},
! 113: {TEXT ("style"), SPACE, HTML_EL_STYLE_, NULL},
! 114: {TEXT ("sub"), SPACE, HTML_EL_Subscript, NULL},
! 115: {TEXT ("sup"), SPACE, HTML_EL_Superscript, NULL},
! 116: {TEXT ("table"), SPACE, HTML_EL_Table, NULL},
! 117: {TEXT ("tbody"), SPACE, HTML_EL_tbody, NULL},
! 118: {TEXT ("td"), SPACE, HTML_EL_Data_cell, NULL},
! 119: {TEXT ("textarea"), SPACE, HTML_EL_Text_Area, NULL},
! 120: {TEXT ("tfoot"), SPACE, HTML_EL_tfoot, NULL},
! 121: {TEXT ("th"), SPACE, HTML_EL_Heading_cell, NULL},
! 122: {TEXT ("thead"), SPACE, HTML_EL_thead, NULL},
! 123: {TEXT ("title"), SPACE, HTML_EL_TITLE, NULL},
! 124: {TEXT ("tr"), SPACE, HTML_EL_Table_row, NULL},
! 125: {TEXT ("tt"), SPACE, HTML_EL_Teletype_text, NULL},
! 126: {TEXT ("u"), SPACE, HTML_EL_Underlined_text, NULL},
! 127: {TEXT ("ul"), SPACE, HTML_EL_Unnumbered_List, NULL},
! 128: {TEXT ("var"), SPACE, HTML_EL_Variable, NULL},
! 129: {TEXT ("xmlgraphics"), SPACE, HTML_EL_XMLGraphics, NULL},
! 130: {TEXT ("xmp"), SPACE, HTML_EL_Preformatted, NULL}, /* converted to PRE */
1.1 cvs 131: {TEXT (""), SPACE, 0, NULL} /* Last entry. Mandatory */
132: };
1.4 cvs 133: /* mapping table of HTML attributes */
134:
135: static AttributeMapping HTMLAttributeMappingTable[] =
136: {
137: /* The first entry MUST be unknown_attr */
138: /* The rest of this table MUST be in alphabetical order */
139: {TEXT("unknown_attr"), TEXT(""), TEXT('A'), HTML_ATTR_Invalid_attribute},
140:
1.7 ! cvs 141: {TEXT("abbr"), TEXT(""), TEXT('A'), HTML_ATTR_abbr},
! 142: {TEXT("accept"), TEXT(""), TEXT('A'), HTML_ATTR_accept},
! 143: {TEXT("accept-charset"), TEXT("form"), TEXT('A'), HTML_ATTR_accept_charset},
! 144: {TEXT("accesskey"), TEXT(""), TEXT('A'), HTML_ATTR_accesskey},
! 145: {TEXT("action"), TEXT(""), TEXT('A'), HTML_ATTR_Script_URL},
! 146: {TEXT("align"), TEXT("applet"), TEXT('A'), HTML_ATTR_Alignment},
! 147: {TEXT("align"), TEXT("caption"), TEXT('A'), HTML_ATTR_Position},
! 148: {TEXT("align"), TEXT("col"), TEXT('A'), HTML_ATTR_Cell_align},
! 149: {TEXT("align"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_Cell_align},
! 150: {TEXT("align"), TEXT("div"), TEXT('A'), HTML_ATTR_TextAlign},
! 151: {TEXT("align"), TEXT("h1"), TEXT('A'), HTML_ATTR_TextAlign},
! 152: {TEXT("align"), TEXT("h2"), TEXT('A'), HTML_ATTR_TextAlign},
! 153: {TEXT("align"), TEXT("h3"), TEXT('A'), HTML_ATTR_TextAlign},
! 154: {TEXT("align"), TEXT("h4"), TEXT('A'), HTML_ATTR_TextAlign},
! 155: {TEXT("align"), TEXT("h5"), TEXT('A'), HTML_ATTR_TextAlign},
! 156: {TEXT("align"), TEXT("h6"), TEXT('A'), HTML_ATTR_TextAlign},
! 157: {TEXT("align"), TEXT("hr"), TEXT('A'), HTML_ATTR_Align},
! 158: {TEXT("align"), TEXT("iframe"), TEXT('A'), HTML_ATTR_Alignment},
! 159: {TEXT("align"), TEXT("image"), TEXT('A'), HTML_ATTR_Alignment},
! 160: {TEXT("align"), TEXT("img"), TEXT('A'), HTML_ATTR_Alignment},
! 161: {TEXT("align"), TEXT("input"), TEXT('A'), HTML_ATTR_Alignment},
! 162: {TEXT("align"), TEXT("legend"), TEXT('A'), HTML_ATTR_LAlign},
! 163: {TEXT("align"), TEXT("object"), TEXT('A'), HTML_ATTR_Alignment},
! 164: {TEXT("align"), TEXT("p"), TEXT('A'), HTML_ATTR_TextAlign},
! 165: {TEXT("align"), TEXT("table"), TEXT('A'), HTML_ATTR_Align},
! 166: {TEXT("align"), TEXT("tbody"), TEXT('A'), HTML_ATTR_Cell_align},
! 167: {TEXT("align"), TEXT("td"), TEXT('A'), HTML_ATTR_Cell_align},
! 168: {TEXT("align"), TEXT("tfoot"), TEXT('A'), HTML_ATTR_Cell_align},
! 169: {TEXT("align"), TEXT("th"), TEXT('A'), HTML_ATTR_Cell_align},
! 170: {TEXT("align"), TEXT("thead"), TEXT('A'), HTML_ATTR_Cell_align},
! 171: {TEXT("align"), TEXT("tr"), TEXT('A'), HTML_ATTR_Cell_align},
! 172: {TEXT("alink"), TEXT("body"), TEXT('A'), HTML_ATTR_ActiveLinkColor},
! 173: {TEXT("alt"), TEXT(""), TEXT('A'), HTML_ATTR_ALT},
! 174: {TEXT("archive"), TEXT(""), TEXT('A'), HTML_ATTR_archive},
! 175: {TEXT("axis"), TEXT(""), TEXT('A'), HTML_ATTR_axis},
! 176:
! 177: {TEXT("background"), TEXT(""), TEXT('A'), HTML_ATTR_background_},
! 178: {TEXT("bgcolor"), TEXT(""), TEXT('A'), HTML_ATTR_BackgroundColor},
! 179: {TEXT("border"), TEXT("image"), TEXT('A'), HTML_ATTR_Img_border},
! 180: {TEXT("border"), TEXT("img"), TEXT('A'), HTML_ATTR_Img_border},
! 181: {TEXT("border"), TEXT("object"), TEXT('A'), HTML_ATTR_Img_border},
! 182: {TEXT("border"), TEXT("table"), TEXT('A'), HTML_ATTR_Border},
! 183:
! 184: {TEXT("cellspacing"), TEXT(""), TEXT('A'), HTML_ATTR_cellspacing},
! 185: {TEXT("cellpadding"), TEXT(""), TEXT('A'), HTML_ATTR_cellpadding},
! 186: {TEXT("char"), TEXT(""), TEXT('A'), HTML_ATTR_char},
! 187: {TEXT("charoff"), TEXT(""), TEXT('A'), HTML_ATTR_charoff},
! 188: {TEXT("charset"), TEXT(""), TEXT('A'), HTML_ATTR_charset},
! 189: {TEXT("checked"), TEXT(""), TEXT('A'), HTML_ATTR_Checked},
! 190: {TEXT("cite"), TEXT(""), TEXT('A'), HTML_ATTR_cite},
! 191: {TEXT("class"), TEXT(""), TEXT('A'), HTML_ATTR_Class},
! 192: {TEXT("classid"), TEXT(""), TEXT('A'), HTML_ATTR_classid},
! 193: {TEXT("clear"), TEXT("br"), TEXT('A'), HTML_ATTR_Clear},
! 194: {TEXT("code"), TEXT(""), TEXT('A'), HTML_ATTR_code},
! 195: {TEXT("codebase"), TEXT(""), TEXT('A'), HTML_ATTR_codebase},
! 196: {TEXT("codetype"), TEXT(""), TEXT('A'), HTML_ATTR_codetype},
! 197: {TEXT("color"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontColor},
! 198: {TEXT("color"), TEXT(""), TEXT('A'), HTML_ATTR_color},
! 199: {TEXT("cols"), TEXT("frameset"), TEXT('A'), HTML_ATTR_ColWidth},
! 200: {TEXT("cols"), TEXT("textarea"), TEXT('A'), HTML_ATTR_Columns},
! 201: {TEXT("colspan"), TEXT(""), TEXT('A'), HTML_ATTR_colspan_},
! 202: {TEXT("compact"), TEXT(""), TEXT('A'), HTML_ATTR_COMPACT},
! 203: {TEXT("content"), TEXT(""), TEXT('A'), HTML_ATTR_meta_content},
! 204: {TEXT("coords"), TEXT(""), TEXT('A'), HTML_ATTR_coords},
! 205:
! 206: {TEXT("data"), TEXT(""), TEXT('A'), HTML_ATTR_data},
! 207: {TEXT("datapagesize"), TEXT("table"), TEXT('A'), HTML_ATTR_datapagesize},
! 208: {TEXT("datetime"), TEXT(""), TEXT('A'), HTML_ATTR_datetime},
! 209: {TEXT("declare"), TEXT("object"), TEXT('A'), HTML_ATTR_declare},
! 210: {TEXT("defer"), TEXT("script"), TEXT('A'), HTML_ATTR_defer},
! 211: {TEXT("dir"), TEXT(""), TEXT('A'), HTML_ATTR_dir},
! 212: {TEXT("disabled"), TEXT(""), TEXT('A'), HTML_ATTR_disabled},
! 213:
! 214: {TEXT("enctype"), TEXT(""), TEXT('A'), HTML_ATTR_ENCTYPE},
! 215: {TEXT("event"), TEXT("script"), TEXT('A'), HTML_ATTR_event},
! 216:
! 217: {TEXT("face"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontFace},
! 218: {TEXT("face"), TEXT("font"), TEXT('A'), HTML_ATTR_face},
! 219: {TEXT("for"), TEXT("label"), TEXT('A'), HTML_ATTR_Associated_control},
! 220: {TEXT("for"), TEXT("script"), TEXT('A'), HTML_ATTR_for_},
! 221: {TEXT("frame"), TEXT("table"), TEXT('A'), HTML_ATTR_frame},
! 222: {TEXT("frameborder"), TEXT(""), TEXT('A'), HTML_ATTR_frameborder},
! 223:
! 224: {TEXT("headers"), TEXT(""), TEXT('A'), HTML_ATTR_headers},
! 225: {TEXT("height"), TEXT(""), TEXT('A'), HTML_ATTR_Height_},
! 226: {TEXT("href"), TEXT(""), TEXT('A'), HTML_ATTR_HREF_},
! 227: {TEXT("hreflang"), TEXT(""), TEXT('A'), HTML_ATTR_hreflang},
! 228: {TEXT("hspace"), TEXT(""), TEXT('A'), HTML_ATTR_hspace},
! 229: {TEXT("http-equiv"), TEXT(""), TEXT('A'), HTML_ATTR_http_equiv},
! 230:
! 231: {TEXT("id"), TEXT(""), TEXT('A'), HTML_ATTR_ID},
! 232: {TEXT("ismap"), TEXT(""), TEXT('A'), HTML_ATTR_ISMAP},
! 233:
! 234: {TEXT("label"), TEXT(""), TEXT('A'), HTML_ATTR_label},
! 235: {TEXT("lang"), TEXT(""), TEXT('A'), HTML_ATTR_Langue},
! 236: {TEXT("language"), TEXT("script"), TEXT('A'), HTML_ATTR_script_language},
! 237: {TEXT("link"), TEXT("body"), TEXT('A'), HTML_ATTR_LinkColor},
! 238: {TEXT("longdesc"), TEXT(""), TEXT('A'), HTML_ATTR_longdesc},
! 239:
! 240: {TEXT("marginheight"), TEXT(""), TEXT('A'), HTML_ATTR_marginheight},
! 241: {TEXT("marginwidth"), TEXT(""), TEXT('A'), HTML_ATTR_marginwidth},
! 242: {TEXT("maxlength"), TEXT(""), TEXT('A'), HTML_ATTR_MaxLength},
! 243: {TEXT("media"), TEXT(""), TEXT('A'), HTML_ATTR_media},
! 244: {TEXT("method"), TEXT(""), TEXT('A'), HTML_ATTR_METHOD},
! 245: {TEXT("mode"), TEXT(""), TEXT('A'), HTML_ATTR_mode},
! 246: {TEXT("multiple"), TEXT(""), TEXT('A'), HTML_ATTR_Multiple},
1.4 cvs 247:
248: {TEXT("N"), TEXT(""), TEXT('C'), 0},
1.7 ! cvs 249: {TEXT("name"), TEXT("applet"), TEXT('A'), HTML_ATTR_applet_name},
! 250: {TEXT("name"), TEXT("frame"), TEXT('A'), HTML_ATTR_FrameName},
! 251: {TEXT("name"), TEXT("iframe"), TEXT('A'), HTML_ATTR_FrameName},
! 252: {TEXT("name"), TEXT("meta"), TEXT('A'), HTML_ATTR_meta_name},
! 253: {TEXT("name"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_name},
! 254: {TEXT("name"), TEXT(""), TEXT('A'), HTML_ATTR_NAME},
! 255: {TEXT("nohref"), TEXT(""), TEXT('A'), HTML_ATTR_nohref},
! 256: {TEXT("noresize"), TEXT(""), TEXT('A'), HTML_ATTR_no_resize},
! 257: {TEXT("noshade"), TEXT(""), TEXT('A'), HTML_ATTR_NoShade},
! 258: {TEXT("nowrap"), TEXT(""), TEXT('A'), HTML_ATTR_No_wrap},
! 259:
! 260: {TEXT("object"), TEXT("applet"), TEXT('A'), HTML_ATTR_object},
! 261: {TEXT("onblur"), TEXT(""), TEXT('A'), HTML_ATTR_onblur},
! 262: {TEXT("onchange"), TEXT(""), TEXT('A'), HTML_ATTR_onchange},
! 263: {TEXT("onclick"), TEXT(""), TEXT('A'), HTML_ATTR_onclick},
! 264: {TEXT("ondblclick"), TEXT(""), TEXT('A'), HTML_ATTR_ondblclick},
! 265: {TEXT("onfocus"), TEXT(""), TEXT('A'), HTML_ATTR_onfocus},
! 266: {TEXT("onkeydown"), TEXT(""), TEXT('A'), HTML_ATTR_onkeydown},
! 267: {TEXT("onkeypress"), TEXT(""), TEXT('A'), HTML_ATTR_onkeypress},
! 268: {TEXT("onkeyup"), TEXT(""), TEXT('A'), HTML_ATTR_onkeyup},
! 269: {TEXT("onload"), TEXT(""), TEXT('A'), HTML_ATTR_onload},
! 270: {TEXT("onmousedown"), TEXT(""), TEXT('A'), HTML_ATTR_onmousedown},
! 271: {TEXT("onmousemove"), TEXT(""), TEXT('A'), HTML_ATTR_onmousemove},
! 272: {TEXT("onmouseout"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseout},
! 273: {TEXT("onmouseover"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseover},
! 274: {TEXT("onmouseup"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseup},
! 275: {TEXT("onreset"), TEXT("form"), TEXT('A'), HTML_ATTR_onreset},
! 276: {TEXT("onselect"), TEXT(""), TEXT('A'), HTML_ATTR_onselect},
! 277: {TEXT("onsubmit"), TEXT("form"), TEXT('A'), HTML_ATTR_onsubmit},
! 278: {TEXT("onunload"), TEXT(""), TEXT('A'), HTML_ATTR_onunload},
! 279:
! 280: {TEXT("profile"), TEXT("head"), TEXT('A'), HTML_ATTR_profile},
! 281: {TEXT("prompt"), TEXT(""), TEXT('A'), HTML_ATTR_Prompt},
! 282:
! 283: {TEXT("readonly"), TEXT(""), TEXT('A'), HTML_ATTR_readonly},
! 284: {TEXT("rel"), TEXT(""), TEXT('A'), HTML_ATTR_REL},
! 285: {TEXT("rev"), TEXT(""), TEXT('A'), HTML_ATTR_REV},
! 286: {TEXT("rows"), TEXT("frameset"), TEXT('A'), HTML_ATTR_RowHeight},
! 287: {TEXT("rows"), TEXT("textarea"), TEXT('A'), HTML_ATTR_Rows},
! 288: {TEXT("rowspan"), TEXT(""), TEXT('A'), HTML_ATTR_rowspan_},
! 289: {TEXT("rules"), TEXT("table"), TEXT('A'), HTML_ATTR_rules_},
! 290:
! 291: {TEXT("scheme"), TEXT("meta"), TEXT('A'), HTML_ATTR_scheme},
! 292: {TEXT("scope"), TEXT(""), TEXT('A'), HTML_ATTR_scope},
! 293: {TEXT("scrolling"), TEXT(""), TEXT('A'), HTML_ATTR_scrolling},
! 294: {TEXT("selected"), TEXT(""), TEXT('A'), HTML_ATTR_Selected},
! 295: {TEXT("shape"), TEXT(""), TEXT('A'), HTML_ATTR_shape},
! 296: {TEXT("size"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontSize},
! 297: {TEXT("size"), TEXT("font"), TEXT('A'), HTML_ATTR_Font_size},
! 298: {TEXT("size"), TEXT("hr"), TEXT('A'), HTML_ATTR_Size_},
! 299: {TEXT("size"), TEXT("input"), TEXT('A'), HTML_ATTR_Area_Size},
! 300: {TEXT("size"), TEXT("select"), TEXT('A'), HTML_ATTR_MenuSize},
! 301: {TEXT("span"), TEXT("col"), TEXT('A'), HTML_ATTR_span_},
! 302: {TEXT("span"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_span_},
! 303: {TEXT("src"), TEXT("frame"), TEXT('A'), HTML_ATTR_FrameSrc},
! 304: {TEXT("src"), TEXT("iframe"), TEXT('A'), HTML_ATTR_FrameSrc},
! 305: {TEXT("src"), TEXT("script"), TEXT('A'), HTML_ATTR_script_src},
! 306: {TEXT("src"), TEXT(""), TEXT('A'), HTML_ATTR_SRC},
! 307: {TEXT("standby"), TEXT(""), TEXT('A'), HTML_ATTR_standby},
! 308: {TEXT("start"), TEXT(""), TEXT('A'), HTML_ATTR_Start},
! 309: {TEXT("style"), TEXT(""), TEXT('A'), HTML_ATTR_Style_},
! 310: {TEXT("summary"), TEXT("table"), TEXT('A'), HTML_ATTR_summary},
! 311:
! 312: {TEXT("tabindex"), TEXT(""), TEXT('A'), HTML_ATTR_tabindex},
! 313: {TEXT("target"), TEXT(""), TEXT('A'), HTML_ATTR_target_},
! 314: {TEXT("text"), TEXT(""), TEXT('A'), HTML_ATTR_TextColor},
! 315: {TEXT("title"), TEXT(""), TEXT('A'), HTML_ATTR_Title},
! 316: {TEXT("type"), TEXT("button"), TEXT('A'), HTML_ATTR_Button_type},
! 317: {TEXT("type"), TEXT("li"), TEXT('A'), HTML_ATTR_ItemStyle},
! 318: {TEXT("type"), TEXT("link"), TEXT('A'), HTML_ATTR_Link_type},
! 319: {TEXT("type"), TEXT("a"), TEXT('A'), HTML_ATTR_Link_type},
! 320: {TEXT("type"), TEXT("object"), TEXT('A'), HTML_ATTR_Object_type},
! 321: {TEXT("type"), TEXT("ol"), TEXT('A'), HTML_ATTR_NumberStyle},
! 322: {TEXT("type"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_type},
! 323: {TEXT("type"), TEXT("script"), TEXT('A'), HTML_ATTR_content_type},
! 324: {TEXT("type"), TEXT("style"), TEXT('A'), HTML_ATTR_Notation},
! 325: {TEXT("type"), TEXT("ul"), TEXT('A'), HTML_ATTR_BulletStyle},
! 326: {TEXT("type"), TEXT(""), SPACE, DummyAttribute},
! 327:
! 328: {TEXT("usemap"), TEXT(""), TEXT('A'), HTML_ATTR_USEMAP},
! 329:
! 330: {TEXT("valign"), TEXT("tbody"), TEXT('A'), HTML_ATTR_Row_valign},
! 331: {TEXT("valign"), TEXT("td"), TEXT('A'), HTML_ATTR_Cell_valign},
! 332: {TEXT("valign"), TEXT("tfoot"), TEXT('A'), HTML_ATTR_Row_valign},
! 333: {TEXT("valign"), TEXT("th"), TEXT('A'), HTML_ATTR_Cell_valign},
! 334: {TEXT("valign"), TEXT("thead"), TEXT('A'), HTML_ATTR_Row_valign},
! 335: {TEXT("valign"), TEXT("tr"), TEXT('A'), HTML_ATTR_Row_valign},
! 336: {TEXT("value"), TEXT("li"), TEXT('A'), HTML_ATTR_ItemValue},
! 337: {TEXT("value"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_value},
! 338: {TEXT("value"), TEXT(""), TEXT('A'), HTML_ATTR_Value_},
! 339: {TEXT("valuetype"), TEXT("param"), TEXT('A'), HTML_ATTR_valuetype},
! 340: {TEXT("version"), TEXT(""), TEXT('A'), 0},
! 341: {TEXT("vlink"), TEXT("body"), TEXT('A'), HTML_ATTR_VisitedLinkColor},
! 342: {TEXT("vspace"), TEXT(""), TEXT('A'), HTML_ATTR_vspace},
! 343:
! 344: {TEXT("width"), TEXT("applet"), TEXT('A'), HTML_ATTR_Width__},
! 345: {TEXT("width"), TEXT("hr"), TEXT('A'), HTML_ATTR_Width__},
! 346: {TEXT("width"), TEXT("iframe"), TEXT('A'), HTML_ATTR_Width__},
! 347: {TEXT("width"), TEXT("image"), TEXT('A'), HTML_ATTR_Width__},
! 348: {TEXT("width"), TEXT("img"), TEXT('A'), HTML_ATTR_Width__},
! 349: {TEXT("width"), TEXT("object"), TEXT('A'), HTML_ATTR_Width__},
! 350: {TEXT("width"), TEXT("pre"), TEXT('A'), HTML_ATTR_Width__},
! 351: {TEXT("width"), TEXT("table"), TEXT('A'), HTML_ATTR_Width__},
! 352: {TEXT("width"), TEXT("td"), TEXT('A'), HTML_ATTR_Width__},
! 353: {TEXT("width"), TEXT("th"), TEXT('A'), HTML_ATTR_Width__},
1.4 cvs 354: #ifdef GRAPHML
1.7 ! cvs 355: {TEXT("width"), TEXT("xmlgraphics"), TEXT('A'), HTML_ATTR_Width__},
1.4 cvs 356: #endif
357:
1.7 ! cvs 358: {TEXT("zzghost"), TEXT(""), TEXT('A'), HTML_ATTR_Ghost_restruct},
1.4 cvs 359: {TEXT(""), TEXT(""), EOS, 0} /* Last entry. Mandatory */
360: };
1.1 cvs 361:
362: /* define a pointer to let other parser functions access the local table */
363: GIMapping *pHTMLGIMapping = HTMLGIMappingTable;
1.4 cvs 364: AttributeMapping *pHTMLAttributeMapping = HTMLAttributeMappingTable;
365:
1.1 cvs 366:
367: /*----------------------------------------------------------------------
368: MapGI
369: search in the mapping tables the entry for the element of
370: name GI and returns the rank of that entry.
371: When returning, schema contains the Thot SSchema that defines that element,
372: Returns -1 and schema = NULL if not found.
373: ----------------------------------------------------------------------*/
374: #ifdef __STDC__
375: int MapGI (STRING gi, SSchema *schema, Document doc)
376: #else
377: int MapGI (gi, schema, doc)
378: STRING gi;
379: SSchema *schema;
380: Document doc;
381: #endif
382: {
383: ElementType elType;
384: STRING ptr;
385: CHAR_T c;
386: int i;
387: int entry;
388: ThotBool isHTML;
389:
390: /* TODO: use NameSpaces to search in the right table */
391: entry = -1;
392: if (*schema == NULL)
393: {
394: isHTML = FALSE;
395: ptr = NULL;
396: }
397: else
398: {
399: ptr = TtaGetSSchemaName (*schema);
400: isHTML = !ustrcmp (ptr, TEXT("HTML"));
401: }
402:
403: i = 0;
404: if (*schema == NULL || isHTML)
405: {
406: /*
407: First convert the first char into lower case to locate
408: registered tags in the HTML mapping table.
409: Entries are registered in upper case and in alphabetic order.
410: */
411:
412: /* TODO: define a function which works on unicode */
1.7 ! cvs 413: c = tolower (gi[0]);
1.1 cvs 414: /* look for the first concerned entry in the table */
415: while (HTMLGIMappingTable[i].htmlGI[0] < c
416: && HTMLGIMappingTable[i].htmlGI[0] != EOS)
417: i++;
418:
419: /* look at all entries starting with the right character */
420: do
421: {
422: if (ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
423: i++;
424: else
425: entry = i;
426: }
427: while (entry < 0 && HTMLGIMappingTable[i].htmlGI[0] == c);
428: }
429:
430: if (entry < 0)
431: if (*schema != NULL && isHTML)
432: *schema = NULL;
433: else
434: /* not found. Look at the XML mapping tables */
435: {
436: elType.ElTypeNum = 0;
437: elType.ElSSchema = *schema;
438:
439: #ifndef STANDALONE
1.5 cvs 440: if (!ptr || !ustrcmp (ptr, TEXT("MathML")))
1.1 cvs 441: MapXMLElementType (MATH_TYPE, gi, &elType, &ptr, &c, doc);
1.5 cvs 442: if (elType.ElTypeNum == 0 && (!ptr || !ustrcmp (ptr, TEXT("GraphML"))))
1.1 cvs 443: MapXMLElementType (GRAPH_TYPE, gi, &elType, &ptr, &c, doc);
444: #endif
445: if (elType.ElTypeNum == 0)
446: {
447: entry = -1;
448: elType.ElSSchema = NULL;
449: *schema = NULL;
450: }
451: else
452: {
453: entry = elType.ElTypeNum;
454: *schema = elType.ElSSchema;
455: }
456: }
457: return entry;
458: }
459:
460: /*----------------------------------------------------------------------
461: GIType search in mapping tables the Element type associated with
462: a given GI Name. If not found returns zero.
463: ----------------------------------------------------------------------*/
464: #ifdef __STDC__
465: void GIType (STRING gi, ElementType *elType, Document doc)
466: #else
467: void GIType (gi, elType, doc)
468: STRING gi;
469: ElementType *elType;
470: Document doc;
471: #endif
472: {
473: CHAR_T c;
474: STRING ptr;
475: int i;
476:
477: /* TODO: use NameSpaces to search in the right table */
478: elType->ElSSchema = NULL;
479: elType->ElTypeNum = 0;
480:
481: /*
482: First convert the first char into lower case to locate
483: registered tags in the HTML mapping table.
484: Entries are registered in upper case and in alphabetic order.
485: */
486:
487: /* TODO: define a function which works on unicode */
1.7 ! cvs 488: c = tolower (gi[0]);
1.1 cvs 489:
490: i = 0;
491: /* look for the first concerned entry in the table */
1.4 cvs 492: while (HTMLGIMappingTable[i].htmlGI[0] < c &&
493: HTMLGIMappingTable[i].htmlGI[0] != EOS)
1.1 cvs 494: i++;
495: /* look at all entries starting with the right character */
496: do
497: {
498: if (!ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
1.4 cvs 499: {
500: if (doc != 0)
501: elType->ElSSchema = TtaGetSSchema (TEXT("HTML"), doc);
502: elType->ElTypeNum = HTMLGIMappingTable[i].ThotType;
503: return;
504: }
1.1 cvs 505: i++;
506: }
507: while (HTMLGIMappingTable[i].htmlGI[0] == c);
508:
509: #ifndef STANDALONE
510: /* if not found, look at the XML mapping tables */
511: MapXMLElementType (MATH_TYPE, gi, elType, &ptr, &c, doc);
512: if (elType->ElTypeNum == 0)
1.4 cvs 513: MapXMLElementType (GRAPH_TYPE, gi, elType, &ptr, &c, doc);
1.1 cvs 514: #endif
1.4 cvs 515: }
516:
517: /*----------------------------------------------------------------------
518: MapAttr search in all AttributeMappingTables the entry for the
519: attribute of name Attr and returns a pointer to that entry,
520: as well as the corresponding Thot SSchema
521: ----------------------------------------------------------------------*/
522: #ifdef __STDC__
523: AttributeMapping *MapAttr (STRING Attr, SSchema *schema, int elemEntry, Document doc)
524: #else
525: AttributeMapping *MapAttr (Attr, schema, elemEntry, doc)
526: STRING Attr;
527: SSchema *schema;
528: int elemEntry;
529: Document doc;
530: #endif
531: {
532: int i;
533: int entry;
534:
535: entry = -1;
536: *schema = NULL;
537: i = 0;
538: do
539: if (!ustrcasecmp (HTMLAttributeMappingTable[i].XMLattribute, Attr))
540: if (HTMLAttributeMappingTable[i].XMLelement[0] == EOS)
541: {
542: entry = i;
543: *schema = TtaGetDocumentSSchema (doc);
544: }
545: else if (elemEntry >= 0 &&
546: !ustrcasecmp (HTMLAttributeMappingTable[i].XMLelement,
547: pHTMLGIMapping[elemEntry].htmlGI))
548: {
549: entry = i;
550: *schema = TtaGetDocumentSSchema (doc);
551: }
552: else
553: i++;
554: else
555: i++;
556: while (entry < 0 && HTMLAttributeMappingTable[i].AttrOrContent != EOS);
557:
558: if (entry >= 0)
559: return (&HTMLAttributeMappingTable[entry]);
560: else
561: return (NULL);
562: }
563:
564: /*----------------------------------------------------------------------
565: MapHTMLAttribute search in the HTML Attribute Mapping Tables the entry
566: for the attribute of name Attr and returns the corresponding Thot
567: attribute type.
568: ----------------------------------------------------------------------*/
569: #ifdef __STDC__
570: void MapHTMLAttribute (STRING Attr, AttributeType *attrType, STRING elementName, Document doc)
571: #else
572: void MapHTMLAttribute (Attr, attrType, elementName, doc)
573: STRING Attr;
574: AttributeType *attrType;
575: STRING elementName;
576: Document doc;
577: #endif
578: {
579: SSchema schema = NULL;
580: AttributeMapping* tableEntry;
581: int elemEntry;
582:
583: elemEntry = MapGI (elementName, &schema, doc);
584: if (elemEntry >= 0)
585: {
586: tableEntry = MapAttr (Attr, &schema, elemEntry, doc);
587: if (tableEntry != NULL)
588: {
589: attrType->AttrTypeNum = tableEntry->ThotAttribute;
590: if (schema == NULL && doc != 0)
591: attrType->AttrSSchema = TtaGetSSchema (TEXT("HTML"), doc);
592: else
593: attrType->AttrSSchema = schema;
594: }
595: else
596: {
597: attrType->AttrTypeNum = 0;
598: attrType->AttrSSchema = NULL;
599: }
600: }
601: else
602: {
603: attrType->AttrTypeNum = 0;
604: attrType->AttrSSchema = NULL;
605: }
1.1 cvs 606: }
Webmaster