Annotation of Amaya/amaya/fetchXMLname.c, revision 1.21

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: }

Webmaster