Return to fetchXMLname.c CVS log | Up to [Public] / Amaya / amaya |
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("math"), SPACE, HTML_EL_Math, L_Transitional}, 85: {TEXT("menu"), SPACE, HTML_EL_Menu, L_Transitional}, 86: {TEXT("meta"), 'E', HTML_EL_META, L_Basic}, 87: {TEXT("noframes"), SPACE, HTML_EL_NOFRAMES, L_Transitional}, 88: {TEXT("noscript"), SPACE, HTML_EL_NOSCRIPT, L_Transitional}, 89: {TEXT("object"), SPACE, HTML_EL_Object, L_Basic}, 90: {TEXT("ol"), SPACE, HTML_EL_Numbered_List, L_Basic}, 91: {TEXT("optgroup"), SPACE, HTML_EL_OptGroup, L_Transitional}, 92: {TEXT("option"), SPACE, HTML_EL_Option, L_Basic}, 93: {TEXT("p"), SPACE, HTML_EL_Paragraph, L_Basic}, 94: {TEXT("p*"), SPACE, HTML_EL_Pseudo_paragraph, L_Basic}, 95: {TEXT("param"), 'E', HTML_EL_Parameter, L_Basic}, 96: {TEXT("plaintext"), SPACE, HTML_EL_Preformatted, L_Transitional},/* converted to PRE */ 97: {TEXT("pre"), SPACE, HTML_EL_Preformatted, L_Basic}, 98: {TEXT("q"), SPACE, HTML_EL_Quotation, L_Basic}, 99: {TEXT("s"), SPACE, HTML_EL_Struck_text, L_Transitional}, 100: {TEXT("samp"), SPACE, HTML_EL_Sample, L_Basic}, 101: {TEXT("script"), SPACE, HTML_EL_SCRIPT, L_Transitional}, 102: {TEXT("select"), SPACE, HTML_EL_Option_Menu, L_Basic}, 103: {TEXT("small"), SPACE, HTML_EL_Small_text, L_Transitional}, 104: {TEXT("span"), SPACE, HTML_EL_Span, L_Basic}, 105: {TEXT("strike"), SPACE, HTML_EL_Struck_text, L_Transitional}, 106: {TEXT("strong"), SPACE, HTML_EL_Strong, L_Basic}, 107: {TEXT("style"), SPACE, HTML_EL_STYLE_, L_Transitional}, 108: {TEXT("sub"), SPACE, HTML_EL_Subscript, L_Transitional}, 109: {TEXT("sup"), SPACE, HTML_EL_Superscript, L_Transitional}, 1.21 ! cvs 110: #ifdef GRAPHML 1.20 cvs 111: {TEXT("svg"), SPACE, HTML_EL_XMLGraphics, L_Transitional}, 1.21 ! cvs 112: #endif 1.20 cvs 113: {TEXT("table"), SPACE, HTML_EL_Table, L_Basic}, 114: {TEXT("tbody"), SPACE, HTML_EL_tbody, L_Basic}, 115: {TEXT("td"), SPACE, HTML_EL_Data_cell, L_Basic}, 116: {TEXT("textarea"), SPACE, HTML_EL_Text_Area, L_Basic}, 117: {TEXT("tfoot"), SPACE, HTML_EL_tfoot, L_Transitional}, 118: {TEXT("th"), SPACE, HTML_EL_Heading_cell, L_Basic}, 119: {TEXT("thead"), SPACE, HTML_EL_thead, L_Transitional}, 120: {TEXT("title"), SPACE, HTML_EL_TITLE, L_Basic}, 121: {TEXT("tr"), SPACE, HTML_EL_Table_row, L_Basic}, 122: {TEXT("tt"), SPACE, HTML_EL_Teletype_text, L_Transitional}, 123: {TEXT("u"), SPACE, HTML_EL_Underlined_text, L_Transitional}, 124: {TEXT("ul"), SPACE, HTML_EL_Unnumbered_List, L_Basic}, 125: {TEXT("var"), SPACE, HTML_EL_Variable, L_Basic}, 1.21 ! cvs 126: #ifdef GRAPHML ! 127: {TEXT("xmlgraphics"), SPACE, HTML_EL_XMLGraphics, L_Transitional}, ! 128: #endif 1.20 cvs 129: {TEXT("xmp"), SPACE, HTML_EL_Preformatted, L_Transitional}, /* converted to PRE */ 130: {TEXT(""), SPACE, 0, L_Basic} /* Last entry. Mandatory */ 1.14 cvs 131: }; 1.20 cvs 132: int HTML_ENTRIES = (sizeof(XHTMLElemMappingTable) / sizeof(ElemMapping)); 133: ElemMapping *pHTMLGIMapping = XHTMLElemMappingTable; 134: 1.1 cvs 135: /* mapping table of MathML elements */ 136: #include "MathML.h" 137: static ElemMapping MathMLElemMappingTable[] = 138: { 139: /* This table MUST be in alphabetical order */ 1.20 cvs 140: {TEXT("XMLcomment"), SPACE, MathML_EL_XMLcomment, L_Undefined}, 141: {TEXT("XMLcomment_line"), SPACE, MathML_EL_XMLcomment_line, L_Undefined}, 142: {TEXT("maligngroup"), 'E', MathML_EL_MALIGNGROUP, L_Undefined}, 143: {TEXT("malignmark"), 'E', MathML_EL_MALIGNMARK, L_Undefined}, 144: {TEXT("mchar"), 'E', MathML_EL_MCHAR, L_Undefined}, 145: {TEXT("menclose"), SPACE, MathML_EL_MENCLOSE, L_Undefined}, 146: {TEXT("merror"), SPACE, MathML_EL_MERROR, L_Undefined}, 147: {TEXT("mf"), SPACE, MathML_EL_MF, L_Undefined}, /* for compatibility with an old version 1.13 cvs 148: of MathML: WD-math-970704 */ 1.20 cvs 149: {TEXT("mfenced"), SPACE, MathML_EL_MFENCED, L_Undefined}, 150: {TEXT("mfrac"), SPACE, MathML_EL_MFRAC, L_Undefined}, 151: {TEXT("mglyph"), 'E', MathML_EL_MGLYPH, L_Undefined}, 152: {TEXT("mi"), SPACE, MathML_EL_MI, L_Undefined}, 153: {TEXT("mlabeledtr"), SPACE, MathML_EL_MLABELEDTR, L_Undefined}, 154: {TEXT("mmultiscripts"), SPACE, MathML_EL_MMULTISCRIPTS, L_Undefined}, 155: {TEXT("mn"), SPACE, MathML_EL_MN, L_Undefined}, 156: {TEXT("mo"), SPACE, MathML_EL_MO, L_Undefined}, 157: {TEXT("mover"), SPACE, MathML_EL_MOVER, L_Undefined}, 158: {TEXT("mpadded"), SPACE, MathML_EL_MPADDED, L_Undefined}, 159: {TEXT("mphantom"), SPACE, MathML_EL_MPHANTOM, L_Undefined}, 160: {TEXT("mprescripts"), SPACE, MathML_EL_PrescriptPairs, L_Undefined}, 161: {TEXT("mroot"), SPACE, MathML_EL_MROOT, L_Undefined}, 162: {TEXT("mrow"), SPACE, MathML_EL_MROW, L_Undefined}, 163: {TEXT("ms"), SPACE, MathML_EL_MS, L_Undefined}, 164: {TEXT("mspace"), 'E', MathML_EL_MSPACE, L_Undefined}, 165: {TEXT("msqrt"), SPACE, MathML_EL_MSQRT, L_Undefined}, 166: {TEXT("mstyle"), SPACE, MathML_EL_MSTYLE, L_Undefined}, 167: {TEXT("msub"), SPACE, MathML_EL_MSUB, L_Undefined}, 168: {TEXT("msubsup"), SPACE, MathML_EL_MSUBSUP, L_Undefined}, 169: {TEXT("msup"), SPACE, MathML_EL_MSUP, L_Undefined}, 170: {TEXT("mtable"), SPACE, MathML_EL_MTABLE, L_Undefined}, 171: {TEXT("mtd"), SPACE, MathML_EL_MTD, L_Undefined}, 172: {TEXT("mtext"), SPACE, MathML_EL_MTEXT, L_Undefined}, 173: {TEXT("mtr"), SPACE, MathML_EL_MTR, L_Undefined}, 174: {TEXT("munder"), SPACE, MathML_EL_MUNDER, L_Undefined}, 175: {TEXT("munderover"), SPACE, MathML_EL_MUNDEROVER, L_Undefined}, 176: {TEXT("none"), SPACE, MathML_EL_Construct, L_Undefined}, 177: {TEXT("sep"), 'E', MathML_EL_SEP, L_Undefined}, 178: {TEXT(""), SPACE, 0, L_Undefined} /* Last entry. Mandatory */ 1.1 cvs 179: }; 180: 181: #ifdef GRAPHML 182: /* mapping table of GraphML elements */ 183: #include "GraphML.h" 184: static ElemMapping GraphMLElemMappingTable[] = 185: { 186: /* This table MUST be in alphabetical order */ 1.20 cvs 187: {TEXT("XMLcomment"), SPACE, GraphML_EL_XMLcomment, L_Undefined}, 188: {TEXT("XMLcomment_line"), SPACE, GraphML_EL_XMLcomment_line, L_Undefined}, 189: {TEXT("circle"), SPACE, GraphML_EL_Circle, L_Undefined}, 190: {TEXT("closedspline"), SPACE, GraphML_EL_ClosedSpline, L_Undefined}, 191: {TEXT("desc"), SPACE, GraphML_EL_desc, L_Undefined}, 192: {TEXT("group"), SPACE, GraphML_EL_Group, L_Undefined}, 193: {TEXT("label"), 'X', GraphML_EL_Label, L_Undefined}, /* see function GraphMLGetDTDName */ 194: {TEXT("line"), 'E', GraphML_EL_Line_, L_Undefined}, 195: {TEXT("math"), 'X', GraphML_EL_Math, L_Undefined}, /* see function GraphMLGetDTDName */ 196: {TEXT("metadata"), SPACE, GraphML_EL_metadata, L_Undefined}, 197: {TEXT("oval"), SPACE, GraphML_EL_Oval, L_Undefined}, 198: {TEXT("polygon"), SPACE, GraphML_EL_Polygon, L_Undefined}, 199: {TEXT("polyline"), 'E', GraphML_EL_Polyline, L_Undefined}, 200: {TEXT("rect"), SPACE, GraphML_EL_Rectangle, L_Undefined}, 201: {TEXT("roundrect"), SPACE, GraphML_EL_RoundRect, L_Undefined}, 202: {TEXT("spline"), 'E', GraphML_EL_Spline, L_Undefined}, 203: {TEXT("text"), 'X', GraphML_EL_Text_, L_Undefined}, /* see function GraphMLGetDTDName */ 204: {TEXT("title"), SPACE, GraphML_EL_title, L_Undefined}, 205: {TEXT(""), SPACE, 0, L_Undefined} /* Last entry. Mandatory */ 1.1 cvs 206: }; 207: #else /* GRAPHML */ 208: /* there is no mapping table of GraphML elements */ 209: 210: static ElemMapping *GraphMLElemMappingTable = NULL; 211: #endif /* GRAPHML */ 212: 213: #include "fetchXMLname_f.h" 214: 215: /*---------------------------------------------------------------------- 1.14 cvs 216: GetXHTMLSSchema returns the XHTML Thot schema for document doc. 217: ----------------------------------------------------------------------*/ 218: #ifdef __STDC__ 219: SSchema GetXHTMLSSchema (Document doc) 220: #else 221: SSchema GetXHTMLSSchema (doc) 222: Document doc; 223: 224: #endif 225: { 226: SSchema XHTMLSSchema; 227: 228: XHTMLSSchema = TtaGetSSchema (TEXT("HTML"), doc); 229: if (XHTMLSSchema == NULL) 1.17 cvs 230: XHTMLSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc), 1.14 cvs 231: TEXT("HTML"), TEXT("HTMLP")); 232: return (XHTMLSSchema); 233: } 234: 235: /*---------------------------------------------------------------------- 1.1 cvs 236: GetMathMLSSchema returns the MathML Thot schema for document doc. 237: ----------------------------------------------------------------------*/ 238: #ifdef __STDC__ 239: SSchema GetMathMLSSchema (Document doc) 240: #else 241: SSchema GetMathMLSSchema (doc) 242: Document doc; 243: 244: #endif 245: { 246: SSchema MathMLSSchema; 247: 1.13 cvs 248: MathMLSSchema = TtaGetSSchema (TEXT("MathML"), doc); 249: if (MathMLSSchema == NULL) 1.17 cvs 250: MathMLSSchema = TtaNewNature(doc, 251: TtaGetDocumentSSchema(doc), TEXT("MathML"), 1.13 cvs 252: TEXT("MathMLP")); 253: return (MathMLSSchema); 1.1 cvs 254: } 255: 256: /*---------------------------------------------------------------------- 257: GetGraphMLSSchema returns the GraphML Thot schema for document doc. 258: ----------------------------------------------------------------------*/ 259: #ifdef __STDC__ 260: SSchema GetGraphMLSSchema (Document doc) 261: #else 262: SSchema GetGraphMLSSchema (doc) 263: Document doc; 264: 265: #endif 266: { 267: SSchema GraphMLSSchema; 268: 1.8 cvs 269: GraphMLSSchema = TtaGetSSchema (TEXT("GraphML"), doc); 1.1 cvs 270: if (GraphMLSSchema == NULL) 1.17 cvs 271: GraphMLSSchema = TtaNewNature(doc, 272: TtaGetDocumentSSchema(doc), TEXT("GraphML"), 1.13 cvs 273: TEXT("GraphMLP")); 1.1 cvs 274: return (GraphMLSSchema); 275: } 276: 277: /*---------------------------------------------------------------------- 1.13 cvs 278: GetXLinkSSchema returns the XLink Thot schema for document doc. 279: ----------------------------------------------------------------------*/ 280: #ifdef __STDC__ 281: SSchema GetXLinkSSchema (Document doc) 282: #else 283: SSchema GetXLinkSSchema (doc) 284: Document doc; 285: 286: #endif 287: { 288: SSchema XLinkSSchema; 289: 290: XLinkSSchema = TtaGetSSchema (TEXT("XLink"), doc); 291: if (XLinkSSchema == NULL) 1.17 cvs 292: XLinkSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc), TEXT("XLink"), 1.13 cvs 293: TEXT("XLinkP")); 294: return (XLinkSSchema); 295: } 296: 297: /*---------------------------------------------------------------------- 298: GetXMLSSchema returns the XML Thot schema for document doc. 1.1 cvs 299: ----------------------------------------------------------------------*/ 300: #ifdef __STDC__ 301: SSchema GetXMLSSchema (int XMLtype, Document doc) 302: #else 303: SSchema GetXMLSSchema (XMLtype, doc) 304: Document doc; 305: int XMLtype; 306: #endif 307: { 1.14 cvs 308: if (XMLtype == XHTML_TYPE) 309: return GetXHTMLSSchema (doc); 310: else if (XMLtype == MATH_TYPE) 1.13 cvs 311: return GetMathMLSSchema (doc); 312: else if (XMLtype == GRAPH_TYPE) 313: return GetGraphMLSSchema (doc); 314: else if (XMLtype == XLINK_TYPE) 1.15 cvs 315: return GetXLinkSSchema (doc); 1.13 cvs 316: else 317: return NULL; 1.1 cvs 318: } 319: 320: 321: /*---------------------------------------------------------------------- 322: MapXMLElementType 323: search in the mapping tables the entry for the element type of name 324: XMLname and returns the corresponding Thot element type. 325: Returns: 326: - ElTypeNum and ElSSchema inelType ElTypeNum = 0 if not found. 327: - content 328: ----------------------------------------------------------------------*/ 329: #ifdef __STDC__ 1.14 cvs 330: void MapXMLElementType (int XMLtype, 331: STRING XMLname, 332: ElementType *elType, 333: STRING *mappedName, 334: CHAR_T *content, 335: Document doc) 1.1 cvs 336: #else 1.14 cvs 337: void MapXMLElementType (XMLtype, 338: XMLname, 339: elType, 340: mappedName, 341: content, 342: doc) 1.6 cvs 343: int XMLtype; 1.12 cvs 344: STRING XMLname; 345: ElementType *elType; 346: STRING *mappedName; 347: CHAR_T *content; 1.6 cvs 348: Document doc; 1.1 cvs 349: #endif 350: { 351: int i; 352: ElemMapping *ptr; 353: 354: /* Select the right table */ 1.14 cvs 355: if (XMLtype == XHTML_TYPE) 356: ptr = XHTMLElemMappingTable; 357: else if (XMLtype == MATH_TYPE) 1.1 cvs 358: ptr = MathMLElemMappingTable; 359: else if (XMLtype == GRAPH_TYPE) 360: ptr = GraphMLElemMappingTable; 361: else 362: ptr = NULL; 1.16 cvs 363: *mappedName = NULL; 1.1 cvs 364: elType->ElTypeNum = 0; 365: if (ptr != NULL) 366: { 367: /* search in the ElemMappingTable */ 368: i = 0; 369: /* look for the first concerned entry in the table */ 370: while (ptr[i].XMLname[0] < XMLname[0] && ptr[i].XMLname[0] != EOS) 371: i++; 372: /* look at all entries starting with the right character */ 373: do 1.9 cvs 374: if (ustrcmp (ptr[i].XMLname, XMLname)) 1.1 cvs 375: i++; 376: else 377: { 378: elType->ElTypeNum = ptr[i].ThotType; 379: if (elType->ElSSchema == NULL) 380: elType->ElSSchema = GetXMLSSchema (XMLtype, doc); 381: *mappedName = ptr[i].XMLname; 382: *content = ptr[i].XMLcontents; 383: } 384: while (elType->ElTypeNum <= 0 && ptr[i].XMLname[0] == XMLname[0]); 385: } 386: } 387: 388: 389: /*---------------------------------------------------------------------- 390: GetXMLElementName 391: search in the mapping tables the XML name for a given Thot type 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: } 427: while (ptr[i].XMLname[0] != EOS); 1.1 cvs 428: } 429: *buffer = TEXT("???"); 430: return; 431: }