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

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

Webmaster