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