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