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