Annotation of Amaya/amaya/fetchHTMLname.c, revision 1.8

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__},
1.8     ! cvs       345:    {TEXT("width"), TEXT("col"), TEXT('A'), HTML_ATTR_Width__},
        !           346:    {TEXT("width"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_Width__},
1.7       cvs       347:    {TEXT("width"), TEXT("hr"), TEXT('A'), HTML_ATTR_Width__},
                    348:    {TEXT("width"), TEXT("iframe"), TEXT('A'), HTML_ATTR_Width__},
                    349:    {TEXT("width"), TEXT("image"), TEXT('A'), HTML_ATTR_Width__},
                    350:    {TEXT("width"), TEXT("img"), TEXT('A'), HTML_ATTR_Width__},
                    351:    {TEXT("width"), TEXT("object"), TEXT('A'), HTML_ATTR_Width__},
                    352:    {TEXT("width"), TEXT("pre"), TEXT('A'), HTML_ATTR_Width__},
                    353:    {TEXT("width"), TEXT("table"), TEXT('A'), HTML_ATTR_Width__},
                    354:    {TEXT("width"), TEXT("td"), TEXT('A'), HTML_ATTR_Width__},
                    355:    {TEXT("width"), TEXT("th"), TEXT('A'), HTML_ATTR_Width__},
1.4       cvs       356: #ifdef GRAPHML
1.7       cvs       357:    {TEXT("width"), TEXT("xmlgraphics"), TEXT('A'), HTML_ATTR_Width__},
1.4       cvs       358: #endif
                    359: 
1.7       cvs       360:    {TEXT("zzghost"), TEXT(""), TEXT('A'), HTML_ATTR_Ghost_restruct},
1.4       cvs       361:    {TEXT(""), TEXT(""), EOS, 0}                /* Last entry. Mandatory */
                    362: };
1.1       cvs       363: 
                    364: /* define a pointer to let other parser functions access the local table */
                    365: GIMapping    *pHTMLGIMapping = HTMLGIMappingTable;
1.4       cvs       366: AttributeMapping *pHTMLAttributeMapping = HTMLAttributeMappingTable;
                    367: 
1.1       cvs       368: 
                    369: /*----------------------------------------------------------------------
                    370:    MapGI
                    371:    search in the mapping tables the entry for the element of
                    372:    name GI and returns the rank of that entry.
                    373:    When returning, schema contains the Thot SSchema that defines that element,
                    374:    Returns -1 and schema = NULL if not found.
                    375:   ----------------------------------------------------------------------*/
                    376: #ifdef __STDC__
                    377: int                 MapGI (STRING gi, SSchema *schema, Document doc)
                    378: #else
                    379: int                 MapGI (gi, schema, doc)
                    380: STRING              gi;
                    381: SSchema                   *schema;
                    382: Document            doc;
                    383: #endif
                    384: {
                    385:   ElementType        elType;
                    386:   STRING              ptr; 
                    387:   CHAR_T              c;
                    388:   int                 i;
                    389:   int                 entry;
                    390:   ThotBool           isHTML;
                    391: 
                    392:   /* TODO: use NameSpaces to search in the right table */
                    393:   entry = -1;
                    394:   if (*schema == NULL)
                    395:     {
                    396:       isHTML = FALSE;
                    397:       ptr = NULL;
                    398:     }
                    399:   else
                    400:     {
                    401:       ptr = TtaGetSSchemaName (*schema);
                    402:       isHTML = !ustrcmp (ptr, TEXT("HTML"));
                    403:     }
                    404: 
                    405:   i = 0;
                    406:   if (*schema == NULL || isHTML)
                    407:     {
                    408:       /*
                    409:        First convert the first char into lower case to locate
                    410:        registered tags in the HTML mapping table.
                    411:        Entries are registered in upper case and in alphabetic order.
                    412:       */
                    413: 
                    414:       /* TODO: define a function which works on unicode */
1.7       cvs       415:       c = tolower (gi[0]);
1.1       cvs       416:       /* look for the first concerned entry in the table */
                    417:       while (HTMLGIMappingTable[i].htmlGI[0] < c
                    418:             && HTMLGIMappingTable[i].htmlGI[0] != EOS)
                    419:        i++;
                    420: 
                    421:       /* look at all entries starting with the right character */
                    422:       do
                    423:        {
                    424:          if (ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
                    425:            i++;
                    426:          else
                    427:            entry = i;
                    428:        }
                    429:       while (entry < 0 && HTMLGIMappingTable[i].htmlGI[0] == c);
                    430:     }
                    431: 
                    432:   if (entry < 0)
                    433:     if (*schema != NULL && isHTML)
                    434:       *schema = NULL;
                    435:     else
                    436:       /* not found. Look at the XML mapping tables */
                    437:       {
                    438:        elType.ElTypeNum = 0;
                    439:        elType.ElSSchema = *schema;
                    440: 
                    441: #ifndef STANDALONE
1.5       cvs       442:        if (!ptr || !ustrcmp (ptr, TEXT("MathML")))
1.1       cvs       443:          MapXMLElementType (MATH_TYPE, gi, &elType, &ptr, &c, doc);
1.5       cvs       444:        if (elType.ElTypeNum == 0 && (!ptr || !ustrcmp (ptr, TEXT("GraphML"))))
1.1       cvs       445:          MapXMLElementType (GRAPH_TYPE, gi, &elType, &ptr, &c, doc);
                    446: #endif
                    447:        if (elType.ElTypeNum == 0)
                    448:          {
                    449:             entry = -1;
                    450:            elType.ElSSchema = NULL;
                    451:            *schema = NULL;
                    452:          }
                    453:        else
                    454:          {
                    455:             entry = elType.ElTypeNum;
                    456:             *schema = elType.ElSSchema;
                    457:          }
                    458:       }
                    459:   return entry;
                    460: }
                    461: 
                    462: /*----------------------------------------------------------------------
                    463:    GIType  search in mapping tables the Element type associated with
                    464:    a given GI Name. If not found returns zero.
                    465:   ----------------------------------------------------------------------*/
                    466: #ifdef __STDC__
                    467: void                GIType (STRING gi, ElementType *elType, Document doc)
                    468: #else
                    469: void                GIType (gi, elType, doc)
                    470: STRING              gi;
                    471: ElementType        *elType;
                    472: Document           doc;
                    473: #endif
                    474: {
                    475:   CHAR_T              c;
                    476:   STRING              ptr;
                    477:   int                 i;
                    478: 
                    479:   /* TODO: use NameSpaces to search in the right table */
                    480:   elType->ElSSchema = NULL;
                    481:   elType->ElTypeNum = 0;
                    482: 
                    483:   /*
                    484:     First convert the first char into lower case to locate
                    485:     registered tags in the HTML mapping table.
                    486:     Entries are registered in upper case and in alphabetic order.
                    487:   */
                    488: 
                    489:   /* TODO: define a function which works on unicode */
1.7       cvs       490:   c = tolower (gi[0]);
1.1       cvs       491: 
                    492:   i = 0;
                    493:   /* look for the first concerned entry in the table */
1.4       cvs       494:   while (HTMLGIMappingTable[i].htmlGI[0] < c &&
                    495:         HTMLGIMappingTable[i].htmlGI[0] != EOS)
1.1       cvs       496:     i++;
                    497:   /* look at all entries starting with the right character */
                    498:   do
                    499:     {
                    500:       if (!ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
1.4       cvs       501:       {
                    502:        if (doc != 0)
                    503:         elType->ElSSchema = TtaGetSSchema (TEXT("HTML"), doc);
                    504:        elType->ElTypeNum = HTMLGIMappingTable[i].ThotType;
                    505:        return;
                    506:       }
1.1       cvs       507:       i++;
                    508:     }
                    509:   while (HTMLGIMappingTable[i].htmlGI[0] == c);
                    510: 
                    511: #ifndef STANDALONE
                    512:   /* if not found, look at the XML mapping tables */
                    513:   MapXMLElementType (MATH_TYPE, gi, elType, &ptr, &c, doc);
                    514:   if (elType->ElTypeNum == 0)
1.4       cvs       515:   MapXMLElementType (GRAPH_TYPE, gi, elType, &ptr, &c, doc);
1.1       cvs       516: #endif
1.4       cvs       517: }
                    518: 
                    519: /*----------------------------------------------------------------------
                    520:    MapAttr search in all AttributeMappingTables the entry for the
                    521:    attribute of name Attr and returns a pointer to that entry,
                    522:    as well as the corresponding Thot SSchema
                    523:   ----------------------------------------------------------------------*/
                    524: #ifdef __STDC__
                    525: AttributeMapping   *MapAttr (STRING Attr, SSchema *schema, int elemEntry, Document doc)
                    526: #else
                    527: AttributeMapping   *MapAttr (Attr, schema, elemEntry, doc)
                    528: STRING              Attr;
                    529: SSchema            *schema;
                    530: int                 elemEntry;
                    531: Document            doc;
                    532: #endif
                    533: {
                    534:   int                 i;
                    535:   int                 entry;
                    536: 
                    537:   entry = -1;
                    538:   *schema = NULL;
                    539:   i = 0;
                    540:   do
                    541:     if (!ustrcasecmp (HTMLAttributeMappingTable[i].XMLattribute, Attr))
                    542:       if (HTMLAttributeMappingTable[i].XMLelement[0] == EOS)
                    543:         {
                    544:          entry = i;
                    545:          *schema = TtaGetDocumentSSchema (doc);
                    546:        }
                    547:      else if (elemEntry >= 0 &&
                    548:              !ustrcasecmp (HTMLAttributeMappingTable[i].XMLelement,
                    549:                            pHTMLGIMapping[elemEntry].htmlGI))
                    550:        {
                    551:         entry = i;
                    552:         *schema = TtaGetDocumentSSchema (doc);
                    553:        }
                    554:       else
                    555:        i++;
                    556:     else
                    557:       i++;
                    558:   while (entry < 0 && HTMLAttributeMappingTable[i].AttrOrContent != EOS);
                    559: 
                    560:   if (entry >= 0)
                    561:     return (&HTMLAttributeMappingTable[entry]);
                    562:   else
                    563:     return (NULL);
                    564: }
                    565: 
                    566: /*----------------------------------------------------------------------
                    567:    MapHTMLAttribute search in the HTML Attribute Mapping Tables the entry
                    568:    for the attribute of name Attr and returns the corresponding Thot
                    569:    attribute type.
                    570:   ----------------------------------------------------------------------*/
                    571: #ifdef __STDC__
                    572: void           MapHTMLAttribute (STRING Attr, AttributeType *attrType, STRING elementName, Document doc)
                    573: #else
                    574: void           MapHTMLAttribute (Attr, attrType, elementName, doc)
                    575: STRING         Attr;
                    576: AttributeType *attrType;
                    577: STRING         elementName;
                    578: Document       doc;
                    579: #endif
                    580: {
                    581:   SSchema             schema = NULL;
                    582:   AttributeMapping*   tableEntry;
                    583:   int                 elemEntry;
                    584: 
                    585:   elemEntry = MapGI (elementName, &schema, doc);
                    586:   if (elemEntry >= 0)
                    587:     {
                    588:       tableEntry = MapAttr (Attr, &schema, elemEntry, doc);
                    589:       if (tableEntry != NULL)
                    590:        {
                    591:          attrType->AttrTypeNum = tableEntry->ThotAttribute;
                    592:          if (schema == NULL && doc != 0)
                    593:            attrType->AttrSSchema = TtaGetSSchema (TEXT("HTML"), doc);
                    594:          else      
                    595:            attrType->AttrSSchema = schema;
                    596:        }
                    597:       else
                    598:        {
                    599:          attrType->AttrTypeNum = 0;
                    600:          attrType->AttrSSchema = NULL;
                    601:        }
                    602:     }
                    603:   else
                    604:     {
                    605:       attrType->AttrTypeNum = 0;
                    606:       attrType->AttrSSchema = NULL;
                    607:     }
1.1       cvs       608: }

Webmaster