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

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.15      cvs       114: #ifdef GRAPHML
1.16      cvs       115:    {TEXT("height"), TEXT("svg"), 'A', HTML_ATTR_SvgHeight, L_Transitional},
1.17      cvs       116: #endif /* GRAPHML */
1.18    ! cvs       117:    {TEXT("height"), TEXT("img"), 'A', HTML_ATTR_Height_, L_Basic},
        !           118:    {TEXT("height"), TEXT("object"), 'A', HTML_ATTR_Height_, L_Basic},
        !           119:    {TEXT("height"), TEXT(""), 'A', HTML_ATTR_Height_, L_Transitional},
1.17      cvs       120:    {TEXT("href"), TEXT(""), 'A', HTML_ATTR_HREF_, L_Basic},
                    121:    {TEXT("hreflang"), TEXT(""), 'A', HTML_ATTR_hreflang, L_Basic},
1.16      cvs       122:    {TEXT("hspace"), TEXT(""), 'A', HTML_ATTR_hspace, L_Transitional},
1.17      cvs       123:    {TEXT("http-equiv"), TEXT(""), 'A', HTML_ATTR_http_equiv, L_Basic},
1.16      cvs       124: 
1.17      cvs       125:    {TEXT("id"), TEXT(""), 'A', HTML_ATTR_ID, L_Basic},
1.16      cvs       126:    {TEXT("ismap"), TEXT(""), 'A', HTML_ATTR_ISMAP, L_Transitional},
                    127: 
1.17      cvs       128:    {TEXT("label"), TEXT(""), 'A', HTML_ATTR_label, L_Basic},
                    129:    {TEXT("lang"), TEXT(""), 'A', HTML_ATTR_Langue, L_Basic},
                    130:    {TEXT("language"), TEXT("script"), 'A', HTML_ATTR_script_language, L_Basic},
                    131:    {TEXT("link"), TEXT("body"), 'A', HTML_ATTR_LinkColor, L_Basic},
                    132:    {TEXT("longdesc"), TEXT(""), 'A', HTML_ATTR_longdesc, L_Basic},
1.16      cvs       133: 
                    134:    {TEXT("marginheight"), TEXT(""), 'A', HTML_ATTR_marginheight, L_Transitional},
                    135:    {TEXT("marginwidth"), TEXT(""), 'A', HTML_ATTR_marginwidth, L_Transitional},
1.17      cvs       136:    {TEXT("maxlength"), TEXT(""), 'A', HTML_ATTR_MaxLength, L_Basic},
                    137:    {TEXT("media"), TEXT(""), 'A', HTML_ATTR_media, L_Basic},
                    138:    {TEXT("method"), TEXT(""), 'A', HTML_ATTR_METHOD, L_Basic},
                    139:    {TEXT("mode"), TEXT(""), 'A', HTML_ATTR_mode, L_Basic},
                    140:    {TEXT("multiple"), TEXT(""), 'A', HTML_ATTR_Multiple, L_Basic},
                    141: 
                    142:    {TEXT("N"), TEXT(""), 'C', 0, L_Basic},
1.18    ! cvs       143:    {TEXT("name"), TEXT("applet"), 'A', HTML_ATTR_applet_name, L_Transitional},
        !           144:    {TEXT("name"), TEXT("frame"), 'A', HTML_ATTR_FrameName, L_Transitional},
        !           145:    {TEXT("name"), TEXT("iframe"), 'A', HTML_ATTR_FrameName, L_Transitional},
1.17      cvs       146:    {TEXT("name"), TEXT("meta"), 'A', HTML_ATTR_meta_name, L_Basic},
                    147:    {TEXT("name"), TEXT("param"), 'A', HTML_ATTR_Param_name, L_Basic},
                    148:    {TEXT("name"), TEXT(""), 'A', HTML_ATTR_NAME, L_Basic},
                    149:    {TEXT("nohref"), TEXT(""), 'A', HTML_ATTR_nohref, L_Basic},
                    150:    {TEXT("noresize"), TEXT(""), 'A', HTML_ATTR_no_resize, L_Basic},
                    151:    {TEXT("noshade"), TEXT(""), 'A', HTML_ATTR_NoShade, L_Basic},
1.18    ! cvs       152:    {TEXT("nowrap"), TEXT(""), 'A', HTML_ATTR_No_wrap, L_Transitional},
1.16      cvs       153: 
                    154:    {TEXT("object"), TEXT("applet"), 'A', HTML_ATTR_object, L_Transitional},
                    155:    {TEXT("onblur"), TEXT(""), 'A', HTML_ATTR_onblur, L_Transitional},
                    156:    {TEXT("onchange"), TEXT(""), 'A', HTML_ATTR_onchange, L_Transitional},
                    157:    {TEXT("onclick"), TEXT(""), 'A', HTML_ATTR_onclick, L_Transitional},
                    158:    {TEXT("ondblclick"), TEXT(""), 'A', HTML_ATTR_ondblclick, L_Transitional},
                    159:    {TEXT("onfocus"), TEXT(""), 'A', HTML_ATTR_onfocus, L_Transitional},
                    160:    {TEXT("onkeydown"), TEXT(""), 'A', HTML_ATTR_onkeydown, L_Transitional},
                    161:    {TEXT("onkeypress"), TEXT(""), 'A', HTML_ATTR_onkeypress, L_Transitional},
                    162:    {TEXT("onkeyup"), TEXT(""), 'A', HTML_ATTR_onkeyup, L_Transitional},
                    163:    {TEXT("onload"), TEXT(""), 'A', HTML_ATTR_onload, L_Transitional},
                    164:    {TEXT("onmousedown"), TEXT(""), 'A', HTML_ATTR_onmousedown, L_Transitional},
                    165:    {TEXT("onmousemove"), TEXT(""), 'A', HTML_ATTR_onmousemove, L_Transitional},
                    166:    {TEXT("onmouseout"), TEXT(""), 'A', HTML_ATTR_onmouseout, L_Transitional},
                    167:    {TEXT("onmouseover"), TEXT(""), 'A', HTML_ATTR_onmouseover, L_Transitional},
                    168:    {TEXT("onmouseup"), TEXT(""), 'A', HTML_ATTR_onmouseup, L_Transitional},
                    169:    {TEXT("onreset"), TEXT("form"), 'A', HTML_ATTR_onreset, L_Transitional},
                    170:    {TEXT("onselect"), TEXT(""), 'A', HTML_ATTR_onselect, L_Transitional},
                    171:    {TEXT("onsubmit"), TEXT("form"), 'A', HTML_ATTR_onsubmit, L_Transitional},
                    172:    {TEXT("onunload"), TEXT(""), 'A', HTML_ATTR_onunload, L_Transitional},
                    173: 
1.17      cvs       174:    {TEXT("profile"), TEXT("head"), 'A', HTML_ATTR_profile, L_Basic},
1.16      cvs       175:    {TEXT("prompt"), TEXT(""), 'A', HTML_ATTR_Prompt, L_Transitional},
                    176: 
1.17      cvs       177:    {TEXT("readonly"), TEXT(""), 'A', HTML_ATTR_readonly, L_Basic},
                    178:    {TEXT("rel"), TEXT(""), 'A', HTML_ATTR_REL, L_Basic},
                    179:    {TEXT("rev"), TEXT(""), 'A', HTML_ATTR_REV, L_Basic},
1.16      cvs       180:    {TEXT("rows"), TEXT("frameset"), 'A', HTML_ATTR_RowHeight, L_Transitional},
1.17      cvs       181:    {TEXT("rows"), TEXT("textarea"), 'A', HTML_ATTR_Rows, L_Basic},
                    182:    {TEXT("rowspan"), TEXT(""), 'A', HTML_ATTR_rowspan_, L_Basic},
1.18    ! cvs       183:    {TEXT("rules"), TEXT("table"), 'A', HTML_ATTR_rules_, L_Transitional},
1.16      cvs       184: 
1.17      cvs       185:    {TEXT("scheme"), TEXT("meta"), 'A', HTML_ATTR_scheme, L_Basic},
                    186:    {TEXT("scope"), TEXT(""), 'A', HTML_ATTR_scope, L_Basic},
1.16      cvs       187:    {TEXT("scrolling"), TEXT(""), 'A', HTML_ATTR_scrolling, L_Transitional},
                    188:    {TEXT("selected"), TEXT(""), 'A', HTML_ATTR_Selected, L_Transitional},
                    189:    {TEXT("shape"), TEXT(""), 'A', HTML_ATTR_shape, L_Transitional},
                    190:    {TEXT("size"), TEXT("basefont"), 'A', HTML_ATTR_BaseFontSize, L_Transitional},
                    191:    {TEXT("size"), TEXT("font"), 'A', HTML_ATTR_Font_size, L_Transitional},
                    192:    {TEXT("size"), TEXT("hr"), 'A', HTML_ATTR_Size_, L_Transitional},
                    193:    {TEXT("size"), TEXT("input"), 'A', HTML_ATTR_Area_Size, L_Transitional},
                    194:    {TEXT("size"), TEXT("select"), 'A', HTML_ATTR_MenuSize, L_Transitional},
                    195:    {TEXT("span"), TEXT("col"), 'A', HTML_ATTR_span_, L_Transitional},
                    196:    {TEXT("span"), TEXT("colgroup"), 'A', HTML_ATTR_span_, L_Transitional},
                    197:    {TEXT("src"), TEXT("frame"), 'A', HTML_ATTR_FrameSrc, L_Transitional},
                    198:    {TEXT("src"), TEXT("iframe"), 'A', HTML_ATTR_FrameSrc, L_Transitional},
                    199:    {TEXT("src"), TEXT("script"), 'A', HTML_ATTR_script_src, L_Transitional},
1.17      cvs       200:    {TEXT("src"), TEXT(""), 'A', HTML_ATTR_SRC, L_Basic},
                    201:    {TEXT("standby"), TEXT(""), 'A', HTML_ATTR_standby, L_Basic},
                    202:    {TEXT("start"), TEXT(""), 'A', HTML_ATTR_Start, L_Basic},
                    203:    {TEXT("style"), TEXT(""), 'A', HTML_ATTR_Style_, L_Basic},
                    204:    {TEXT("summary"), TEXT("table"), 'A', HTML_ATTR_summary, L_Basic},
                    205: 
                    206:    {TEXT("tabindex"), TEXT(""), 'A', HTML_ATTR_tabindex, L_Basic},
                    207:    {TEXT("target"), TEXT(""), 'A', HTML_ATTR_target_, L_Basic},
                    208:    {TEXT("text"), TEXT(""), 'A', HTML_ATTR_TextColor, L_Basic},
                    209:    {TEXT("title"), TEXT(""), 'A', HTML_ATTR_Title, L_Basic},
1.16      cvs       210:    {TEXT("type"), TEXT("button"), 'A', HTML_ATTR_Button_type, L_Transitional},
1.17      cvs       211:    {TEXT("type"), TEXT("li"), 'A', HTML_ATTR_ItemStyle, L_Basic},
                    212:    {TEXT("type"), TEXT("link"), 'A', HTML_ATTR_Link_type, L_Basic},
                    213:    {TEXT("type"), TEXT("a"), 'A', HTML_ATTR_Link_type, L_Basic},
                    214:    {TEXT("type"), TEXT("object"), 'A', HTML_ATTR_Object_type, L_Basic},
                    215:    {TEXT("type"), TEXT("ol"), 'A', HTML_ATTR_NumberStyle, L_Basic},
                    216:    {TEXT("type"), TEXT("param"), 'A', HTML_ATTR_Param_type, L_Basic},
1.16      cvs       217:    {TEXT("type"), TEXT("script"), 'A', HTML_ATTR_content_type, L_Transitional},
                    218:    {TEXT("type"), TEXT("style"), 'A', HTML_ATTR_Notation, L_Transitional},
1.17      cvs       219:    {TEXT("type"), TEXT("ul"), 'A', HTML_ATTR_BulletStyle, L_Basic},
                    220:    {TEXT("type"), TEXT(""), SPACE, DummyAttribute, L_Basic},
1.16      cvs       221: 
1.18    ! cvs       222:    {TEXT("unknown_attr"), TEXT(""), 'A', HTML_ATTR_Invalid_attribute, L_Transitional},
1.17      cvs       223:    {TEXT("usemap"), TEXT(""), 'A', HTML_ATTR_USEMAP, L_Basic},
1.16      cvs       224: 
1.18    ! cvs       225:    {TEXT("valign"), TEXT("tbody"), 'A', HTML_ATTR_Row_valign, L_Transitional},
        !           226:    {TEXT("valign"), TEXT("td"), 'A', HTML_ATTR_Cell_valign, L_Transitional},
        !           227:    {TEXT("valign"), TEXT("tfoot"), 'A', HTML_ATTR_Row_valign, L_Transitional},
        !           228:    {TEXT("valign"), TEXT("th"), 'A', HTML_ATTR_Cell_valign, L_Transitional},
        !           229:    {TEXT("valign"), TEXT("thead"), 'A', HTML_ATTR_Row_valign, L_Transitional},
        !           230:    {TEXT("valign"), TEXT("tr"), 'A', HTML_ATTR_Row_valign, L_Transitional},
1.17      cvs       231:    {TEXT("value"), TEXT("li"), 'A', HTML_ATTR_ItemValue, L_Basic},
                    232:    {TEXT("value"), TEXT("param"), 'A', HTML_ATTR_Param_value, L_Basic},
                    233:    {TEXT("value"), TEXT(""), 'A', HTML_ATTR_Value_, L_Basic},
                    234:    {TEXT("valuetype"), TEXT("param"), 'A', HTML_ATTR_valuetype, L_Basic},
                    235:    {TEXT("version"), TEXT(""), 'A', 0, L_Basic},
1.16      cvs       236:    {TEXT("vlink"), TEXT("body"), 'A', HTML_ATTR_VisitedLinkColor, L_Transitional},
                    237:    {TEXT("vspace"), TEXT(""), 'A', HTML_ATTR_vspace, L_Transitional},
                    238: 
                    239:    {TEXT("width"), TEXT("applet"), 'A', HTML_ATTR_Width__, L_Transitional},
1.18    ! cvs       240:    {TEXT("width"), TEXT("col"), 'A', HTML_ATTR_Width__, L_Strict},
        !           241:    {TEXT("width"), TEXT("colgroup"), 'A', HTML_ATTR_Width__, L_Strict},
1.16      cvs       242:    {TEXT("width"), TEXT("hr"), 'A', HTML_ATTR_Width__, L_Transitional},
                    243:    {TEXT("width"), TEXT("iframe"), 'A', HTML_ATTR_Width__, L_Transitional},
                    244:    {TEXT("width"), TEXT("image"), 'A', HTML_ATTR_Width__, L_Transitional},
1.17      cvs       245:    {TEXT("width"), TEXT("img"), 'A', HTML_ATTR_Width__, L_Basic},
                    246:    {TEXT("width"), TEXT("object"), 'A', HTML_ATTR_Width__, L_Basic},
1.16      cvs       247:    {TEXT("width"), TEXT("pre"), 'A', HTML_ATTR_Width__, L_Transitional},
1.4       cvs       248: #ifdef GRAPHML
1.18    ! cvs       249:    {TEXT("width"), TEXT("svg"), 'A', HTML_ATTR_SvgWidth, L_Strict},
1.17      cvs       250: #endif /* GRAPHML */
1.16      cvs       251:    {TEXT("width"), TEXT("table"), 'A', HTML_ATTR_Width__, L_Transitional},
                    252:    {TEXT("width"), TEXT("td"), 'A', HTML_ATTR_Width__, L_Transitional},
                    253:    {TEXT("width"), TEXT("th"), 'A', HTML_ATTR_Width__, L_Transitional},
                    254: #ifdef GRAPHML
                    255:    {TEXT("width"), TEXT("xmlgraphics"), 'A', HTML_ATTR_Width__, L_Transitional},
1.17      cvs       256: #endif /* GRAPHML */
                    257: 
                    258:    {TEXT("zzghost"), TEXT(""), 'A', HTML_ATTR_Ghost_restruct, L_Basic},
1.18    ! cvs       259:    {TEXT(""), TEXT(""), EOS, 0, L_Undefined}           /* Last entry. Mandatory */
1.4       cvs       260: };
1.1       cvs       261: 
                    262: /* define a pointer to let other parser functions access the local table */
1.17      cvs       263: AttributeMapping *pHTMLAttributeMapping = XhtmlAttributeMappingTable;
1.4       cvs       264: 
1.1       cvs       265: 
                    266: /*----------------------------------------------------------------------
                    267:    MapGI
                    268:    search in the mapping tables the entry for the element of
                    269:    name GI and returns the rank of that entry.
                    270:    When returning, schema contains the Thot SSchema that defines that element,
                    271:    Returns -1 and schema = NULL if not found.
                    272:   ----------------------------------------------------------------------*/
                    273: #ifdef __STDC__
1.12      cvs       274: int                 MapGI (CHAR_T* gi, SSchema *schema, Document doc)
1.1       cvs       275: #else
                    276: int                 MapGI (gi, schema, doc)
1.12      cvs       277: CHAR_T*             gi;
1.9       cvs       278: SSchema*            schema;
1.1       cvs       279: Document            doc;
                    280: #endif
                    281: {
1.9       cvs       282:   ElementType     elType;
1.11      cvs       283:   CHAR_T*         ptr; 
1.12      cvs       284:   CHAR_T          c;
1.9       cvs       285:   int             i;
                    286:   int             entry;
1.14      cvs       287:   ThotBool       isHTML;
1.1       cvs       288: 
                    289:   /* TODO: use NameSpaces to search in the right table */
                    290:   entry = -1;
                    291:   if (*schema == NULL)
                    292:     {
                    293:       isHTML = FALSE;
                    294:       ptr = NULL;
                    295:     }
                    296:   else
                    297:     {
                    298:       ptr = TtaGetSSchemaName (*schema);
1.11      cvs       299:       isHTML = !ustrcmp (ptr, TEXT("HTML"));
1.1       cvs       300:     }
                    301: 
                    302:   i = 0;
                    303:   if (*schema == NULL || isHTML)
                    304:     {
                    305:       /*
                    306:        First convert the first char into lower case to locate
                    307:        registered tags in the HTML mapping table.
                    308:        Entries are registered in upper case and in alphabetic order.
                    309:       */
                    310: 
                    311:       /* TODO: define a function which works on unicode */
1.12      cvs       312:       c = utolower (gi[0]);
1.1       cvs       313:       /* look for the first concerned entry in the table */
1.16      cvs       314:       while (pHTMLGIMapping[i].XMLname[0] < c
                    315:             && pHTMLGIMapping[i].XMLname[0] != EOS)
1.1       cvs       316:        i++;
                    317: 
                    318:       /* look at all entries starting with the right character */
                    319:       do
                    320:        {
1.16      cvs       321:          if (ustrcasecmp (pHTMLGIMapping[i].XMLname, gi))
1.1       cvs       322:            i++;
                    323:          else
                    324:            entry = i;
                    325:        }
1.16      cvs       326:       while (entry < 0 && pHTMLGIMapping[i].XMLname[0] == c);
1.1       cvs       327:     }
                    328: 
                    329:   if (entry < 0)
                    330:     if (*schema != NULL && isHTML)
                    331:       *schema = NULL;
                    332:     else
                    333:       /* not found. Look at the XML mapping tables */
                    334:       {
                    335:        elType.ElTypeNum = 0;
                    336:        elType.ElSSchema = *schema;
                    337: 
                    338: #ifndef STANDALONE
1.11      cvs       339:        if (!ptr || !ustrcmp (ptr, TEXT("MathML")))
1.1       cvs       340:          MapXMLElementType (MATH_TYPE, gi, &elType, &ptr, &c, doc);
1.11      cvs       341:        if (elType.ElTypeNum == 0 && (!ptr || !ustrcmp (ptr, TEXT("GraphML"))))
1.1       cvs       342:          MapXMLElementType (GRAPH_TYPE, gi, &elType, &ptr, &c, doc);
                    343: #endif
                    344:        if (elType.ElTypeNum == 0)
                    345:          {
                    346:             entry = -1;
                    347:            elType.ElSSchema = NULL;
                    348:            *schema = NULL;
                    349:          }
                    350:        else
                    351:          {
                    352:             entry = elType.ElTypeNum;
                    353:             *schema = elType.ElSSchema;
                    354:          }
                    355:       }
                    356:   return entry;
                    357: }
                    358: 
                    359: /*----------------------------------------------------------------------
                    360:    GIType  search in mapping tables the Element type associated with
                    361:    a given GI Name. If not found returns zero.
                    362:   ----------------------------------------------------------------------*/
                    363: #ifdef __STDC__
1.12      cvs       364: void                GIType (CHAR_T* gi, ElementType *elType, Document doc)
1.1       cvs       365: #else
                    366: void                GIType (gi, elType, doc)
1.12      cvs       367: CHAR_T*             gi;
1.9       cvs       368: ElementType*        elType;
                    369: Document            doc;
1.1       cvs       370: #endif
                    371: {
1.12      cvs       372:   CHAR_T              c;
                    373:   CHAR_T*             ptr;
1.1       cvs       374:   int                 i;
                    375: 
                    376:   /* TODO: use NameSpaces to search in the right table */
                    377:   elType->ElSSchema = NULL;
                    378:   elType->ElTypeNum = 0;
                    379: 
                    380:   /*
                    381:     First convert the first char into lower case to locate
                    382:     registered tags in the HTML mapping table.
                    383:     Entries are registered in upper case and in alphabetic order.
                    384:   */
                    385: 
                    386:   /* TODO: define a function which works on unicode */
1.12      cvs       387:   c = utolower (gi[0]);
1.1       cvs       388: 
                    389:   i = 0;
                    390:   /* look for the first concerned entry in the table */
1.16      cvs       391:   while (pHTMLGIMapping[i].XMLname[0] < c &&
                    392:         pHTMLGIMapping[i].XMLname[0] != EOS)
1.1       cvs       393:     i++;
                    394:   /* look at all entries starting with the right character */
                    395:   do
                    396:     {
1.16      cvs       397:       if (!ustrcasecmp (pHTMLGIMapping[i].XMLname, gi))
1.4       cvs       398:       {
                    399:        if (doc != 0)
1.11      cvs       400:         elType->ElSSchema = TtaGetSSchema (TEXT("HTML"), doc);
1.16      cvs       401:        elType->ElTypeNum = pHTMLGIMapping[i].ThotType;
1.4       cvs       402:        return;
                    403:       }
1.1       cvs       404:       i++;
                    405:     }
1.16      cvs       406:   while (pHTMLGIMapping[i].XMLname[0] == c);
1.1       cvs       407: 
                    408: #ifndef STANDALONE
                    409:   /* if not found, look at the XML mapping tables */
                    410:   MapXMLElementType (MATH_TYPE, gi, elType, &ptr, &c, doc);
                    411:   if (elType->ElTypeNum == 0)
1.4       cvs       412:   MapXMLElementType (GRAPH_TYPE, gi, elType, &ptr, &c, doc);
1.1       cvs       413: #endif
1.4       cvs       414: }
                    415: 
                    416: /*----------------------------------------------------------------------
                    417:    MapAttr search in all AttributeMappingTables the entry for the
                    418:    attribute of name Attr and returns a pointer to that entry,
                    419:    as well as the corresponding Thot SSchema
                    420:   ----------------------------------------------------------------------*/
                    421: #ifdef __STDC__
1.18    ! cvs       422: AttributeMapping   *MapAttr (CHAR_T *attrName, SSchema *schema, int elemEntry, Document doc)
1.4       cvs       423: #else
1.18    ! cvs       424: AttributeMapping   *MapAttr (attrName, schema, elemEntry, doc)
        !           425: CHAR_T             *attrName;
        !           426: SSchema            *schema;
1.4       cvs       427: int                 elemEntry;
                    428: Document            doc;
                    429: #endif
                    430: {
1.18    ! cvs       431:   int               i;
        !           432:   *schema = TtaGetDocumentSSchema (doc);
        !           433:   i = XmlMapAttribute (attrName, pHTMLGIMapping[elemEntry].XMLname, doc, XhtmlAttributeMappingTable);
        !           434:   if (XhtmlAttributeMappingTable[i].XMLattribute[0] != attrName[0])
        !           435:     /* not found */
        !           436:     return (NULL);
1.4       cvs       437:   else
1.18    ! cvs       438:     return (&XhtmlAttributeMappingTable[i]);
1.4       cvs       439: }
                    440: 
1.18    ! cvs       441: 
1.4       cvs       442: /*----------------------------------------------------------------------
1.18    ! cvs       443:    MapHTMLAttribute
        !           444:    Search in the Attribute Mapping Table the entry for the attribute
        !           445:    of name Attr and returns the corresponding Thot attribute type.
1.4       cvs       446:   ----------------------------------------------------------------------*/
                    447: #ifdef __STDC__
1.18    ! cvs       448: AttributeMapping *MapHTMLAttribute (CHAR_T *attrName,
        !           449:                                    AttributeType *attrType,
        !           450:                                    CHAR_T *elementName,
        !           451:                                    Document doc)
1.4       cvs       452: #else
1.18    ! cvs       453: AttributeMapping *MapHTMLAttribute (attrName,
        !           454:                                    attrType,
        !           455:                                    elementName,
        !           456:                                     doc)
        !           457: CHAR_T*           attrName;
        !           458: AttributeType*    attrType;
        !           459: CHAR_T*           elementName;
        !           460: Document          doc;
1.4       cvs       461: #endif
                    462: {
1.18    ! cvs       463:   int                 i;
1.4       cvs       464: 
1.18    ! cvs       465:   attrType->AttrSSchema = GetXHTMLSSchema (doc);
        !           466:   i = XmlMapAttribute (attrName, elementName, doc, XhtmlAttributeMappingTable);
        !           467:   if (XhtmlAttributeMappingTable[i].XMLattribute[0] != attrName[0])
1.4       cvs       468:     {
1.18    ! cvs       469:       /* not found */
        !           470:       attrType->AttrTypeNum = 0;
        !           471:       return (NULL);
1.4       cvs       472:     }
                    473:   else
                    474:     {
1.18    ! cvs       475:       attrType->AttrTypeNum = XhtmlAttributeMappingTable[i].ThotAttribute;
        !           476:       return (&XhtmlAttributeMappingTable[i]);
1.4       cvs       477:     }
1.1       cvs       478: }
1.18    ! cvs       479: 

Webmaster