Annotation of Amaya/amaya/fetchHTMLname.c, revision 1.8
1.1 cvs 1: /*
2: *
3: * (c) COPYRIGHT MIT and INRIA, 1996.
4: * Please first read the full copyright statement in file COPYRIGHT.
5: *
6: */
7:
8: /*
9: *
10: * fetchHTMLname
11: *
12: * Author: I. Vatton
13: *
14: */
15:
16: /* This module is used by the html2thot parser and the css parser. */
17:
1.2 cvs 18: #define THOT_EXPORT
1.1 cvs 19: #include "amaya.h"
20: #include "fetchHTMLname.h"
21: #include "parser.h"
22:
1.3 cvs 23: #include "fetchHTMLname_f.h"
24: #include "fetchXMLname_f.h"
25:
1.1 cvs 26: /* mapping table of HTML elements */
27: static GIMapping HTMLGIMappingTable[] =
28: {
29: /* This table MUST be in alphabetical order */
1.7 cvs 30: {TEXT ("a"), SPACE, HTML_EL_Anchor, NULL},
31: {TEXT ("abbr"), SPACE, HTML_EL_ABBR, NULL},
32: {TEXT ("acronym"), SPACE, HTML_EL_ACRONYM, NULL},
33: {TEXT ("address"), SPACE, HTML_EL_Address, NULL},
34: {TEXT ("applet"), SPACE, HTML_EL_Applet, NULL},
35: {TEXT ("area"), TEXT ('E'), HTML_EL_AREA, NULL},
36: {TEXT ("b"), SPACE, HTML_EL_Bold_text, NULL},
37: {TEXT ("base"), TEXT ('E'), HTML_EL_BASE, NULL},
38: {TEXT ("basefont"), TEXT ('E'), HTML_EL_BaseFont, NULL},
39: {TEXT ("bdo"), SPACE, HTML_EL_BDO, NULL},
40: {TEXT ("big"), SPACE, HTML_EL_Big_text, NULL},
41: {TEXT ("blockquote"), SPACE, HTML_EL_Block_Quote, NULL},
42: {TEXT ("body"), SPACE, HTML_EL_BODY, NULL},
43: {TEXT ("br"), TEXT ('E'), HTML_EL_BR, NULL},
44: {TEXT ("button"), SPACE, HTML_EL_BUTTON, NULL},
45: {TEXT ("c"), SPACE, HTML_EL_TEXT_UNIT, NULL},
46: {TEXT ("caption"), SPACE, HTML_EL_CAPTION, NULL},
47: {TEXT ("center"), SPACE, HTML_EL_Center, NULL},
48: {TEXT ("cite"), SPACE, HTML_EL_Cite, NULL},
49: {TEXT ("code"), SPACE, HTML_EL_Code, NULL},
50: {TEXT ("colgroup"), SPACE, HTML_EL_COLGROUP, NULL},
51: {TEXT ("col"), SPACE, HTML_EL_COL, NULL},
52: {TEXT ("dd"), SPACE, HTML_EL_Definition, NULL},
53: {TEXT ("del"), SPACE, HTML_EL_DEL, NULL},
54: {TEXT ("dfn"), SPACE, HTML_EL_Def, NULL},
55: {TEXT ("dir"), SPACE, HTML_EL_Directory, NULL},
56: {TEXT ("div"), SPACE, HTML_EL_Division, NULL},
57: {TEXT ("dl"), SPACE, HTML_EL_Definition_List, NULL},
58: {TEXT ("dt"), SPACE, HTML_EL_Term, NULL},
59: {TEXT ("em"), SPACE, HTML_EL_Emphasis, NULL},
60: {TEXT ("fieldset"), SPACE, HTML_EL_FIELDSET, NULL},
61: {TEXT ("font"), SPACE, HTML_EL_Font_, NULL},
62: {TEXT ("form"), SPACE, HTML_EL_Form, NULL},
63: {TEXT ("frame"), TEXT ('E'), HTML_EL_FRAME, NULL},
64: {TEXT ("frameset"), SPACE, HTML_EL_FRAMESET, NULL},
65: {TEXT ("h1"), SPACE, HTML_EL_H1, NULL},
66: {TEXT ("h2"), SPACE, HTML_EL_H2, NULL},
67: {TEXT ("h3"), SPACE, HTML_EL_H3, NULL},
68: {TEXT ("h4"), SPACE, HTML_EL_H4, NULL},
69: {TEXT ("h5"), SPACE, HTML_EL_H5, NULL},
70: {TEXT ("h6"), SPACE, HTML_EL_H6, NULL},
71: {TEXT ("head"), SPACE, HTML_EL_HEAD, NULL},
72: {TEXT ("hr"), TEXT ('E'), HTML_EL_Horizontal_Rule, NULL},
73: {TEXT ("html"), SPACE, HTML_EL_HTML, NULL},
74: {TEXT ("i"), SPACE, HTML_EL_Italic_text, NULL},
75: {TEXT ("iframe"), SPACE, HTML_EL_IFRAME, NULL},
76: {TEXT ("image"), TEXT ('E'), HTML_EL_PICTURE_UNIT, NULL},
77: {TEXT ("img"), TEXT ('E'), HTML_EL_PICTURE_UNIT, NULL},
78: {TEXT ("input"), TEXT ('E'), HTML_EL_Input, NULL},
79: {TEXT ("ins"), SPACE, HTML_EL_INS, NULL},
80: {TEXT ("isindex"), TEXT ('E'), HTML_EL_ISINDEX, NULL},
81: {TEXT ("kbd"), SPACE, HTML_EL_Keyboard, NULL},
82: {TEXT ("label"), SPACE, HTML_EL_LABEL, NULL},
83: {TEXT ("legend"), SPACE, HTML_EL_LEGEND, NULL},
84: {TEXT ("li"), SPACE, HTML_EL_List_Item, NULL},
85: {TEXT ("link"), TEXT ('E'), HTML_EL_LINK, NULL},
86: {TEXT ("listing"), SPACE, HTML_EL_Preformatted, NULL}, /*converted to PRE */
87: {TEXT ("map"), SPACE, HTML_EL_MAP, NULL},
88: {TEXT ("math"), SPACE, HTML_EL_Math, NULL},
89: {TEXT ("mathdisp"), SPACE, HTML_EL_Math, NULL}, /* for compatibility with an
1.1 cvs 90: old version of MathML: WD-math-970704 */
1.7 cvs 91: {TEXT ("menu"), SPACE, HTML_EL_Menu, NULL},
92: {TEXT ("meta"), TEXT ('E'), HTML_EL_META, NULL},
93: {TEXT ("noframes"), SPACE, HTML_EL_NOFRAMES, NULL},
94: {TEXT ("noscript"), SPACE, HTML_EL_NOSCRIPT, NULL},
95: {TEXT ("object"), SPACE, HTML_EL_Object, NULL},
96: {TEXT ("ol"), SPACE, HTML_EL_Numbered_List, NULL},
97: {TEXT ("optgroup"), SPACE, HTML_EL_OptGroup, NULL},
98: {TEXT ("option"), SPACE, HTML_EL_Option, NULL},
99: {TEXT ("p"), SPACE, HTML_EL_Paragraph, NULL},
100: {TEXT ("p*"), SPACE, HTML_EL_Pseudo_paragraph, NULL},
101: {TEXT ("param"), TEXT ('E'), HTML_EL_Parameter, NULL},
102: {TEXT ("plaintext"), SPACE, HTML_EL_Preformatted, NULL},/* converted to PRE */
103: {TEXT ("pre"), SPACE, HTML_EL_Preformatted, NULL},
104: {TEXT ("q"), SPACE, HTML_EL_Quotation, NULL},
105: {TEXT ("s"), SPACE, HTML_EL_Struck_text, NULL},
106: {TEXT ("samp"), SPACE, HTML_EL_Sample, NULL},
107: {TEXT ("script"), SPACE, HTML_EL_SCRIPT, NULL},
108: {TEXT ("select"), SPACE, HTML_EL_Option_Menu, NULL},
109: {TEXT ("small"), SPACE, HTML_EL_Small_text, NULL},
110: {TEXT ("span"), SPACE, HTML_EL_Span, NULL},
111: {TEXT ("strike"), SPACE, HTML_EL_Struck_text, NULL},
112: {TEXT ("strong"), SPACE, HTML_EL_Strong, NULL},
113: {TEXT ("style"), SPACE, HTML_EL_STYLE_, NULL},
114: {TEXT ("sub"), SPACE, HTML_EL_Subscript, NULL},
115: {TEXT ("sup"), SPACE, HTML_EL_Superscript, NULL},
116: {TEXT ("table"), SPACE, HTML_EL_Table, NULL},
117: {TEXT ("tbody"), SPACE, HTML_EL_tbody, NULL},
118: {TEXT ("td"), SPACE, HTML_EL_Data_cell, NULL},
119: {TEXT ("textarea"), SPACE, HTML_EL_Text_Area, NULL},
120: {TEXT ("tfoot"), SPACE, HTML_EL_tfoot, NULL},
121: {TEXT ("th"), SPACE, HTML_EL_Heading_cell, NULL},
122: {TEXT ("thead"), SPACE, HTML_EL_thead, NULL},
123: {TEXT ("title"), SPACE, HTML_EL_TITLE, NULL},
124: {TEXT ("tr"), SPACE, HTML_EL_Table_row, NULL},
125: {TEXT ("tt"), SPACE, HTML_EL_Teletype_text, NULL},
126: {TEXT ("u"), SPACE, HTML_EL_Underlined_text, NULL},
127: {TEXT ("ul"), SPACE, HTML_EL_Unnumbered_List, NULL},
128: {TEXT ("var"), SPACE, HTML_EL_Variable, NULL},
129: {TEXT ("xmlgraphics"), SPACE, HTML_EL_XMLGraphics, NULL},
130: {TEXT ("xmp"), SPACE, HTML_EL_Preformatted, NULL}, /* converted to PRE */
1.1 cvs 131: {TEXT (""), SPACE, 0, NULL} /* Last entry. Mandatory */
132: };
1.4 cvs 133: /* mapping table of HTML attributes */
134:
135: static AttributeMapping HTMLAttributeMappingTable[] =
136: {
137: /* The first entry MUST be unknown_attr */
138: /* The rest of this table MUST be in alphabetical order */
139: {TEXT("unknown_attr"), TEXT(""), TEXT('A'), HTML_ATTR_Invalid_attribute},
140:
1.7 cvs 141: {TEXT("abbr"), TEXT(""), TEXT('A'), HTML_ATTR_abbr},
142: {TEXT("accept"), TEXT(""), TEXT('A'), HTML_ATTR_accept},
143: {TEXT("accept-charset"), TEXT("form"), TEXT('A'), HTML_ATTR_accept_charset},
144: {TEXT("accesskey"), TEXT(""), TEXT('A'), HTML_ATTR_accesskey},
145: {TEXT("action"), TEXT(""), TEXT('A'), HTML_ATTR_Script_URL},
146: {TEXT("align"), TEXT("applet"), TEXT('A'), HTML_ATTR_Alignment},
147: {TEXT("align"), TEXT("caption"), TEXT('A'), HTML_ATTR_Position},
148: {TEXT("align"), TEXT("col"), TEXT('A'), HTML_ATTR_Cell_align},
149: {TEXT("align"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_Cell_align},
150: {TEXT("align"), TEXT("div"), TEXT('A'), HTML_ATTR_TextAlign},
151: {TEXT("align"), TEXT("h1"), TEXT('A'), HTML_ATTR_TextAlign},
152: {TEXT("align"), TEXT("h2"), TEXT('A'), HTML_ATTR_TextAlign},
153: {TEXT("align"), TEXT("h3"), TEXT('A'), HTML_ATTR_TextAlign},
154: {TEXT("align"), TEXT("h4"), TEXT('A'), HTML_ATTR_TextAlign},
155: {TEXT("align"), TEXT("h5"), TEXT('A'), HTML_ATTR_TextAlign},
156: {TEXT("align"), TEXT("h6"), TEXT('A'), HTML_ATTR_TextAlign},
157: {TEXT("align"), TEXT("hr"), TEXT('A'), HTML_ATTR_Align},
158: {TEXT("align"), TEXT("iframe"), TEXT('A'), HTML_ATTR_Alignment},
159: {TEXT("align"), TEXT("image"), TEXT('A'), HTML_ATTR_Alignment},
160: {TEXT("align"), TEXT("img"), TEXT('A'), HTML_ATTR_Alignment},
161: {TEXT("align"), TEXT("input"), TEXT('A'), HTML_ATTR_Alignment},
162: {TEXT("align"), TEXT("legend"), TEXT('A'), HTML_ATTR_LAlign},
163: {TEXT("align"), TEXT("object"), TEXT('A'), HTML_ATTR_Alignment},
164: {TEXT("align"), TEXT("p"), TEXT('A'), HTML_ATTR_TextAlign},
165: {TEXT("align"), TEXT("table"), TEXT('A'), HTML_ATTR_Align},
166: {TEXT("align"), TEXT("tbody"), TEXT('A'), HTML_ATTR_Cell_align},
167: {TEXT("align"), TEXT("td"), TEXT('A'), HTML_ATTR_Cell_align},
168: {TEXT("align"), TEXT("tfoot"), TEXT('A'), HTML_ATTR_Cell_align},
169: {TEXT("align"), TEXT("th"), TEXT('A'), HTML_ATTR_Cell_align},
170: {TEXT("align"), TEXT("thead"), TEXT('A'), HTML_ATTR_Cell_align},
171: {TEXT("align"), TEXT("tr"), TEXT('A'), HTML_ATTR_Cell_align},
172: {TEXT("alink"), TEXT("body"), TEXT('A'), HTML_ATTR_ActiveLinkColor},
173: {TEXT("alt"), TEXT(""), TEXT('A'), HTML_ATTR_ALT},
174: {TEXT("archive"), TEXT(""), TEXT('A'), HTML_ATTR_archive},
175: {TEXT("axis"), TEXT(""), TEXT('A'), HTML_ATTR_axis},
176:
177: {TEXT("background"), TEXT(""), TEXT('A'), HTML_ATTR_background_},
178: {TEXT("bgcolor"), TEXT(""), TEXT('A'), HTML_ATTR_BackgroundColor},
179: {TEXT("border"), TEXT("image"), TEXT('A'), HTML_ATTR_Img_border},
180: {TEXT("border"), TEXT("img"), TEXT('A'), HTML_ATTR_Img_border},
181: {TEXT("border"), TEXT("object"), TEXT('A'), HTML_ATTR_Img_border},
182: {TEXT("border"), TEXT("table"), TEXT('A'), HTML_ATTR_Border},
183:
184: {TEXT("cellspacing"), TEXT(""), TEXT('A'), HTML_ATTR_cellspacing},
185: {TEXT("cellpadding"), TEXT(""), TEXT('A'), HTML_ATTR_cellpadding},
186: {TEXT("char"), TEXT(""), TEXT('A'), HTML_ATTR_char},
187: {TEXT("charoff"), TEXT(""), TEXT('A'), HTML_ATTR_charoff},
188: {TEXT("charset"), TEXT(""), TEXT('A'), HTML_ATTR_charset},
189: {TEXT("checked"), TEXT(""), TEXT('A'), HTML_ATTR_Checked},
190: {TEXT("cite"), TEXT(""), TEXT('A'), HTML_ATTR_cite},
191: {TEXT("class"), TEXT(""), TEXT('A'), HTML_ATTR_Class},
192: {TEXT("classid"), TEXT(""), TEXT('A'), HTML_ATTR_classid},
193: {TEXT("clear"), TEXT("br"), TEXT('A'), HTML_ATTR_Clear},
194: {TEXT("code"), TEXT(""), TEXT('A'), HTML_ATTR_code},
195: {TEXT("codebase"), TEXT(""), TEXT('A'), HTML_ATTR_codebase},
196: {TEXT("codetype"), TEXT(""), TEXT('A'), HTML_ATTR_codetype},
197: {TEXT("color"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontColor},
198: {TEXT("color"), TEXT(""), TEXT('A'), HTML_ATTR_color},
199: {TEXT("cols"), TEXT("frameset"), TEXT('A'), HTML_ATTR_ColWidth},
200: {TEXT("cols"), TEXT("textarea"), TEXT('A'), HTML_ATTR_Columns},
201: {TEXT("colspan"), TEXT(""), TEXT('A'), HTML_ATTR_colspan_},
202: {TEXT("compact"), TEXT(""), TEXT('A'), HTML_ATTR_COMPACT},
203: {TEXT("content"), TEXT(""), TEXT('A'), HTML_ATTR_meta_content},
204: {TEXT("coords"), TEXT(""), TEXT('A'), HTML_ATTR_coords},
205:
206: {TEXT("data"), TEXT(""), TEXT('A'), HTML_ATTR_data},
207: {TEXT("datapagesize"), TEXT("table"), TEXT('A'), HTML_ATTR_datapagesize},
208: {TEXT("datetime"), TEXT(""), TEXT('A'), HTML_ATTR_datetime},
209: {TEXT("declare"), TEXT("object"), TEXT('A'), HTML_ATTR_declare},
210: {TEXT("defer"), TEXT("script"), TEXT('A'), HTML_ATTR_defer},
211: {TEXT("dir"), TEXT(""), TEXT('A'), HTML_ATTR_dir},
212: {TEXT("disabled"), TEXT(""), TEXT('A'), HTML_ATTR_disabled},
213:
214: {TEXT("enctype"), TEXT(""), TEXT('A'), HTML_ATTR_ENCTYPE},
215: {TEXT("event"), TEXT("script"), TEXT('A'), HTML_ATTR_event},
216:
217: {TEXT("face"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontFace},
218: {TEXT("face"), TEXT("font"), TEXT('A'), HTML_ATTR_face},
219: {TEXT("for"), TEXT("label"), TEXT('A'), HTML_ATTR_Associated_control},
220: {TEXT("for"), TEXT("script"), TEXT('A'), HTML_ATTR_for_},
221: {TEXT("frame"), TEXT("table"), TEXT('A'), HTML_ATTR_frame},
222: {TEXT("frameborder"), TEXT(""), TEXT('A'), HTML_ATTR_frameborder},
223:
224: {TEXT("headers"), TEXT(""), TEXT('A'), HTML_ATTR_headers},
225: {TEXT("height"), TEXT(""), TEXT('A'), HTML_ATTR_Height_},
226: {TEXT("href"), TEXT(""), TEXT('A'), HTML_ATTR_HREF_},
227: {TEXT("hreflang"), TEXT(""), TEXT('A'), HTML_ATTR_hreflang},
228: {TEXT("hspace"), TEXT(""), TEXT('A'), HTML_ATTR_hspace},
229: {TEXT("http-equiv"), TEXT(""), TEXT('A'), HTML_ATTR_http_equiv},
230:
231: {TEXT("id"), TEXT(""), TEXT('A'), HTML_ATTR_ID},
232: {TEXT("ismap"), TEXT(""), TEXT('A'), HTML_ATTR_ISMAP},
233:
234: {TEXT("label"), TEXT(""), TEXT('A'), HTML_ATTR_label},
235: {TEXT("lang"), TEXT(""), TEXT('A'), HTML_ATTR_Langue},
236: {TEXT("language"), TEXT("script"), TEXT('A'), HTML_ATTR_script_language},
237: {TEXT("link"), TEXT("body"), TEXT('A'), HTML_ATTR_LinkColor},
238: {TEXT("longdesc"), TEXT(""), TEXT('A'), HTML_ATTR_longdesc},
239:
240: {TEXT("marginheight"), TEXT(""), TEXT('A'), HTML_ATTR_marginheight},
241: {TEXT("marginwidth"), TEXT(""), TEXT('A'), HTML_ATTR_marginwidth},
242: {TEXT("maxlength"), TEXT(""), TEXT('A'), HTML_ATTR_MaxLength},
243: {TEXT("media"), TEXT(""), TEXT('A'), HTML_ATTR_media},
244: {TEXT("method"), TEXT(""), TEXT('A'), HTML_ATTR_METHOD},
245: {TEXT("mode"), TEXT(""), TEXT('A'), HTML_ATTR_mode},
246: {TEXT("multiple"), TEXT(""), TEXT('A'), HTML_ATTR_Multiple},
1.4 cvs 247:
248: {TEXT("N"), TEXT(""), TEXT('C'), 0},
1.7 cvs 249: {TEXT("name"), TEXT("applet"), TEXT('A'), HTML_ATTR_applet_name},
250: {TEXT("name"), TEXT("frame"), TEXT('A'), HTML_ATTR_FrameName},
251: {TEXT("name"), TEXT("iframe"), TEXT('A'), HTML_ATTR_FrameName},
252: {TEXT("name"), TEXT("meta"), TEXT('A'), HTML_ATTR_meta_name},
253: {TEXT("name"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_name},
254: {TEXT("name"), TEXT(""), TEXT('A'), HTML_ATTR_NAME},
255: {TEXT("nohref"), TEXT(""), TEXT('A'), HTML_ATTR_nohref},
256: {TEXT("noresize"), TEXT(""), TEXT('A'), HTML_ATTR_no_resize},
257: {TEXT("noshade"), TEXT(""), TEXT('A'), HTML_ATTR_NoShade},
258: {TEXT("nowrap"), TEXT(""), TEXT('A'), HTML_ATTR_No_wrap},
259:
260: {TEXT("object"), TEXT("applet"), TEXT('A'), HTML_ATTR_object},
261: {TEXT("onblur"), TEXT(""), TEXT('A'), HTML_ATTR_onblur},
262: {TEXT("onchange"), TEXT(""), TEXT('A'), HTML_ATTR_onchange},
263: {TEXT("onclick"), TEXT(""), TEXT('A'), HTML_ATTR_onclick},
264: {TEXT("ondblclick"), TEXT(""), TEXT('A'), HTML_ATTR_ondblclick},
265: {TEXT("onfocus"), TEXT(""), TEXT('A'), HTML_ATTR_onfocus},
266: {TEXT("onkeydown"), TEXT(""), TEXT('A'), HTML_ATTR_onkeydown},
267: {TEXT("onkeypress"), TEXT(""), TEXT('A'), HTML_ATTR_onkeypress},
268: {TEXT("onkeyup"), TEXT(""), TEXT('A'), HTML_ATTR_onkeyup},
269: {TEXT("onload"), TEXT(""), TEXT('A'), HTML_ATTR_onload},
270: {TEXT("onmousedown"), TEXT(""), TEXT('A'), HTML_ATTR_onmousedown},
271: {TEXT("onmousemove"), TEXT(""), TEXT('A'), HTML_ATTR_onmousemove},
272: {TEXT("onmouseout"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseout},
273: {TEXT("onmouseover"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseover},
274: {TEXT("onmouseup"), TEXT(""), TEXT('A'), HTML_ATTR_onmouseup},
275: {TEXT("onreset"), TEXT("form"), TEXT('A'), HTML_ATTR_onreset},
276: {TEXT("onselect"), TEXT(""), TEXT('A'), HTML_ATTR_onselect},
277: {TEXT("onsubmit"), TEXT("form"), TEXT('A'), HTML_ATTR_onsubmit},
278: {TEXT("onunload"), TEXT(""), TEXT('A'), HTML_ATTR_onunload},
279:
280: {TEXT("profile"), TEXT("head"), TEXT('A'), HTML_ATTR_profile},
281: {TEXT("prompt"), TEXT(""), TEXT('A'), HTML_ATTR_Prompt},
282:
283: {TEXT("readonly"), TEXT(""), TEXT('A'), HTML_ATTR_readonly},
284: {TEXT("rel"), TEXT(""), TEXT('A'), HTML_ATTR_REL},
285: {TEXT("rev"), TEXT(""), TEXT('A'), HTML_ATTR_REV},
286: {TEXT("rows"), TEXT("frameset"), TEXT('A'), HTML_ATTR_RowHeight},
287: {TEXT("rows"), TEXT("textarea"), TEXT('A'), HTML_ATTR_Rows},
288: {TEXT("rowspan"), TEXT(""), TEXT('A'), HTML_ATTR_rowspan_},
289: {TEXT("rules"), TEXT("table"), TEXT('A'), HTML_ATTR_rules_},
290:
291: {TEXT("scheme"), TEXT("meta"), TEXT('A'), HTML_ATTR_scheme},
292: {TEXT("scope"), TEXT(""), TEXT('A'), HTML_ATTR_scope},
293: {TEXT("scrolling"), TEXT(""), TEXT('A'), HTML_ATTR_scrolling},
294: {TEXT("selected"), TEXT(""), TEXT('A'), HTML_ATTR_Selected},
295: {TEXT("shape"), TEXT(""), TEXT('A'), HTML_ATTR_shape},
296: {TEXT("size"), TEXT("basefont"), TEXT('A'), HTML_ATTR_BaseFontSize},
297: {TEXT("size"), TEXT("font"), TEXT('A'), HTML_ATTR_Font_size},
298: {TEXT("size"), TEXT("hr"), TEXT('A'), HTML_ATTR_Size_},
299: {TEXT("size"), TEXT("input"), TEXT('A'), HTML_ATTR_Area_Size},
300: {TEXT("size"), TEXT("select"), TEXT('A'), HTML_ATTR_MenuSize},
301: {TEXT("span"), TEXT("col"), TEXT('A'), HTML_ATTR_span_},
302: {TEXT("span"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_span_},
303: {TEXT("src"), TEXT("frame"), TEXT('A'), HTML_ATTR_FrameSrc},
304: {TEXT("src"), TEXT("iframe"), TEXT('A'), HTML_ATTR_FrameSrc},
305: {TEXT("src"), TEXT("script"), TEXT('A'), HTML_ATTR_script_src},
306: {TEXT("src"), TEXT(""), TEXT('A'), HTML_ATTR_SRC},
307: {TEXT("standby"), TEXT(""), TEXT('A'), HTML_ATTR_standby},
308: {TEXT("start"), TEXT(""), TEXT('A'), HTML_ATTR_Start},
309: {TEXT("style"), TEXT(""), TEXT('A'), HTML_ATTR_Style_},
310: {TEXT("summary"), TEXT("table"), TEXT('A'), HTML_ATTR_summary},
311:
312: {TEXT("tabindex"), TEXT(""), TEXT('A'), HTML_ATTR_tabindex},
313: {TEXT("target"), TEXT(""), TEXT('A'), HTML_ATTR_target_},
314: {TEXT("text"), TEXT(""), TEXT('A'), HTML_ATTR_TextColor},
315: {TEXT("title"), TEXT(""), TEXT('A'), HTML_ATTR_Title},
316: {TEXT("type"), TEXT("button"), TEXT('A'), HTML_ATTR_Button_type},
317: {TEXT("type"), TEXT("li"), TEXT('A'), HTML_ATTR_ItemStyle},
318: {TEXT("type"), TEXT("link"), TEXT('A'), HTML_ATTR_Link_type},
319: {TEXT("type"), TEXT("a"), TEXT('A'), HTML_ATTR_Link_type},
320: {TEXT("type"), TEXT("object"), TEXT('A'), HTML_ATTR_Object_type},
321: {TEXT("type"), TEXT("ol"), TEXT('A'), HTML_ATTR_NumberStyle},
322: {TEXT("type"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_type},
323: {TEXT("type"), TEXT("script"), TEXT('A'), HTML_ATTR_content_type},
324: {TEXT("type"), TEXT("style"), TEXT('A'), HTML_ATTR_Notation},
325: {TEXT("type"), TEXT("ul"), TEXT('A'), HTML_ATTR_BulletStyle},
326: {TEXT("type"), TEXT(""), SPACE, DummyAttribute},
327:
328: {TEXT("usemap"), TEXT(""), TEXT('A'), HTML_ATTR_USEMAP},
329:
330: {TEXT("valign"), TEXT("tbody"), TEXT('A'), HTML_ATTR_Row_valign},
331: {TEXT("valign"), TEXT("td"), TEXT('A'), HTML_ATTR_Cell_valign},
332: {TEXT("valign"), TEXT("tfoot"), TEXT('A'), HTML_ATTR_Row_valign},
333: {TEXT("valign"), TEXT("th"), TEXT('A'), HTML_ATTR_Cell_valign},
334: {TEXT("valign"), TEXT("thead"), TEXT('A'), HTML_ATTR_Row_valign},
335: {TEXT("valign"), TEXT("tr"), TEXT('A'), HTML_ATTR_Row_valign},
336: {TEXT("value"), TEXT("li"), TEXT('A'), HTML_ATTR_ItemValue},
337: {TEXT("value"), TEXT("param"), TEXT('A'), HTML_ATTR_Param_value},
338: {TEXT("value"), TEXT(""), TEXT('A'), HTML_ATTR_Value_},
339: {TEXT("valuetype"), TEXT("param"), TEXT('A'), HTML_ATTR_valuetype},
340: {TEXT("version"), TEXT(""), TEXT('A'), 0},
341: {TEXT("vlink"), TEXT("body"), TEXT('A'), HTML_ATTR_VisitedLinkColor},
342: {TEXT("vspace"), TEXT(""), TEXT('A'), HTML_ATTR_vspace},
343:
344: {TEXT("width"), TEXT("applet"), TEXT('A'), HTML_ATTR_Width__},
1.8 ! cvs 345: {TEXT("width"), TEXT("col"), TEXT('A'), HTML_ATTR_Width__},
! 346: {TEXT("width"), TEXT("colgroup"), TEXT('A'), HTML_ATTR_Width__},
1.7 cvs 347: {TEXT("width"), TEXT("hr"), TEXT('A'), HTML_ATTR_Width__},
348: {TEXT("width"), TEXT("iframe"), TEXT('A'), HTML_ATTR_Width__},
349: {TEXT("width"), TEXT("image"), TEXT('A'), HTML_ATTR_Width__},
350: {TEXT("width"), TEXT("img"), TEXT('A'), HTML_ATTR_Width__},
351: {TEXT("width"), TEXT("object"), TEXT('A'), HTML_ATTR_Width__},
352: {TEXT("width"), TEXT("pre"), TEXT('A'), HTML_ATTR_Width__},
353: {TEXT("width"), TEXT("table"), TEXT('A'), HTML_ATTR_Width__},
354: {TEXT("width"), TEXT("td"), TEXT('A'), HTML_ATTR_Width__},
355: {TEXT("width"), TEXT("th"), TEXT('A'), HTML_ATTR_Width__},
1.4 cvs 356: #ifdef GRAPHML
1.7 cvs 357: {TEXT("width"), TEXT("xmlgraphics"), TEXT('A'), HTML_ATTR_Width__},
1.4 cvs 358: #endif
359:
1.7 cvs 360: {TEXT("zzghost"), TEXT(""), TEXT('A'), HTML_ATTR_Ghost_restruct},
1.4 cvs 361: {TEXT(""), TEXT(""), EOS, 0} /* Last entry. Mandatory */
362: };
1.1 cvs 363:
364: /* define a pointer to let other parser functions access the local table */
365: GIMapping *pHTMLGIMapping = HTMLGIMappingTable;
1.4 cvs 366: AttributeMapping *pHTMLAttributeMapping = HTMLAttributeMappingTable;
367:
1.1 cvs 368:
369: /*----------------------------------------------------------------------
370: MapGI
371: search in the mapping tables the entry for the element of
372: name GI and returns the rank of that entry.
373: When returning, schema contains the Thot SSchema that defines that element,
374: Returns -1 and schema = NULL if not found.
375: ----------------------------------------------------------------------*/
376: #ifdef __STDC__
377: int MapGI (STRING gi, SSchema *schema, Document doc)
378: #else
379: int MapGI (gi, schema, doc)
380: STRING gi;
381: SSchema *schema;
382: Document doc;
383: #endif
384: {
385: ElementType elType;
386: STRING ptr;
387: CHAR_T c;
388: int i;
389: int entry;
390: ThotBool isHTML;
391:
392: /* TODO: use NameSpaces to search in the right table */
393: entry = -1;
394: if (*schema == NULL)
395: {
396: isHTML = FALSE;
397: ptr = NULL;
398: }
399: else
400: {
401: ptr = TtaGetSSchemaName (*schema);
402: isHTML = !ustrcmp (ptr, TEXT("HTML"));
403: }
404:
405: i = 0;
406: if (*schema == NULL || isHTML)
407: {
408: /*
409: First convert the first char into lower case to locate
410: registered tags in the HTML mapping table.
411: Entries are registered in upper case and in alphabetic order.
412: */
413:
414: /* TODO: define a function which works on unicode */
1.7 cvs 415: c = tolower (gi[0]);
1.1 cvs 416: /* look for the first concerned entry in the table */
417: while (HTMLGIMappingTable[i].htmlGI[0] < c
418: && HTMLGIMappingTable[i].htmlGI[0] != EOS)
419: i++;
420:
421: /* look at all entries starting with the right character */
422: do
423: {
424: if (ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
425: i++;
426: else
427: entry = i;
428: }
429: while (entry < 0 && HTMLGIMappingTable[i].htmlGI[0] == c);
430: }
431:
432: if (entry < 0)
433: if (*schema != NULL && isHTML)
434: *schema = NULL;
435: else
436: /* not found. Look at the XML mapping tables */
437: {
438: elType.ElTypeNum = 0;
439: elType.ElSSchema = *schema;
440:
441: #ifndef STANDALONE
1.5 cvs 442: if (!ptr || !ustrcmp (ptr, TEXT("MathML")))
1.1 cvs 443: MapXMLElementType (MATH_TYPE, gi, &elType, &ptr, &c, doc);
1.5 cvs 444: if (elType.ElTypeNum == 0 && (!ptr || !ustrcmp (ptr, TEXT("GraphML"))))
1.1 cvs 445: MapXMLElementType (GRAPH_TYPE, gi, &elType, &ptr, &c, doc);
446: #endif
447: if (elType.ElTypeNum == 0)
448: {
449: entry = -1;
450: elType.ElSSchema = NULL;
451: *schema = NULL;
452: }
453: else
454: {
455: entry = elType.ElTypeNum;
456: *schema = elType.ElSSchema;
457: }
458: }
459: return entry;
460: }
461:
462: /*----------------------------------------------------------------------
463: GIType search in mapping tables the Element type associated with
464: a given GI Name. If not found returns zero.
465: ----------------------------------------------------------------------*/
466: #ifdef __STDC__
467: void GIType (STRING gi, ElementType *elType, Document doc)
468: #else
469: void GIType (gi, elType, doc)
470: STRING gi;
471: ElementType *elType;
472: Document doc;
473: #endif
474: {
475: CHAR_T c;
476: STRING ptr;
477: int i;
478:
479: /* TODO: use NameSpaces to search in the right table */
480: elType->ElSSchema = NULL;
481: elType->ElTypeNum = 0;
482:
483: /*
484: First convert the first char into lower case to locate
485: registered tags in the HTML mapping table.
486: Entries are registered in upper case and in alphabetic order.
487: */
488:
489: /* TODO: define a function which works on unicode */
1.7 cvs 490: c = tolower (gi[0]);
1.1 cvs 491:
492: i = 0;
493: /* look for the first concerned entry in the table */
1.4 cvs 494: while (HTMLGIMappingTable[i].htmlGI[0] < c &&
495: HTMLGIMappingTable[i].htmlGI[0] != EOS)
1.1 cvs 496: i++;
497: /* look at all entries starting with the right character */
498: do
499: {
500: if (!ustrcasecmp (HTMLGIMappingTable[i].htmlGI, gi))
1.4 cvs 501: {
502: if (doc != 0)
503: elType->ElSSchema = TtaGetSSchema (TEXT("HTML"), doc);
504: elType->ElTypeNum = HTMLGIMappingTable[i].ThotType;
505: return;
506: }
1.1 cvs 507: i++;
508: }
509: while (HTMLGIMappingTable[i].htmlGI[0] == c);
510:
511: #ifndef STANDALONE
512: /* if not found, look at the XML mapping tables */
513: MapXMLElementType (MATH_TYPE, gi, elType, &ptr, &c, doc);
514: if (elType->ElTypeNum == 0)
1.4 cvs 515: MapXMLElementType (GRAPH_TYPE, gi, elType, &ptr, &c, doc);
1.1 cvs 516: #endif
1.4 cvs 517: }
518:
519: /*----------------------------------------------------------------------
520: MapAttr search in all AttributeMappingTables the entry for the
521: attribute of name Attr and returns a pointer to that entry,
522: as well as the corresponding Thot SSchema
523: ----------------------------------------------------------------------*/
524: #ifdef __STDC__
525: AttributeMapping *MapAttr (STRING Attr, SSchema *schema, int elemEntry, Document doc)
526: #else
527: AttributeMapping *MapAttr (Attr, schema, elemEntry, doc)
528: STRING Attr;
529: SSchema *schema;
530: int elemEntry;
531: Document doc;
532: #endif
533: {
534: int i;
535: int entry;
536:
537: entry = -1;
538: *schema = NULL;
539: i = 0;
540: do
541: if (!ustrcasecmp (HTMLAttributeMappingTable[i].XMLattribute, Attr))
542: if (HTMLAttributeMappingTable[i].XMLelement[0] == EOS)
543: {
544: entry = i;
545: *schema = TtaGetDocumentSSchema (doc);
546: }
547: else if (elemEntry >= 0 &&
548: !ustrcasecmp (HTMLAttributeMappingTable[i].XMLelement,
549: pHTMLGIMapping[elemEntry].htmlGI))
550: {
551: entry = i;
552: *schema = TtaGetDocumentSSchema (doc);
553: }
554: else
555: i++;
556: else
557: i++;
558: while (entry < 0 && HTMLAttributeMappingTable[i].AttrOrContent != EOS);
559:
560: if (entry >= 0)
561: return (&HTMLAttributeMappingTable[entry]);
562: else
563: return (NULL);
564: }
565:
566: /*----------------------------------------------------------------------
567: MapHTMLAttribute search in the HTML Attribute Mapping Tables the entry
568: for the attribute of name Attr and returns the corresponding Thot
569: attribute type.
570: ----------------------------------------------------------------------*/
571: #ifdef __STDC__
572: void MapHTMLAttribute (STRING Attr, AttributeType *attrType, STRING elementName, Document doc)
573: #else
574: void MapHTMLAttribute (Attr, attrType, elementName, doc)
575: STRING Attr;
576: AttributeType *attrType;
577: STRING elementName;
578: Document doc;
579: #endif
580: {
581: SSchema schema = NULL;
582: AttributeMapping* tableEntry;
583: int elemEntry;
584:
585: elemEntry = MapGI (elementName, &schema, doc);
586: if (elemEntry >= 0)
587: {
588: tableEntry = MapAttr (Attr, &schema, elemEntry, doc);
589: if (tableEntry != NULL)
590: {
591: attrType->AttrTypeNum = tableEntry->ThotAttribute;
592: if (schema == NULL && doc != 0)
593: attrType->AttrSSchema = TtaGetSSchema (TEXT("HTML"), doc);
594: else
595: attrType->AttrSSchema = schema;
596: }
597: else
598: {
599: attrType->AttrTypeNum = 0;
600: attrType->AttrSSchema = NULL;
601: }
602: }
603: else
604: {
605: attrType->AttrTypeNum = 0;
606: attrType->AttrSSchema = NULL;
607: }
1.1 cvs 608: }
Webmaster