Annotation of Amaya/amaya/fetchXMLname.c, revision 1.23
1.1 cvs 1: /*
2: *
1.13 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: * fetchXMLname
11: *
12: * Author: I. Vatton
13: *
14: */
15:
16: #define THOT_EXPORT extern
17: #include "amaya.h"
18: #include "parser.h"
1.14 cvs 19:
20: /* mapping table of XHTML elements */
21: static ElemMapping XHTMLElemMappingTable[] =
22: {
23: /* This table MUST be in alphabetical order */
1.20 cvs 24: {TEXT("XMLcomment"), SPACE, HTML_EL_Comment_, L_Undefined},
25: {TEXT("XMLcomment_line"), SPACE, HTML_EL_Comment_line, L_Undefined},
26: {TEXT("a"), SPACE, HTML_EL_Anchor, L_Basic},
27: {TEXT("abbr"), SPACE, HTML_EL_ABBR, L_Basic},
28: {TEXT("acronym"), SPACE, HTML_EL_ACRONYM, L_Basic},
29: {TEXT("address"), SPACE, HTML_EL_Address, L_Basic},
30: {TEXT("applet"), SPACE, HTML_EL_Applet, L_Transitional},
31: {TEXT("area"), 'E', HTML_EL_AREA, L_Transitional},
32: {TEXT("b"), SPACE, HTML_EL_Bold_text, L_Transitional},
33: {TEXT("base"), 'E', HTML_EL_BASE, L_Basic},
34: {TEXT("basefont"), 'E', HTML_EL_BaseFont, L_Transitional},
35: {TEXT("bdo"), SPACE, HTML_EL_BDO, L_Transitional},
36: {TEXT("big"), SPACE, HTML_EL_Big_text, L_Transitional},
37: {TEXT("blockquote"), SPACE, HTML_EL_Block_Quote, L_Basic},
38: {TEXT("body"), SPACE, HTML_EL_BODY, L_Basic},
39: {TEXT("br"), 'E', HTML_EL_BR, L_Basic},
40: {TEXT("button"), SPACE, HTML_EL_BUTTON, L_Transitional},
41: {TEXT("c"), SPACE, HTML_EL_TEXT_UNIT, L_Transitional},
42: {TEXT("caption"), SPACE, HTML_EL_CAPTION, L_Transitional},
43: {TEXT("center"), SPACE, HTML_EL_Center, L_Transitional},
44: {TEXT("cite"), SPACE, HTML_EL_Cite, L_Basic},
45: {TEXT("code"), SPACE, HTML_EL_Code, L_Basic},
46: {TEXT("colgroup"), SPACE, HTML_EL_COLGROUP, L_Transitional},
47: {TEXT("col"), SPACE, HTML_EL_COL, L_Transitional},
48: {TEXT("dd"), SPACE, HTML_EL_Definition, L_Basic},
49: {TEXT("del"), SPACE, HTML_EL_DEL, L_Transitional},
50: {TEXT("dfn"), SPACE, HTML_EL_Def, L_Basic},
51: {TEXT("dir"), SPACE, HTML_EL_Directory, L_Transitional},
52: {TEXT("div"), SPACE, HTML_EL_Division, L_Basic},
53: {TEXT("dl"), SPACE, HTML_EL_Definition_List, L_Basic},
54: {TEXT("dt"), SPACE, HTML_EL_Term, L_Basic},
55: {TEXT("em"), SPACE, HTML_EL_Emphasis, L_Basic},
56: {TEXT("fieldset"), SPACE, HTML_EL_FIELDSET, L_Transitional},
57: {TEXT("font"), SPACE, HTML_EL_Font_, L_Transitional},
58: {TEXT("form"), SPACE, HTML_EL_Form, L_Basic},
59: {TEXT("frame"), 'E', HTML_EL_FRAME, L_Transitional},
60: {TEXT("frameset"), SPACE, HTML_EL_FRAMESET, L_Transitional},
61: {TEXT("h1"), SPACE, HTML_EL_H1, L_Basic},
62: {TEXT("h2"), SPACE, HTML_EL_H2, L_Basic},
63: {TEXT("h3"), SPACE, HTML_EL_H3, L_Basic},
64: {TEXT("h4"), SPACE, HTML_EL_H4, L_Basic},
65: {TEXT("h5"), SPACE, HTML_EL_H5, L_Basic},
66: {TEXT("h6"), SPACE, HTML_EL_H6, L_Basic},
67: {TEXT("head"), SPACE, HTML_EL_HEAD, L_Basic},
68: {TEXT("hr"), 'E', HTML_EL_Horizontal_Rule, L_Transitional},
69: {TEXT("html"), SPACE, HTML_EL_HTML, L_Basic},
70: {TEXT("i"), SPACE, HTML_EL_Italic_text, L_Transitional},
71: {TEXT("iframe"), SPACE, HTML_EL_IFRAME, L_Transitional},
72: {TEXT("image"), 'E', HTML_EL_PICTURE_UNIT, L_Transitional},
73: {TEXT("img"), 'E', HTML_EL_PICTURE_UNIT, L_Basic},
74: {TEXT("input"), 'E', HTML_EL_Input, L_Basic},
75: {TEXT("ins"), SPACE, HTML_EL_INS, L_Transitional},
76: {TEXT("isindex"), 'E', HTML_EL_ISINDEX, L_Transitional},
77: {TEXT("kbd"), SPACE, HTML_EL_Keyboard, L_Basic},
78: {TEXT("label"), SPACE, HTML_EL_LABEL, L_Basic},
79: {TEXT("legend"), SPACE, HTML_EL_LEGEND, L_Transitional},
80: {TEXT("li"), SPACE, HTML_EL_List_Item, L_Basic},
81: {TEXT("link"), 'E', HTML_EL_LINK, L_Basic},
82: {TEXT("listing"), SPACE, HTML_EL_Preformatted, L_Transitional}, /*converted to PRE */
83: {TEXT("map"), SPACE, HTML_EL_MAP, L_Transitional},
84: {TEXT("menu"), SPACE, HTML_EL_Menu, L_Transitional},
85: {TEXT("meta"), 'E', HTML_EL_META, L_Basic},
86: {TEXT("noframes"), SPACE, HTML_EL_NOFRAMES, L_Transitional},
87: {TEXT("noscript"), SPACE, HTML_EL_NOSCRIPT, L_Transitional},
88: {TEXT("object"), SPACE, HTML_EL_Object, L_Basic},
89: {TEXT("ol"), SPACE, HTML_EL_Numbered_List, L_Basic},
90: {TEXT("optgroup"), SPACE, HTML_EL_OptGroup, L_Transitional},
91: {TEXT("option"), SPACE, HTML_EL_Option, L_Basic},
92: {TEXT("p"), SPACE, HTML_EL_Paragraph, L_Basic},
93: {TEXT("p*"), SPACE, HTML_EL_Pseudo_paragraph, L_Basic},
94: {TEXT("param"), 'E', HTML_EL_Parameter, L_Basic},
95: {TEXT("plaintext"), SPACE, HTML_EL_Preformatted, L_Transitional},/* converted to PRE */
96: {TEXT("pre"), SPACE, HTML_EL_Preformatted, L_Basic},
97: {TEXT("q"), SPACE, HTML_EL_Quotation, L_Basic},
98: {TEXT("s"), SPACE, HTML_EL_Struck_text, L_Transitional},
99: {TEXT("samp"), SPACE, HTML_EL_Sample, L_Basic},
100: {TEXT("script"), SPACE, HTML_EL_SCRIPT, L_Transitional},
101: {TEXT("select"), SPACE, HTML_EL_Option_Menu, L_Basic},
102: {TEXT("small"), SPACE, HTML_EL_Small_text, L_Transitional},
103: {TEXT("span"), SPACE, HTML_EL_Span, L_Basic},
104: {TEXT("strike"), SPACE, HTML_EL_Struck_text, L_Transitional},
105: {TEXT("strong"), SPACE, HTML_EL_Strong, L_Basic},
106: {TEXT("style"), SPACE, HTML_EL_STYLE_, L_Transitional},
107: {TEXT("sub"), SPACE, HTML_EL_Subscript, L_Transitional},
108: {TEXT("sup"), SPACE, HTML_EL_Superscript, L_Transitional},
109: {TEXT("table"), SPACE, HTML_EL_Table, L_Basic},
110: {TEXT("tbody"), SPACE, HTML_EL_tbody, L_Basic},
111: {TEXT("td"), SPACE, HTML_EL_Data_cell, L_Basic},
112: {TEXT("textarea"), SPACE, HTML_EL_Text_Area, L_Basic},
113: {TEXT("tfoot"), SPACE, HTML_EL_tfoot, L_Transitional},
114: {TEXT("th"), SPACE, HTML_EL_Heading_cell, L_Basic},
115: {TEXT("thead"), SPACE, HTML_EL_thead, L_Transitional},
116: {TEXT("title"), SPACE, HTML_EL_TITLE, L_Basic},
117: {TEXT("tr"), SPACE, HTML_EL_Table_row, L_Basic},
118: {TEXT("tt"), SPACE, HTML_EL_Teletype_text, L_Transitional},
119: {TEXT("u"), SPACE, HTML_EL_Underlined_text, L_Transitional},
120: {TEXT("ul"), SPACE, HTML_EL_Unnumbered_List, L_Basic},
121: {TEXT("var"), SPACE, HTML_EL_Variable, L_Basic},
122: {TEXT("xmp"), SPACE, HTML_EL_Preformatted, L_Transitional}, /* converted to PRE */
123: {TEXT(""), SPACE, 0, L_Basic} /* Last entry. Mandatory */
1.14 cvs 124: };
1.20 cvs 125: int HTML_ENTRIES = (sizeof(XHTMLElemMappingTable) / sizeof(ElemMapping));
126: ElemMapping *pHTMLGIMapping = XHTMLElemMappingTable;
127:
1.1 cvs 128: /* mapping table of MathML elements */
129: #include "MathML.h"
130: static ElemMapping MathMLElemMappingTable[] =
131: {
132: /* This table MUST be in alphabetical order */
1.20 cvs 133: {TEXT("XMLcomment"), SPACE, MathML_EL_XMLcomment, L_Undefined},
134: {TEXT("XMLcomment_line"), SPACE, MathML_EL_XMLcomment_line, L_Undefined},
135: {TEXT("maligngroup"), 'E', MathML_EL_MALIGNGROUP, L_Undefined},
136: {TEXT("malignmark"), 'E', MathML_EL_MALIGNMARK, L_Undefined},
1.23 ! cvs 137: {TEXT("math"), SPACE, MathML_EL_MathML, L_Undefined},
1.20 cvs 138: {TEXT("mchar"), 'E', MathML_EL_MCHAR, L_Undefined},
139: {TEXT("menclose"), SPACE, MathML_EL_MENCLOSE, L_Undefined},
140: {TEXT("merror"), SPACE, MathML_EL_MERROR, L_Undefined},
141: {TEXT("mf"), SPACE, MathML_EL_MF, L_Undefined}, /* for compatibility with an old version
1.13 cvs 142: of MathML: WD-math-970704 */
1.20 cvs 143: {TEXT("mfenced"), SPACE, MathML_EL_MFENCED, L_Undefined},
144: {TEXT("mfrac"), SPACE, MathML_EL_MFRAC, L_Undefined},
145: {TEXT("mglyph"), 'E', MathML_EL_MGLYPH, L_Undefined},
146: {TEXT("mi"), SPACE, MathML_EL_MI, L_Undefined},
147: {TEXT("mlabeledtr"), SPACE, MathML_EL_MLABELEDTR, L_Undefined},
148: {TEXT("mmultiscripts"), SPACE, MathML_EL_MMULTISCRIPTS, L_Undefined},
149: {TEXT("mn"), SPACE, MathML_EL_MN, L_Undefined},
150: {TEXT("mo"), SPACE, MathML_EL_MO, L_Undefined},
151: {TEXT("mover"), SPACE, MathML_EL_MOVER, L_Undefined},
152: {TEXT("mpadded"), SPACE, MathML_EL_MPADDED, L_Undefined},
153: {TEXT("mphantom"), SPACE, MathML_EL_MPHANTOM, L_Undefined},
154: {TEXT("mprescripts"), SPACE, MathML_EL_PrescriptPairs, L_Undefined},
155: {TEXT("mroot"), SPACE, MathML_EL_MROOT, L_Undefined},
156: {TEXT("mrow"), SPACE, MathML_EL_MROW, L_Undefined},
157: {TEXT("ms"), SPACE, MathML_EL_MS, L_Undefined},
158: {TEXT("mspace"), 'E', MathML_EL_MSPACE, L_Undefined},
159: {TEXT("msqrt"), SPACE, MathML_EL_MSQRT, L_Undefined},
160: {TEXT("mstyle"), SPACE, MathML_EL_MSTYLE, L_Undefined},
161: {TEXT("msub"), SPACE, MathML_EL_MSUB, L_Undefined},
162: {TEXT("msubsup"), SPACE, MathML_EL_MSUBSUP, L_Undefined},
163: {TEXT("msup"), SPACE, MathML_EL_MSUP, L_Undefined},
164: {TEXT("mtable"), SPACE, MathML_EL_MTABLE, L_Undefined},
165: {TEXT("mtd"), SPACE, MathML_EL_MTD, L_Undefined},
166: {TEXT("mtext"), SPACE, MathML_EL_MTEXT, L_Undefined},
167: {TEXT("mtr"), SPACE, MathML_EL_MTR, L_Undefined},
168: {TEXT("munder"), SPACE, MathML_EL_MUNDER, L_Undefined},
169: {TEXT("munderover"), SPACE, MathML_EL_MUNDEROVER, L_Undefined},
170: {TEXT("none"), SPACE, MathML_EL_Construct, L_Undefined},
171: {TEXT("sep"), 'E', MathML_EL_SEP, L_Undefined},
172: {TEXT(""), SPACE, 0, L_Undefined} /* Last entry. Mandatory */
1.1 cvs 173: };
174:
175: #ifdef GRAPHML
176: /* mapping table of GraphML elements */
177: #include "GraphML.h"
178: static ElemMapping GraphMLElemMappingTable[] =
179: {
180: /* This table MUST be in alphabetical order */
1.20 cvs 181: {TEXT("XMLcomment"), SPACE, GraphML_EL_XMLcomment, L_Undefined},
182: {TEXT("XMLcomment_line"), SPACE, GraphML_EL_XMLcomment_line, L_Undefined},
183: {TEXT("circle"), SPACE, GraphML_EL_Circle, L_Undefined},
184: {TEXT("closedspline"), SPACE, GraphML_EL_ClosedSpline, L_Undefined},
185: {TEXT("desc"), SPACE, GraphML_EL_desc, L_Undefined},
186: {TEXT("group"), SPACE, GraphML_EL_Group, L_Undefined},
187: {TEXT("label"), 'X', GraphML_EL_Label, L_Undefined}, /* see function GraphMLGetDTDName */
188: {TEXT("line"), 'E', GraphML_EL_Line_, L_Undefined},
189: {TEXT("math"), 'X', GraphML_EL_Math, L_Undefined}, /* see function GraphMLGetDTDName */
190: {TEXT("metadata"), SPACE, GraphML_EL_metadata, L_Undefined},
191: {TEXT("oval"), SPACE, GraphML_EL_Oval, L_Undefined},
192: {TEXT("polygon"), SPACE, GraphML_EL_Polygon, L_Undefined},
193: {TEXT("polyline"), 'E', GraphML_EL_Polyline, L_Undefined},
194: {TEXT("rect"), SPACE, GraphML_EL_Rectangle, L_Undefined},
195: {TEXT("roundrect"), SPACE, GraphML_EL_RoundRect, L_Undefined},
196: {TEXT("spline"), 'E', GraphML_EL_Spline, L_Undefined},
1.23 ! cvs 197: {TEXT("svg"), SPACE, GraphML_EL_GraphML, L_Undefined},
1.20 cvs 198: {TEXT("text"), 'X', GraphML_EL_Text_, L_Undefined}, /* see function GraphMLGetDTDName */
199: {TEXT("title"), SPACE, GraphML_EL_title, L_Undefined},
1.23 ! cvs 200: {TEXT("xmlgraphics"), SPACE, GraphML_EL_GraphML, L_Undefined},
1.20 cvs 201: {TEXT(""), SPACE, 0, L_Undefined} /* Last entry. Mandatory */
1.1 cvs 202: };
203: #else /* GRAPHML */
204: /* there is no mapping table of GraphML elements */
205:
206: static ElemMapping *GraphMLElemMappingTable = NULL;
207: #endif /* GRAPHML */
208:
209: #include "fetchXMLname_f.h"
210:
211: /*----------------------------------------------------------------------
1.14 cvs 212: GetXHTMLSSchema returns the XHTML Thot schema for document doc.
213: ----------------------------------------------------------------------*/
214: #ifdef __STDC__
215: SSchema GetXHTMLSSchema (Document doc)
216: #else
217: SSchema GetXHTMLSSchema (doc)
218: Document doc;
219:
220: #endif
221: {
222: SSchema XHTMLSSchema;
223:
224: XHTMLSSchema = TtaGetSSchema (TEXT("HTML"), doc);
225: if (XHTMLSSchema == NULL)
1.17 cvs 226: XHTMLSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc),
1.14 cvs 227: TEXT("HTML"), TEXT("HTMLP"));
228: return (XHTMLSSchema);
229: }
230:
231: /*----------------------------------------------------------------------
1.1 cvs 232: GetMathMLSSchema returns the MathML Thot schema for document doc.
233: ----------------------------------------------------------------------*/
234: #ifdef __STDC__
235: SSchema GetMathMLSSchema (Document doc)
236: #else
237: SSchema GetMathMLSSchema (doc)
238: Document doc;
239:
240: #endif
241: {
242: SSchema MathMLSSchema;
243:
1.13 cvs 244: MathMLSSchema = TtaGetSSchema (TEXT("MathML"), doc);
245: if (MathMLSSchema == NULL)
1.17 cvs 246: MathMLSSchema = TtaNewNature(doc,
247: TtaGetDocumentSSchema(doc), TEXT("MathML"),
1.13 cvs 248: TEXT("MathMLP"));
249: return (MathMLSSchema);
1.1 cvs 250: }
251:
252: /*----------------------------------------------------------------------
253: GetGraphMLSSchema returns the GraphML Thot schema for document doc.
254: ----------------------------------------------------------------------*/
255: #ifdef __STDC__
256: SSchema GetGraphMLSSchema (Document doc)
257: #else
258: SSchema GetGraphMLSSchema (doc)
259: Document doc;
260:
261: #endif
262: {
263: SSchema GraphMLSSchema;
264:
1.8 cvs 265: GraphMLSSchema = TtaGetSSchema (TEXT("GraphML"), doc);
1.1 cvs 266: if (GraphMLSSchema == NULL)
1.17 cvs 267: GraphMLSSchema = TtaNewNature(doc,
268: TtaGetDocumentSSchema(doc), TEXT("GraphML"),
1.13 cvs 269: TEXT("GraphMLP"));
1.1 cvs 270: return (GraphMLSSchema);
271: }
272:
273: /*----------------------------------------------------------------------
1.13 cvs 274: GetXLinkSSchema returns the XLink Thot schema for document doc.
275: ----------------------------------------------------------------------*/
276: #ifdef __STDC__
277: SSchema GetXLinkSSchema (Document doc)
278: #else
279: SSchema GetXLinkSSchema (doc)
280: Document doc;
281:
282: #endif
283: {
284: SSchema XLinkSSchema;
285:
286: XLinkSSchema = TtaGetSSchema (TEXT("XLink"), doc);
287: if (XLinkSSchema == NULL)
1.17 cvs 288: XLinkSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc), TEXT("XLink"),
1.13 cvs 289: TEXT("XLinkP"));
290: return (XLinkSSchema);
291: }
292:
293: /*----------------------------------------------------------------------
294: GetXMLSSchema returns the XML Thot schema for document doc.
1.1 cvs 295: ----------------------------------------------------------------------*/
296: #ifdef __STDC__
297: SSchema GetXMLSSchema (int XMLtype, Document doc)
298: #else
299: SSchema GetXMLSSchema (XMLtype, doc)
300: Document doc;
301: int XMLtype;
302: #endif
303: {
1.14 cvs 304: if (XMLtype == XHTML_TYPE)
305: return GetXHTMLSSchema (doc);
306: else if (XMLtype == MATH_TYPE)
1.13 cvs 307: return GetMathMLSSchema (doc);
308: else if (XMLtype == GRAPH_TYPE)
309: return GetGraphMLSSchema (doc);
310: else if (XMLtype == XLINK_TYPE)
1.15 cvs 311: return GetXLinkSSchema (doc);
1.13 cvs 312: else
313: return NULL;
1.1 cvs 314: }
315:
316:
317: /*----------------------------------------------------------------------
1.22 cvs 318: MapXMLElementType
319: Generic function which searchs in the Element Mapping table, selected
320: by the parameter XMLtype, the entry XMLname and returns the corresponding
321: Thot element type.
1.1 cvs 322: Returns:
1.22 cvs 323: - ElTypeNum and ElSSchema into elType ElTypeNum = 0 if not found.
1.1 cvs 324: - content
325: ----------------------------------------------------------------------*/
326: #ifdef __STDC__
1.14 cvs 327: void MapXMLElementType (int XMLtype,
328: STRING XMLname,
329: ElementType *elType,
330: STRING *mappedName,
331: CHAR_T *content,
332: Document doc)
1.1 cvs 333: #else
1.14 cvs 334: void MapXMLElementType (XMLtype,
335: XMLname,
336: elType,
337: mappedName,
338: content,
339: doc)
1.6 cvs 340: int XMLtype;
1.12 cvs 341: STRING XMLname;
342: ElementType *elType;
343: STRING *mappedName;
344: CHAR_T *content;
1.6 cvs 345: Document doc;
1.1 cvs 346: #endif
347: {
348: int i;
349: ElemMapping *ptr;
350:
351: /* Select the right table */
1.14 cvs 352: if (XMLtype == XHTML_TYPE)
353: ptr = XHTMLElemMappingTable;
354: else if (XMLtype == MATH_TYPE)
1.1 cvs 355: ptr = MathMLElemMappingTable;
356: else if (XMLtype == GRAPH_TYPE)
357: ptr = GraphMLElemMappingTable;
358: else
359: ptr = NULL;
1.16 cvs 360: *mappedName = NULL;
1.1 cvs 361: elType->ElTypeNum = 0;
362: if (ptr != NULL)
363: {
364: /* search in the ElemMappingTable */
365: i = 0;
366: /* look for the first concerned entry in the table */
1.22 cvs 367: while (ptr[i].XMLname[0] < XMLname[0] && ptr[i].XMLname[0] != WC_EOS)
1.1 cvs 368: i++;
1.22 cvs 369:
1.1 cvs 370: /* look at all entries starting with the right character */
371: do
1.22 cvs 372: if (ustrcmp (ptr[i].XMLname, XMLname) || ptr[i].Level > ParsingLevel[doc])
373: /* it's not the tag or this tag is not valid for the current parsing level */
1.1 cvs 374: i++;
375: else
376: {
377: elType->ElTypeNum = ptr[i].ThotType;
378: if (elType->ElSSchema == NULL)
379: elType->ElSSchema = GetXMLSSchema (XMLtype, doc);
380: *mappedName = ptr[i].XMLname;
381: *content = ptr[i].XMLcontents;
382: }
383: while (elType->ElTypeNum <= 0 && ptr[i].XMLname[0] == XMLname[0]);
384: }
385: }
386:
387:
388: /*----------------------------------------------------------------------
389: GetXMLElementName
1.22 cvs 390: Generic function which searchs in the mapping table the XML name for
391: a given Thot type.
1.1 cvs 392: ----------------------------------------------------------------------*/
393: #ifdef __STDC__
1.9 cvs 394: void GetXMLElementName (ElementType elType, CHAR_T** buffer)
1.1 cvs 395: #else
396: void GetXMLElementName (elType, buffer)
397: ElementType elType;
1.9 cvs 398: CHAR_T** buffer;
1.1 cvs 399: #endif
400: {
401: int i;
402: ElemMapping *ptr;
403: STRING name;
404:
405: if (elType.ElTypeNum > 0)
406: {
407: i = 0;
408: /* Select the table which matches with the element schema */
409: name = TtaGetSSchemaName (elType.ElSSchema);
410: if (ustrcmp (TEXT("MathML"), name) == 0)
411: ptr = MathMLElemMappingTable;
1.4 cvs 412: else if (ustrcmp (TEXT("GraphML"), name) == 0)
1.1 cvs 413: ptr = GraphMLElemMappingTable;
1.4 cvs 414: else
415: ptr = NULL;
1.1 cvs 416:
1.4 cvs 417: if (ptr)
418: do
419: {
1.1 cvs 420: if (ptr[i].ThotType == elType.ElTypeNum)
421: {
422: *buffer = ptr[i].XMLname;
423: return;
424: }
425: i++;
1.4 cvs 426: }
1.22 cvs 427: while (ptr[i].XMLname[0] != WC_EOS);
1.1 cvs 428: }
429: *buffer = TEXT("???");
430: return;
1.22 cvs 431: }
432: /*----------------------------------------------------------------------
433: XmlMapAttribute
434: Generic function which searchs in the Attribute Mapping Table (table)
435: the entry attrName associated to the element elementName.
436: Returns the corresponding entry.
437: ----------------------------------------------------------------------*/
438: #ifdef __STDC__
439: int XmlMapAttribute (CHAR_T *attrName,
440: CHAR_T *elementName,
441: Document doc,
442: AttributeMapping table[])
443: #else
444: int XmlMapAttribute (attrName,
445: elementName,
446: doc,
447: table)
448: CHAR_T *attrName;
449: CHAR_T *elementName;
450: Document doc;
451: AttributeMapping table[];
452: #endif
453: {
454: int i;
455:
456: i = 0;
457: /* look for the first concerned entry in the table */
458: while (table[i].XMLattribute[0] < attrName[0] && table[i].XMLattribute[0] != WC_EOS)
459: i++;
460: while (table[i].XMLattribute[0] == attrName[0])
461: {
462: if (table[i].Level > ParsingLevel[doc] ||
463: ustrcasecmp (table[i].XMLattribute, attrName) ||
464: (table[i].XMLelement[0] != WC_EOS && ustrcasecmp (table[i].XMLelement, elementName)))
465: i++;
466: else
467: return (i);
468: }
469: return (i);
1.1 cvs 470: }
Webmaster