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

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: 

Webmaster