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