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

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.14      cvs       152:    {TEXT("table"), SPACE, HTML_EL_Table},
                    153:    {TEXT("tbody"), SPACE, HTML_EL_tbody},
                    154:    {TEXT("td"), SPACE, HTML_EL_Data_cell},
                    155:    {TEXT("textarea"), SPACE, HTML_EL_Text_Area},
1.16    ! cvs       156: #ifndef XHTML_BASIC
1.14      cvs       157:    {TEXT("tfoot"), SPACE, HTML_EL_tfoot},
1.16    ! cvs       158: #endif /* XHTML_BASIC */
1.14      cvs       159:    {TEXT("th"), SPACE, HTML_EL_Heading_cell},
1.16    ! cvs       160: #ifndef XHTML_BASIC
1.14      cvs       161:    {TEXT("thead"), SPACE, HTML_EL_thead},
1.16    ! cvs       162: #endif /* XHTML_BASIC */
1.14      cvs       163:    {TEXT("title"), SPACE, HTML_EL_TITLE},
                    164:    {TEXT("tr"), SPACE, HTML_EL_Table_row},
1.16    ! cvs       165: #ifndef XHTML_BASIC
1.14      cvs       166:    {TEXT("tt"), SPACE, HTML_EL_Teletype_text},
                    167:    {TEXT("u"), SPACE, HTML_EL_Underlined_text},
1.16    ! cvs       168: #endif /* XHTML_BASIC */
1.14      cvs       169:    {TEXT("ul"), SPACE, HTML_EL_Unnumbered_List},
                    170:    {TEXT("var"), SPACE, HTML_EL_Variable},
1.16    ! cvs       171: #ifndef XHTML_BASIC
1.14      cvs       172:    {TEXT("xmp"), SPACE, HTML_EL_Preformatted},  /* converted to PRE */
1.16    ! cvs       173: #endif /* XHTML_BASIC */
1.14      cvs       174:    {TEXT(""), SPACE, 0}        /* Last entry. Mandatory */
                    175: };
1.11      cvs       176:  
1.1       cvs       177: /* mapping table of MathML elements */
                    178: #include "MathML.h"
                    179: static ElemMapping    MathMLElemMappingTable[] =
                    180: {
                    181:    /* This table MUST be in alphabetical order */
1.9       cvs       182:    {TEXT("XMLcomment"), SPACE, MathML_EL_XMLcomment},
                    183:    {TEXT("XMLcomment_line"), SPACE, MathML_EL_XMLcomment_line},
                    184:    {TEXT("maligngroup"), 'E', MathML_EL_MALIGNGROUP},
                    185:    {TEXT("malignmark"), 'E', MathML_EL_MALIGNMARK},
1.10      cvs       186:    {TEXT("mchar"), 'E', MathML_EL_MCHAR},
                    187:    {TEXT("menclose"), SPACE, MathML_EL_MENCLOSE},
1.9       cvs       188:    {TEXT("merror"), SPACE, MathML_EL_MERROR},
1.13      cvs       189:    {TEXT("mf"), SPACE, MathML_EL_MF},  /* for compatibility with an old version
                    190:                                          of MathML: WD-math-970704 */
1.9       cvs       191:    {TEXT("mfenced"), SPACE, MathML_EL_MFENCED},
                    192:    {TEXT("mfrac"), SPACE, MathML_EL_MFRAC},
1.10      cvs       193:    {TEXT("mglyph"), 'E', MathML_EL_MGLYPH},
1.9       cvs       194:    {TEXT("mi"), SPACE, MathML_EL_MI},
1.10      cvs       195:    {TEXT("mlabeledtr"), SPACE, MathML_EL_MLABELEDTR},
1.9       cvs       196:    {TEXT("mmultiscripts"), SPACE, MathML_EL_MMULTISCRIPTS},
                    197:    {TEXT("mn"), SPACE, MathML_EL_MN},
                    198:    {TEXT("mo"), SPACE, MathML_EL_MO},
                    199:    {TEXT("mover"), SPACE, MathML_EL_MOVER},
                    200:    {TEXT("mpadded"), SPACE, MathML_EL_MPADDED},
                    201:    {TEXT("mphantom"), SPACE, MathML_EL_MPHANTOM},
                    202:    {TEXT("mprescripts"), SPACE, MathML_EL_PrescriptPairs},
                    203:    {TEXT("mroot"), SPACE, MathML_EL_MROOT},
                    204:    {TEXT("mrow"), SPACE, MathML_EL_MROW},
                    205:    {TEXT("ms"), SPACE, MathML_EL_MS},
                    206:    {TEXT("mspace"), 'E', MathML_EL_MSPACE},
                    207:    {TEXT("msqrt"), SPACE, MathML_EL_MSQRT},
                    208:    {TEXT("mstyle"), SPACE, MathML_EL_MSTYLE},
                    209:    {TEXT("msub"), SPACE, MathML_EL_MSUB},
                    210:    {TEXT("msubsup"), SPACE, MathML_EL_MSUBSUP},
                    211:    {TEXT("msup"), SPACE, MathML_EL_MSUP},
                    212:    {TEXT("mtable"), SPACE, MathML_EL_MTABLE},
                    213:    {TEXT("mtd"), SPACE, MathML_EL_MTD},
                    214:    {TEXT("mtext"), SPACE, MathML_EL_MTEXT},
                    215:    {TEXT("mtr"), SPACE, MathML_EL_MTR},
                    216:    {TEXT("munder"), SPACE, MathML_EL_MUNDER},
                    217:    {TEXT("munderover"), SPACE, MathML_EL_MUNDEROVER},
                    218:    {TEXT("none"), SPACE, MathML_EL_Construct},
                    219:    {TEXT("sep"), 'E', MathML_EL_SEP},
                    220:    {TEXT(""), SPACE, 0}        /* Last entry. Mandatory */
1.1       cvs       221: };
                    222: 
                    223: #ifdef GRAPHML
                    224: /* mapping table of GraphML elements */
                    225: #include "GraphML.h"
                    226: static ElemMapping    GraphMLElemMappingTable[] =
                    227: {
                    228:    /* This table MUST be in alphabetical order */
1.9       cvs       229:    {TEXT("XMLcomment"), SPACE, GraphML_EL_XMLcomment},
                    230:    {TEXT("XMLcomment_line"), SPACE, GraphML_EL_XMLcomment_line},
                    231:    {TEXT("circle"), SPACE, GraphML_EL_Circle},
                    232:    {TEXT("closedspline"), SPACE, GraphML_EL_ClosedSpline},
                    233:    {TEXT("group"), SPACE, GraphML_EL_Group},
1.13      cvs       234:    {TEXT("label"), 'X', GraphML_EL_Label}, /* see function GraphMLGetDTDName */
1.9       cvs       235:    {TEXT("line"), 'E', GraphML_EL_Line_},
1.13      cvs       236:    {TEXT("math"), 'X', GraphML_EL_Math},   /* see function GraphMLGetDTDName */
1.9       cvs       237:    {TEXT("oval"), SPACE, GraphML_EL_Oval},
                    238:    {TEXT("polygon"), SPACE, GraphML_EL_Polygon},
                    239:    {TEXT("polyline"), 'E', GraphML_EL_Polyline},
                    240:    {TEXT("rect"), SPACE, GraphML_EL_Rectangle},
                    241:    {TEXT("roundrect"), SPACE, GraphML_EL_RoundRect},
                    242:    {TEXT("spline"), 'E', GraphML_EL_Spline},
1.13      cvs       243:    {TEXT("text"), 'X', GraphML_EL_Text_},  /* see function GraphMLGetDTDName */
1.9       cvs       244:    {TEXT(""), SPACE, 0}        /* Last entry. Mandatory */
1.1       cvs       245: };
                    246: #else /* GRAPHML */
                    247: /* there is no mapping table of GraphML elements */
                    248: 
                    249: static ElemMapping *GraphMLElemMappingTable = NULL;
                    250: #endif /* GRAPHML */
                    251: 
                    252: #include "fetchXMLname_f.h"
                    253: 
                    254: /*----------------------------------------------------------------------
1.14      cvs       255:    GetXHTMLSSchema returns the XHTML Thot schema for document doc.
                    256:   ----------------------------------------------------------------------*/
                    257: #ifdef __STDC__
                    258: SSchema            GetXHTMLSSchema (Document doc)
                    259: #else
                    260: SSchema            GetXHTMLSSchema (doc)
                    261: Document          doc;
                    262: 
                    263: #endif
                    264: {
                    265:   SSchema      XHTMLSSchema;
                    266: 
                    267:    XHTMLSSchema = TtaGetSSchema (TEXT("HTML"), doc);
                    268:    if (XHTMLSSchema == NULL)
                    269:        XHTMLSSchema = TtaNewNature(TtaGetDocumentSSchema(doc),
                    270:                                    TEXT("HTML"), TEXT("HTMLP"));
                    271:    return (XHTMLSSchema);
                    272: }
                    273: 
                    274: /*----------------------------------------------------------------------
1.1       cvs       275:    GetMathMLSSchema returns the MathML Thot schema for document doc.
                    276:   ----------------------------------------------------------------------*/
                    277: #ifdef __STDC__
                    278: SSchema            GetMathMLSSchema (Document doc)
                    279: #else
                    280: SSchema            GetMathMLSSchema (doc)
                    281: Document          doc;
                    282: 
                    283: #endif
                    284: {
                    285:   SSchema      MathMLSSchema;
                    286: 
1.13      cvs       287:   MathMLSSchema = TtaGetSSchema (TEXT("MathML"), doc);
                    288:   if (MathMLSSchema == NULL)
                    289:      MathMLSSchema = TtaNewNature(TtaGetDocumentSSchema(doc), TEXT("MathML"),
                    290:                                  TEXT("MathMLP"));
                    291:   return (MathMLSSchema);
1.1       cvs       292: }
                    293: 
                    294: /*----------------------------------------------------------------------
                    295:    GetGraphMLSSchema returns the GraphML Thot schema for document doc.
                    296:   ----------------------------------------------------------------------*/
                    297: #ifdef __STDC__
                    298: SSchema            GetGraphMLSSchema (Document doc)
                    299: #else
                    300: SSchema            GetGraphMLSSchema (doc)
                    301: Document          doc;
                    302: 
                    303: #endif
                    304: {
                    305:   SSchema      GraphMLSSchema;
                    306: 
1.8       cvs       307:   GraphMLSSchema = TtaGetSSchema (TEXT("GraphML"), doc);
1.1       cvs       308:   if (GraphMLSSchema == NULL)
1.13      cvs       309:     GraphMLSSchema = TtaNewNature(TtaGetDocumentSSchema(doc), TEXT("GraphML"),
                    310:                                  TEXT("GraphMLP"));
1.1       cvs       311:   return (GraphMLSSchema);
                    312: }
                    313: 
                    314: /*----------------------------------------------------------------------
1.13      cvs       315:    GetXLinkSSchema returns the XLink Thot schema for document doc.
                    316:   ----------------------------------------------------------------------*/
                    317: #ifdef __STDC__
                    318: SSchema            GetXLinkSSchema (Document doc)
                    319: #else
                    320: SSchema            GetXLinkSSchema (doc)
                    321: Document          doc;
                    322: 
                    323: #endif
                    324: {
                    325:   SSchema      XLinkSSchema;
                    326: 
                    327:   XLinkSSchema = TtaGetSSchema (TEXT("XLink"), doc);
                    328:   if (XLinkSSchema == NULL)
                    329:     XLinkSSchema = TtaNewNature(TtaGetDocumentSSchema(doc), TEXT("XLink"),
                    330:                                TEXT("XLinkP"));
                    331:   return (XLinkSSchema);
                    332: }
                    333: 
                    334: /*----------------------------------------------------------------------
                    335:    GetXMLSSchema returns the XML Thot schema for document doc.
1.1       cvs       336:   ----------------------------------------------------------------------*/
                    337: #ifdef __STDC__
                    338: SSchema            GetXMLSSchema (int XMLtype, Document doc)
                    339: #else
                    340: SSchema            GetXMLSSchema (XMLtype, doc)
                    341: Document          doc;
                    342: int                XMLtype;
                    343: #endif
                    344: {
1.14      cvs       345:   if (XMLtype == XHTML_TYPE)
                    346:     return GetXHTMLSSchema (doc);
                    347:   else if (XMLtype == MATH_TYPE)
1.13      cvs       348:     return GetMathMLSSchema (doc);
                    349:   else if (XMLtype == GRAPH_TYPE)
                    350:     return GetGraphMLSSchema (doc);
                    351:   else if (XMLtype == XLINK_TYPE)
1.15      cvs       352:     return GetXLinkSSchema (doc);
1.13      cvs       353:   else
                    354:     return NULL;
1.1       cvs       355: }
                    356: 
                    357: 
                    358: /*----------------------------------------------------------------------
                    359:    MapXMLElementType
                    360:    search in the mapping tables the entry for the element type of name
                    361:    XMLname and returns the corresponding Thot element type.
                    362:    Returns:
                    363:     - ElTypeNum and ElSSchema inelType  ElTypeNum = 0 if not found.
                    364:     - content 
                    365:   ----------------------------------------------------------------------*/
                    366: #ifdef __STDC__
1.14      cvs       367: void               MapXMLElementType (int XMLtype,
                    368:                                      STRING XMLname,
                    369:                                      ElementType *elType,
                    370:                                      STRING *mappedName,
                    371:                                      CHAR_T *content,
                    372:                                      Document doc)
1.1       cvs       373: #else
1.14      cvs       374: void               MapXMLElementType (XMLtype,
                    375:                                      XMLname,
                    376:                                      elType,
                    377:                                      mappedName,
                    378:                                      content,
                    379:                                      doc)
1.6       cvs       380: int                XMLtype;
1.12      cvs       381: STRING             XMLname;
                    382: ElementType       *elType;
                    383: STRING            *mappedName;
                    384: CHAR_T           *content;
1.6       cvs       385: Document           doc;
1.1       cvs       386: #endif
                    387: {
                    388:    int                 i;
                    389:    ElemMapping        *ptr;
                    390: 
                    391:    /* Select the right table */
1.14      cvs       392:    if (XMLtype == XHTML_TYPE)
                    393:      ptr = XHTMLElemMappingTable;
                    394:    else if (XMLtype == MATH_TYPE)
1.1       cvs       395:      ptr = MathMLElemMappingTable;
                    396:    else if (XMLtype == GRAPH_TYPE)
                    397:      ptr = GraphMLElemMappingTable;
                    398:    else
                    399:      ptr = NULL;
1.16    ! cvs       400:    *mappedName = NULL;
1.1       cvs       401:    elType->ElTypeNum = 0;
                    402:    if (ptr != NULL)
                    403:      {
                    404:        /* search in the ElemMappingTable */
                    405:        i = 0;
                    406:        /* look for the first concerned entry in the table */
                    407:        while (ptr[i].XMLname[0] < XMLname[0] && ptr[i].XMLname[0] != EOS)
                    408:         i++;
                    409:        /* look at all entries starting with the right character */
                    410:        do
1.9       cvs       411:         if (ustrcmp (ptr[i].XMLname, XMLname))
1.1       cvs       412:           i++;
                    413:         else
                    414:           {
                    415:             elType->ElTypeNum = ptr[i].ThotType;
                    416:             if (elType->ElSSchema == NULL)
                    417:               elType->ElSSchema = GetXMLSSchema (XMLtype, doc);
                    418:             *mappedName = ptr[i].XMLname;
                    419:             *content = ptr[i].XMLcontents;
                    420:           }
                    421:        while (elType->ElTypeNum <= 0 && ptr[i].XMLname[0] == XMLname[0]);
                    422:      }
                    423: }
                    424: 
                    425: 
                    426: /*----------------------------------------------------------------------
                    427:    GetXMLElementName
                    428:    search in the mapping tables the XML name for a given Thot type
                    429:   ----------------------------------------------------------------------*/
                    430: #ifdef __STDC__
1.9       cvs       431: void              GetXMLElementName (ElementType elType, CHAR_T** buffer)
1.1       cvs       432: #else
                    433: void              GetXMLElementName (elType, buffer)
                    434: ElementType       elType;
1.9       cvs       435: CHAR_T**          buffer;
1.1       cvs       436: #endif
                    437: {
                    438:    int                 i;
                    439:    ElemMapping        *ptr;
                    440:    STRING              name;
                    441: 
                    442:    if (elType.ElTypeNum > 0)
                    443:      {
                    444:        i = 0;
                    445:        /* Select the table which matches with the element schema */
                    446:        name = TtaGetSSchemaName (elType.ElSSchema);
                    447:        if (ustrcmp (TEXT("MathML"), name) == 0)
                    448:          ptr = MathMLElemMappingTable;
1.4       cvs       449:        else if (ustrcmp (TEXT("GraphML"), name) == 0)
1.1       cvs       450:          ptr = GraphMLElemMappingTable;
1.4       cvs       451:         else
                    452:          ptr = NULL;
1.1       cvs       453: 
1.4       cvs       454:        if (ptr)
                    455:          do
                    456:            {
1.1       cvs       457:            if (ptr[i].ThotType == elType.ElTypeNum)
                    458:              {
                    459:                *buffer = ptr[i].XMLname;
                    460:                return;
                    461:              }
                    462:            i++;
1.4       cvs       463:            }
                    464:          while (ptr[i].XMLname[0] != EOS);       
1.1       cvs       465:      }
                    466:    *buffer = TEXT("???");
                    467:    return;
                    468: }

Webmaster