Return to fetchHTMLname.c CVS log | Up to [Public] / Amaya / amaya |
1.1 cvs 1: /* 2: * 1.15 cvs 3: * (c) COPYRIGHT MIT and INRIA, 1996-2000 1.1 cvs 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: */ 1.13 cvs 15: 1.1 cvs 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.17 ! cvs 26: /* mapping table of Xhtml attributes */ ! 27: AttributeMapping XhtmlAttributeMappingTable[] = 1.4 cvs 28: { 29: /* The first entry MUST be unknown_attr */ 1.17 ! cvs 30: {TEXT("unknown_attr"), TEXT(""), 'A', HTML_ATTR_Invalid_attribute, L_Basic}, ! 31: {TEXT("abbr"), TEXT(""), 'A', HTML_ATTR_abbr, L_Basic}, ! 32: {TEXT("accept"), TEXT(""), 'A', HTML_ATTR_accept, L_Basic}, ! 33: {TEXT("accept-charset"), TEXT("form"), 'A', HTML_ATTR_accept_charset, L_Basic}, ! 34: {TEXT("accesskey"), TEXT(""), 'A', HTML_ATTR_accesskey, L_Basic}, ! 35: {TEXT("action"), TEXT(""), 'A', HTML_ATTR_Script_URL, L_Basic}, 1.16 cvs 36: {TEXT("align"), TEXT("applet"), 'A', HTML_ATTR_Alignment, L_Transitional}, 37: {TEXT("align"), TEXT("caption"), 'A', HTML_ATTR_Position, L_Transitional}, 38: {TEXT("align"), TEXT("col"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 39: {TEXT("align"), TEXT("colgroup"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 40: {TEXT("align"), TEXT("div"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 41: {TEXT("align"), TEXT("h1"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 42: {TEXT("align"), TEXT("h2"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 43: {TEXT("align"), TEXT("h3"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 44: {TEXT("align"), TEXT("h4"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 45: {TEXT("align"), TEXT("h5"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 46: {TEXT("align"), TEXT("h6"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 47: {TEXT("align"), TEXT("hr"), 'A', HTML_ATTR_Align, L_Transitional}, 48: {TEXT("align"), TEXT("iframe"), 'A', HTML_ATTR_Alignment, L_Transitional}, 49: {TEXT("align"), TEXT("image"), 'A', HTML_ATTR_Alignment, L_Transitional}, 50: {TEXT("align"), TEXT("img"), 'A', HTML_ATTR_Alignment, L_Transitional}, 51: {TEXT("align"), TEXT("input"), 'A', HTML_ATTR_Alignment, L_Transitional}, 52: {TEXT("align"), TEXT("legend"), 'A', HTML_ATTR_LAlign, L_Transitional}, 53: {TEXT("align"), TEXT("object"), 'A', HTML_ATTR_Alignment, L_Transitional}, 54: {TEXT("align"), TEXT("p"), 'A', HTML_ATTR_TextAlign, L_Transitional}, 55: {TEXT("align"), TEXT("table"), 'A', HTML_ATTR_Align, L_Transitional}, 56: {TEXT("align"), TEXT("tbody"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 57: {TEXT("align"), TEXT("td"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 58: {TEXT("align"), TEXT("tfoot"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 59: {TEXT("align"), TEXT("th"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 60: {TEXT("align"), TEXT("thead"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 61: {TEXT("align"), TEXT("tr"), 'A', HTML_ATTR_Cell_align, L_Transitional}, 62: {TEXT("alink"), TEXT("body"), 'A', HTML_ATTR_ActiveLinkColor, L_Transitional}, 1.17 ! cvs 63: {TEXT("alt"), TEXT(""), 'A', HTML_ATTR_ALT, L_Basic}, ! 64: {TEXT("archive"), TEXT(""), 'A', HTML_ATTR_archive, L_Basic}, ! 65: {TEXT("axis"), TEXT(""), 'A', HTML_ATTR_axis, L_Basic}, 1.16 cvs 66: 67: {TEXT("background"), TEXT(""), 'A', HTML_ATTR_background_, L_Transitional}, 68: {TEXT("bgcolor"), TEXT(""), 'A', HTML_ATTR_BackgroundColor, L_Transitional}, 69: {TEXT("border"), TEXT("image"), 'A', HTML_ATTR_Img_border, L_Transitional}, 70: {TEXT("border"), TEXT("img"), 'A', HTML_ATTR_Img_border, L_Transitional}, 71: {TEXT("border"), TEXT("object"), 'A', HTML_ATTR_Img_border, L_Transitional}, 72: {TEXT("border"), TEXT("table"), 'A', HTML_ATTR_Border, L_Transitional}, 73: 74: {TEXT("cellspacing"), TEXT(""), 'A', HTML_ATTR_cellspacing, L_Transitional}, 75: {TEXT("cellpadding"), TEXT(""), 'A', HTML_ATTR_cellpadding, L_Transitional}, 1.17 ! cvs 76: {TEXT("char"), TEXT(""), 'A', HTML_ATTR_char, L_Basic}, ! 77: {TEXT("charoff"), TEXT(""), 'A', HTML_ATTR_charoff, L_Basic}, ! 78: {TEXT("charset"), TEXT(""), 'A', HTML_ATTR_charset, L_Basic}, ! 79: {TEXT("checked"), TEXT(""), 'A', HTML_ATTR_Checked, L_Basic}, ! 80: {TEXT("cite"), TEXT(""), 'A', HTML_ATTR_cite, L_Basic}, ! 81: {TEXT("class"), TEXT(""), 'A', HTML_ATTR_Class, L_Basic}, ! 82: {TEXT("classid"), TEXT(""), 'A', HTML_ATTR_classid, L_Basic}, 1.16 cvs 83: {TEXT("clear"), TEXT("br"), 'A', HTML_ATTR_Clear, L_Transitional}, 1.17 ! cvs 84: {TEXT("code"), TEXT(""), 'A', HTML_ATTR_code, L_Basic}, ! 85: {TEXT("codebase"), TEXT(""), 'A', HTML_ATTR_codebase, L_Basic}, ! 86: {TEXT("codetype"), TEXT(""), 'A', HTML_ATTR_codetype, L_Basic}, 1.16 cvs 87: {TEXT("color"), TEXT("basefont"), 'A', HTML_ATTR_BaseFontColor, L_Transitional}, 88: {TEXT("color"), TEXT(""), 'A', HTML_ATTR_color, L_Transitional}, 89: {TEXT("cols"), TEXT("frameset"), 'A', HTML_ATTR_ColWidth, L_Transitional}, 1.17 ! cvs 90: {TEXT("cols"), TEXT("textarea"), 'A', HTML_ATTR_Columns, L_Basic}, ! 91: {TEXT("colspan"), TEXT(""), 'A', HTML_ATTR_colspan_, L_Basic}, 1.16 cvs 92: {TEXT("compact"), TEXT(""), 'A', HTML_ATTR_COMPACT, L_Transitional}, 1.17 ! cvs 93: {TEXT("content"), TEXT(""), 'A', HTML_ATTR_meta_content, L_Basic}, ! 94: {TEXT("coords"), TEXT(""), 'A', HTML_ATTR_coords, L_Basic}, 1.16 cvs 95: 1.17 ! cvs 96: {TEXT("data"), TEXT(""), 'A', HTML_ATTR_data, L_Basic}, ! 97: {TEXT("datapagesize"), TEXT("table"), 'A', HTML_ATTR_datapagesize, L_Basic}, ! 98: {TEXT("datetime"), TEXT(""), 'A', HTML_ATTR_datetime, L_Basic}, ! 99: {TEXT("declare"), TEXT("object"), 'A', HTML_ATTR_declare, L_Basic}, ! 100: {TEXT("defer"), TEXT("script"), 'A', HTML_ATTR_defer, L_Basic}, ! 101: {TEXT("dir"), TEXT(""), 'A', HTML_ATTR_dir, L_Basic}, ! 102: {TEXT("disabled"), TEXT(""), 'A', HTML_ATTR_disabled, L_Basic}, 1.16 cvs 103: 104: {TEXT("enctype"), TEXT(""), 'A', HTML_ATTR_ENCTYPE, L_Transitional}, 105: {TEXT("event"), TEXT("script"), 'A', HTML_ATTR_event, L_Transitional}, 106: 107: {TEXT("face"), TEXT("basefont"), 'A', HTML_ATTR_BaseFontFace, L_Transitional}, 108: {TEXT("face"), TEXT("font"), 'A', HTML_ATTR_face, L_Transitional}, 109: {TEXT("for"), TEXT("label"), 'A', HTML_ATTR_Associated_control, L_Transitional}, 110: {TEXT("for"), TEXT("script"), 'A', HTML_ATTR_for_, L_Transitional}, 111: {TEXT("frame"), TEXT("table"), 'A', HTML_ATTR_frame, L_Transitional}, 112: {TEXT("frameborder"), TEXT(""), 'A', HTML_ATTR_frameborder, L_Transitional}, 1.4 cvs 113: 1.16 cvs 114: {TEXT("headers"), TEXT(""), 'A', HTML_ATTR_headers, L_Transitional}, 1.15 cvs 115: #ifdef GRAPHML 1.16 cvs 116: {TEXT("height"), TEXT("svg"), 'A', HTML_ATTR_SvgHeight, L_Transitional}, 1.17 ! cvs 117: #endif /* GRAPHML */ ! 118: {TEXT("height"), TEXT(""), 'A', HTML_ATTR_Height_, L_Basic}, ! 119: {TEXT("href"), TEXT(""), 'A', HTML_ATTR_HREF_, L_Basic}, ! 120: {TEXT("hreflang"), TEXT(""), 'A', HTML_ATTR_hreflang, L_Basic}, 1.16 cvs 121: {TEXT("hspace"), TEXT(""), 'A', HTML_ATTR_hspace, L_Transitional}, 1.17 ! cvs 122: {TEXT("http-equiv"), TEXT(""), 'A', HTML_ATTR_http_equiv, L_Basic}, 1.16 cvs 123: 1.17 ! cvs 124: {TEXT("id"), TEXT(""), 'A', HTML_ATTR_ID, L_Basic}, 1.16 cvs 125: {TEXT("ismap"), TEXT(""), 'A', HTML_ATTR_ISMAP, L_Transitional}, 126: 1.17 ! cvs 127: {TEXT("label"), TEXT(""), 'A', HTML_ATTR_label, L_Basic}, ! 128: {TEXT("lang"), TEXT(""), 'A', HTML_ATTR_Langue, L_Basic}, ! 129: {TEXT("language"), TEXT("script"), 'A', HTML_ATTR_script_language, L_Basic}, ! 130: {TEXT("link"), TEXT("body"), 'A', HTML_ATTR_LinkColor, L_Basic}, ! 131: {TEXT("longdesc"), TEXT(""), 'A', HTML_ATTR_longdesc, L_Basic}, 1.16 cvs 132: 133: {TEXT("marginheight"), TEXT(""), 'A', HTML_ATTR_marginheight, L_Transitional}, 134: {TEXT("marginwidth"), TEXT(""), 'A', HTML_ATTR_marginwidth, L_Transitional}, 1.17 ! cvs 135: {TEXT("maxlength"), TEXT(""), 'A', HTML_ATTR_MaxLength, L_Basic}, ! 136: {TEXT("media"), TEXT(""), 'A', HTML_ATTR_media, L_Basic}, ! 137: {TEXT("method"), TEXT(""), 'A', HTML_ATTR_METHOD, L_Basic}, ! 138: {TEXT("mode"), TEXT(""), 'A', HTML_ATTR_mode, L_Basic}, ! 139: {TEXT("multiple"), TEXT(""), 'A', HTML_ATTR_Multiple, L_Basic}, ! 140: ! 141: {TEXT("N"), TEXT(""), 'C', 0, L_Basic}, ! 142: {TEXT("name"), TEXT("applet"), 'A', HTML_ATTR_applet_name, L_Basic}, ! 143: {TEXT("name"), TEXT("frame"), 'A', HTML_ATTR_FrameName, L_Basic}, ! 144: {TEXT("name"), TEXT("iframe"), 'A', HTML_ATTR_FrameName, L_Basic}, ! 145: {TEXT("name"), TEXT("meta"), 'A', HTML_ATTR_meta_name, L_Basic}, ! 146: {TEXT("name"), TEXT("param"), 'A', HTML_ATTR_Param_name, L_Basic}, ! 147: {TEXT("name"), TEXT(""), 'A', HTML_ATTR_NAME, L_Basic}, ! 148: {TEXT("nohref"), TEXT(""), 'A', HTML_ATTR_nohref, L_Basic}, ! 149: {TEXT("noresize"), TEXT(""), 'A', HTML_ATTR_no_resize, L_Basic}, ! 150: {TEXT("noshade"), TEXT(""), 'A', HTML_ATTR_NoShade, L_Basic}, ! 151: {TEXT("nowrap"), TEXT(""), 'A', HTML_ATTR_No_wrap, L_Basic}, 1.16 cvs 152: 153: {TEXT("object"), TEXT("applet"), 'A', HTML_ATTR_object, L_Transitional}, 154: {TEXT("onblur"), TEXT(""), 'A', HTML_ATTR_onblur, L_Transitional}, 155: {TEXT("onchange"), TEXT(""), 'A', HTML_ATTR_onchange, L_Transitional}, 156: {TEXT("onclick"), TEXT(""), 'A', HTML_ATTR_onclick, L_Transitional}, 157: {TEXT("ondblclick"), TEXT(""), 'A', HTML_ATTR_ondblclick, L_Transitional}, 158: {TEXT("onfocus"), TEXT(""), 'A', HTML_ATTR_onfocus, L_Transitional}, 159: {TEXT("onkeydown"), TEXT(""), 'A', HTML_ATTR_onkeydown, L_Transitional}, 160: {TEXT("onkeypress"), TEXT(""), 'A', HTML_ATTR_onkeypress, L_Transitional}, 161: {TEXT("onkeyup"), TEXT(""), 'A', HTML_ATTR_onkeyup, L_Transitional}, 162: {TEXT("onload"), TEXT(""), 'A', HTML_ATTR_onload, L_Transitional}, 163: {TEXT("onmousedown"), TEXT(""), 'A', HTML_ATTR_onmousedown, L_Transitional}, 164: {TEXT("onmousemove"), TEXT(""), 'A', HTML_ATTR_onmousemove, L_Transitional}, 165: {TEXT("onmouseout"), TEXT(""), 'A', HTML_ATTR_onmouseout, L_Transitional}, 166: {TEXT("onmouseover"), TEXT(""), 'A', HTML_ATTR_onmouseover, L_Transitional}, 167: {TEXT("onmouseup"), TEXT(""), 'A', HTML_ATTR_onmouseup, L_Transitional}, 168: {TEXT("onreset"), TEXT("form"), 'A', HTML_ATTR_onreset, L_Transitional}, 169: {TEXT("onselect"), TEXT(""), 'A', HTML_ATTR_onselect, L_Transitional}, 170: {TEXT("onsubmit"), TEXT("form"), 'A', HTML_ATTR_onsubmit, L_Transitional}, 171: {TEXT("onunload"), TEXT(""), 'A', HTML_ATTR_onunload, L_Transitional}, 172: 1.17 ! cvs 173: {TEXT("profile"), TEXT("head"), 'A', HTML_ATTR_profile, L_Basic}, 1.16 cvs 174: {TEXT("prompt"), TEXT(""), 'A', HTML_ATTR_Prompt, L_Transitional}, 175: 1.17 ! cvs 176: {TEXT("readonly"), TEXT(""), 'A', HTML_ATTR_readonly, L_Basic}, ! 177: {TEXT("rel"), TEXT(""), 'A', HTML_ATTR_REL, L_Basic}, ! 178: {TEXT("rev"), TEXT(""), 'A', HTML_ATTR_REV, L_Basic}, 1.16 cvs 179: {TEXT("rows"), TEXT("frameset"), 'A', HTML_ATTR_RowHeight, L_Transitional}, 1.17 ! cvs 180: {TEXT("rows"), TEXT("textarea"), 'A', HTML_ATTR_Rows, L_Basic}, ! 181: {TEXT("rowspan"), TEXT(""), 'A', HTML_ATTR_rowspan_, L_Basic}, ! 182: {TEXT("rules"), TEXT("table"), 'A', HTML_ATTR_rules_, L_Basic}, 1.16 cvs 183: 1.17 ! cvs 184: {TEXT("scheme"), TEXT("meta"), 'A', HTML_ATTR_scheme, L_Basic}, ! 185: {TEXT("scope"), TEXT(""), 'A', HTML_ATTR_scope, L_Basic}, 1.16 cvs 186: {TEXT("scrolling"), TEXT(""), 'A', HTML_ATTR_scrolling, L_Transitional}, 187: {TEXT("selected"), TEXT(""), 'A', HTML_ATTR_Selected, L_Transitional}, 188: {TEXT("shape"), TEXT(""), 'A', HTML_ATTR_shape, L_Transitional}, 189: {TEXT("size"), TEXT("basefont"), 'A', HTML_ATTR_BaseFontSize, L_Transitional}, 190: {TEXT("size"), TEXT("font"), 'A', HTML_ATTR_Font_size, L_Transitional}, 191: {TEXT("size"), TEXT("hr"), 'A', HTML_ATTR_Size_, L_Transitional}, 192: {TEXT("size"), TEXT("input"), 'A', HTML_ATTR_Area_Size, L_Transitional}, 193: {TEXT("size"), TEXT("select"), 'A', HTML_ATTR_MenuSize, L_Transitional}, 194: {TEXT("span"), TEXT("col"), 'A', HTML_ATTR_span_, L_Transitional}, 195: {TEXT("span"), TEXT("colgroup"), 'A', HTML_ATTR_span_, L_Transitional}, 196: {TEXT("src"), TEXT("frame"), 'A', HTML_ATTR_FrameSrc, L_Transitional}, 197: {TEXT("src"), TEXT("iframe"), 'A', HTML_ATTR_FrameSrc, L_Transitional}, 198: {TEXT("src"), TEXT("script"), 'A', HTML_ATTR_script_src, L_Transitional}, 1.17 ! cvs 199: {TEXT("src"), TEXT(""), 'A', HTML_ATTR_SRC, L_Basic}, ! 200: {TEXT("standby"), TEXT(""), 'A', HTML_ATTR_standby, L_Basic}, ! 201: {TEXT("start"), TEXT(""), 'A', HTML_ATTR_Start, L_Basic}, ! 202: {TEXT("style"), TEXT(""), 'A', HTML_ATTR_Style_, L_Basic}, ! 203: {TEXT("summary"), TEXT("table"), 'A', HTML_ATTR_summary, L_Basic}, ! 204: ! 205: {TEXT("tabindex"), TEXT(""), 'A', HTML_ATTR_tabindex, L_Basic}, ! 206: {TEXT("target"), TEXT(""), 'A', HTML_ATTR_target_, L_Basic}, ! 207: {TEXT("text"), TEXT(""), 'A', HTML_ATTR_TextColor, L_Basic}, ! 208: {TEXT("title"), TEXT(""), 'A', HTML_ATTR_Title, L_Basic}, 1.16 cvs 209: {TEXT("type"), TEXT("button"), 'A', HTML_ATTR_Button_type, L_Transitional}, 1.17 ! cvs 210: {TEXT("type"), TEXT("li"), 'A', HTML_ATTR_ItemStyle, L_Basic}, ! 211: {TEXT("type"), TEXT("link"), 'A', HTML_ATTR_Link_type, L_Basic}, ! 212: {TEXT("type"), TEXT("a"), 'A', HTML_ATTR_Link_type, L_Basic}, ! 213: {TEXT("type"), TEXT("object"), 'A', HTML_ATTR_Object_type, L_Basic}, ! 214: {TEXT("type"), TEXT("ol"), 'A', HTML_ATTR_NumberStyle, L_Basic}, ! 215: {TEXT("type"), TEXT("param"), 'A', HTML_ATTR_Param_type, L_Basic}, 1.16 cvs 216: {TEXT("type"), TEXT("script"), 'A', HTML_ATTR_content_type, L_Transitional}, 217: {TEXT("type"), TEXT("style"), 'A', HTML_ATTR_Notation, L_Transitional}, 1.17 ! cvs 218: {TEXT("type"), TEXT("ul"), 'A', HTML_ATTR_BulletStyle, L_Basic}, ! 219: {TEXT("type"), TEXT(""), SPACE, DummyAttribute, L_Basic}, 1.16 cvs 220: 1.17 ! cvs 221: {TEXT("usemap"), TEXT(""), 'A', HTML_ATTR_USEMAP, L_Basic}, 1.16 cvs 222: 1.17 ! cvs 223: {TEXT("valign"), TEXT("tbody"), 'A', HTML_ATTR_Row_valign, L_Basic}, ! 224: {TEXT("valign"), TEXT("td"), 'A', HTML_ATTR_Cell_valign, L_Basic}, ! 225: {TEXT("valign"), TEXT("tfoot"), 'A', HTML_ATTR_Row_valign, L_Basic}, ! 226: {TEXT("valign"), TEXT("th"), 'A', HTML_ATTR_Cell_valign, L_Basic}, ! 227: {TEXT("valign"), TEXT("thead"), 'A', HTML_ATTR_Row_valign, L_Basic}, ! 228: {TEXT("valign"), TEXT("tr"), 'A', HTML_ATTR_Row_valign, L_Basic}, ! 229: {TEXT("value"), TEXT("li"), 'A', HTML_ATTR_ItemValue, L_Basic}, ! 230: {TEXT("value"), TEXT("param"), 'A', HTML_ATTR_Param_value, L_Basic}, ! 231: {TEXT("value"), TEXT(""), 'A', HTML_ATTR_Value_, L_Basic}, ! 232: {TEXT("valuetype"), TEXT("param"), 'A', HTML_ATTR_valuetype, L_Basic}, ! 233: {TEXT("version"), TEXT(""), 'A', 0, L_Basic}, 1.16 cvs 234: {TEXT("vlink"), TEXT("body"), 'A', HTML_ATTR_VisitedLinkColor, L_Transitional}, 235: {TEXT("vspace"), TEXT(""), 'A', HTML_ATTR_vspace, L_Transitional}, 236: 237: {TEXT("width"), TEXT("applet"), 'A', HTML_ATTR_Width__, L_Transitional}, 238: {TEXT("width"), TEXT("col"), 'A', HTML_ATTR_Width__, L_Transitional}, 239: {TEXT("width"), TEXT("colgroup"), 'A', HTML_ATTR_Width__, L_Transitional}, 240: {TEXT("width"), TEXT("hr"), 'A', HTML_ATTR_Width__, L_Transitional}, 241: {TEXT("width"), TEXT("iframe"), 'A', HTML_ATTR_Width__, L_Transitional}, 242: {TEXT("width"), TEXT("image"), 'A', HTML_ATTR_Width__, L_Transitional}, 1.17 ! cvs 243: {TEXT("width"), TEXT("img"), 'A', HTML_ATTR_Width__, L_Basic}, ! 244: {TEXT("width"), TEXT("object"), 'A', HTML_ATTR_Width__, L_Basic}, 1.16 cvs 245: {TEXT("width"), TEXT("pre"), 'A', HTML_ATTR_Width__, L_Transitional}, 1.4 cvs 246: #ifdef GRAPHML 1.16 cvs 247: {TEXT("width"), TEXT("svg"), 'A', HTML_ATTR_SvgWidth, L_Transitional}, 1.17 ! cvs 248: #endif /* GRAPHML */ 1.16 cvs 249: {TEXT("width"), TEXT("table"), 'A', HTML_ATTR_Width__, L_Transitional}, 250: {TEXT("width"), TEXT("td"), 'A', HTML_ATTR_Width__, L_Transitional}, 251: {TEXT("width"), TEXT("th"), 'A', HTML_ATTR_Width__, L_Transitional}, 252: #ifdef GRAPHML 253: {TEXT("width"), TEXT("xmlgraphics"), 'A', HTML_ATTR_Width__, L_Transitional}, 1.17 ! cvs 254: #endif /* GRAPHML */ ! 255: ! 256: {TEXT("zzghost"), TEXT(""), 'A', HTML_ATTR_Ghost_restruct, L_Basic}, ! 257: {TEXT(""), TEXT(""), EOS, 0, L_Basic} /* Last entry. Mandatory */ 1.4 cvs 258: }; 1.1 cvs 259: 260: /* define a pointer to let other parser functions access the local table */ 1.17 ! cvs 261: AttributeMapping *pHTMLAttributeMapping = XhtmlAttributeMappingTable; 1.4 cvs 262: 1.1 cvs 263: 264: /*---------------------------------------------------------------------- 265: MapGI 266: search in the mapping tables the entry for the element of 267: name GI and returns the rank of that entry. 268: When returning, schema contains the Thot SSchema that defines that element, 269: Returns -1 and schema = NULL if not found. 270: ----------------------------------------------------------------------*/ 271: #ifdef __STDC__ 1.12 cvs 272: int MapGI (CHAR_T* gi, SSchema *schema, Document doc) 1.1 cvs 273: #else 274: int MapGI (gi, schema, doc) 1.12 cvs 275: CHAR_T* gi; 1.9 cvs 276: SSchema* schema; 1.1 cvs 277: Document doc; 278: #endif 279: { 1.9 cvs 280: ElementType elType; 1.11 cvs 281: CHAR_T* ptr; 1.12 cvs 282: CHAR_T c; 1.9 cvs 283: int i; 284: int entry; 1.14 cvs 285: ThotBool isHTML; 1.1 cvs 286: 287: /* TODO: use NameSpaces to search in the right table */ 288: entry = -1; 289: if (*schema == NULL) 290: { 291: isHTML = FALSE; 292: ptr = NULL; 293: } 294: else 295: { 296: ptr = TtaGetSSchemaName (*schema); 1.11 cvs 297: isHTML = !ustrcmp (ptr, TEXT("HTML")); 1.1 cvs 298: } 299: 300: i = 0; 301: if (*schema == NULL || isHTML) 302: { 303: /* 304: First convert the first char into lower case to locate 305: registered tags in the HTML mapping table. 306: Entries are registered in upper case and in alphabetic order. 307: */ 308: 309: /* TODO: define a function which works on unicode */ 1.12 cvs 310: c = utolower (gi[0]); 1.1 cvs 311: /* look for the first concerned entry in the table */ 1.16 cvs 312: while (pHTMLGIMapping[i].XMLname[0] < c 313: && pHTMLGIMapping[i].XMLname[0] != EOS) 1.1 cvs 314: i++; 315: 316: /* look at all entries starting with the right character */ 317: do 318: { 1.16 cvs 319: if (ustrcasecmp (pHTMLGIMapping[i].XMLname, gi)) 1.1 cvs 320: i++; 321: else 322: entry = i; 323: } 1.16 cvs 324: while (entry < 0 && pHTMLGIMapping[i].XMLname[0] == c); 1.1 cvs 325: } 326: 327: if (entry < 0) 328: if (*schema != NULL && isHTML) 329: *schema = NULL; 330: else 331: /* not found. Look at the XML mapping tables */ 332: { 333: elType.ElTypeNum = 0; 334: elType.ElSSchema = *schema; 335: 336: #ifndef STANDALONE 1.11 cvs 337: if (!ptr || !ustrcmp (ptr, TEXT("MathML"))) 1.1 cvs 338: MapXMLElementType (MATH_TYPE, gi, &elType, &ptr, &c, doc); 1.11 cvs 339: if (elType.ElTypeNum == 0 && (!ptr || !ustrcmp (ptr, TEXT("GraphML")))) 1.1 cvs 340: MapXMLElementType (GRAPH_TYPE, gi, &elType, &ptr, &c, doc); 341: #endif 342: if (elType.ElTypeNum == 0) 343: { 344: entry = -1; 345: elType.ElSSchema = NULL; 346: *schema = NULL; 347: } 348: else 349: { 350: entry = elType.ElTypeNum; 351: *schema = elType.ElSSchema; 352: } 353: } 354: return entry; 355: } 356: 357: /*---------------------------------------------------------------------- 358: GIType search in mapping tables the Element type associated with 359: a given GI Name. If not found returns zero. 360: ----------------------------------------------------------------------*/ 361: #ifdef __STDC__ 1.12 cvs 362: void GIType (CHAR_T* gi, ElementType *elType, Document doc) 1.1 cvs 363: #else 364: void GIType (gi, elType, doc) 1.12 cvs 365: CHAR_T* gi; 1.9 cvs 366: ElementType* elType; 367: Document doc; 1.1 cvs 368: #endif 369: { 1.12 cvs 370: CHAR_T c; 371: CHAR_T* ptr; 1.1 cvs 372: int i; 373: 374: /* TODO: use NameSpaces to search in the right table */ 375: elType->ElSSchema = NULL; 376: elType->ElTypeNum = 0; 377: 378: /* 379: First convert the first char into lower case to locate 380: registered tags in the HTML mapping table. 381: Entries are registered in upper case and in alphabetic order. 382: */ 383: 384: /* TODO: define a function which works on unicode */ 1.12 cvs 385: c = utolower (gi[0]); 1.1 cvs 386: 387: i = 0; 388: /* look for the first concerned entry in the table */ 1.16 cvs 389: while (pHTMLGIMapping[i].XMLname[0] < c && 390: pHTMLGIMapping[i].XMLname[0] != EOS) 1.1 cvs 391: i++; 392: /* look at all entries starting with the right character */ 393: do 394: { 1.16 cvs 395: if (!ustrcasecmp (pHTMLGIMapping[i].XMLname, gi)) 1.4 cvs 396: { 397: if (doc != 0) 1.11 cvs 398: elType->ElSSchema = TtaGetSSchema (TEXT("HTML"), doc); 1.16 cvs 399: elType->ElTypeNum = pHTMLGIMapping[i].ThotType; 1.4 cvs 400: return; 401: } 1.1 cvs 402: i++; 403: } 1.16 cvs 404: while (pHTMLGIMapping[i].XMLname[0] == c); 1.1 cvs 405: 406: #ifndef STANDALONE 407: /* if not found, look at the XML mapping tables */ 408: MapXMLElementType (MATH_TYPE, gi, elType, &ptr, &c, doc); 409: if (elType->ElTypeNum == 0) 1.4 cvs 410: MapXMLElementType (GRAPH_TYPE, gi, elType, &ptr, &c, doc); 1.1 cvs 411: #endif 1.4 cvs 412: } 413: 414: /*---------------------------------------------------------------------- 415: MapAttr search in all AttributeMappingTables the entry for the 416: attribute of name Attr and returns a pointer to that entry, 417: as well as the corresponding Thot SSchema 418: ----------------------------------------------------------------------*/ 419: #ifdef __STDC__ 1.12 cvs 420: AttributeMapping *MapAttr (CHAR_T* Attr, SSchema *schema, int elemEntry, Document doc) 1.4 cvs 421: #else 422: AttributeMapping *MapAttr (Attr, schema, elemEntry, doc) 1.12 cvs 423: CHAR_T* Attr; 1.9 cvs 424: SSchema* schema; 1.4 cvs 425: int elemEntry; 426: Document doc; 427: #endif 428: { 429: int i; 430: int entry; 431: 432: entry = -1; 433: *schema = NULL; 434: i = 0; 435: do 1.17 ! cvs 436: if (!ustrcasecmp (XhtmlAttributeMappingTable[i].XMLattribute, Attr)) ! 437: if (XhtmlAttributeMappingTable[i].XMLelement[0] == EOS) 1.4 cvs 438: { 439: entry = i; 440: *schema = TtaGetDocumentSSchema (doc); 441: } 442: else if (elemEntry >= 0 && 1.17 ! cvs 443: !ustrcasecmp (XhtmlAttributeMappingTable[i].XMLelement, pHTMLGIMapping[elemEntry].XMLname)) 1.4 cvs 444: { 445: entry = i; 446: *schema = TtaGetDocumentSSchema (doc); 447: } 448: else 449: i++; 450: else 451: i++; 1.17 ! cvs 452: while (entry < 0 && XhtmlAttributeMappingTable[i].AttrOrContent != EOS); 1.4 cvs 453: 454: if (entry >= 0) 1.17 ! cvs 455: return (&XhtmlAttributeMappingTable[entry]); 1.4 cvs 456: else 457: return (NULL); 458: } 459: 460: /*---------------------------------------------------------------------- 461: MapHTMLAttribute search in the HTML Attribute Mapping Tables the entry 462: for the attribute of name Attr and returns the corresponding Thot 463: attribute type. 464: ----------------------------------------------------------------------*/ 465: #ifdef __STDC__ 1.12 cvs 466: void MapHTMLAttribute (CHAR_T* Attr, AttributeType *attrType, CHAR_T* elementName, Document doc) 1.4 cvs 467: #else 468: void MapHTMLAttribute (Attr, attrType, elementName, doc) 1.12 cvs 469: CHAR_T* Attr; 1.9 cvs 470: AttributeType* attrType; 1.12 cvs 471: CHAR_T* elementName; 1.4 cvs 472: Document doc; 473: #endif 474: { 475: SSchema schema = NULL; 476: AttributeMapping* tableEntry; 477: int elemEntry; 478: 479: elemEntry = MapGI (elementName, &schema, doc); 480: if (elemEntry >= 0) 481: { 482: tableEntry = MapAttr (Attr, &schema, elemEntry, doc); 483: if (tableEntry != NULL) 484: { 485: attrType->AttrTypeNum = tableEntry->ThotAttribute; 486: if (schema == NULL && doc != 0) 1.11 cvs 487: attrType->AttrSSchema = TtaGetSSchema (TEXT("HTML"), doc); 1.4 cvs 488: else 489: attrType->AttrSSchema = schema; 490: } 491: else 492: { 493: attrType->AttrTypeNum = 0; 494: attrType->AttrSSchema = NULL; 495: } 496: } 497: else 498: { 499: attrType->AttrTypeNum = 0; 500: attrType->AttrSSchema = NULL; 501: } 1.1 cvs 502: }