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

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)
1.17    ! cvs       269:        XHTMLSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc),
1.14      cvs       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)
1.17    ! cvs       289:      MathMLSSchema = TtaNewNature(doc, 
        !           290:                                  TtaGetDocumentSSchema(doc), TEXT("MathML"),
1.13      cvs       291:                                  TEXT("MathMLP"));
                    292:   return (MathMLSSchema);
1.1       cvs       293: }
                    294: 
                    295: /*----------------------------------------------------------------------
                    296:    GetGraphMLSSchema returns the GraphML Thot schema for document doc.
                    297:   ----------------------------------------------------------------------*/
                    298: #ifdef __STDC__
                    299: SSchema            GetGraphMLSSchema (Document doc)
                    300: #else
                    301: SSchema            GetGraphMLSSchema (doc)
                    302: Document          doc;
                    303: 
                    304: #endif
                    305: {
                    306:   SSchema      GraphMLSSchema;
                    307: 
1.8       cvs       308:   GraphMLSSchema = TtaGetSSchema (TEXT("GraphML"), doc);
1.1       cvs       309:   if (GraphMLSSchema == NULL)
1.17    ! cvs       310:     GraphMLSSchema = TtaNewNature(doc,
        !           311:                                  TtaGetDocumentSSchema(doc), TEXT("GraphML"),
1.13      cvs       312:                                  TEXT("GraphMLP"));
1.1       cvs       313:   return (GraphMLSSchema);
                    314: }
                    315: 
                    316: /*----------------------------------------------------------------------
1.13      cvs       317:    GetXLinkSSchema returns the XLink Thot schema for document doc.
                    318:   ----------------------------------------------------------------------*/
                    319: #ifdef __STDC__
                    320: SSchema            GetXLinkSSchema (Document doc)
                    321: #else
                    322: SSchema            GetXLinkSSchema (doc)
                    323: Document          doc;
                    324: 
                    325: #endif
                    326: {
                    327:   SSchema      XLinkSSchema;
                    328: 
                    329:   XLinkSSchema = TtaGetSSchema (TEXT("XLink"), doc);
                    330:   if (XLinkSSchema == NULL)
1.17    ! cvs       331:     XLinkSSchema = TtaNewNature(doc, TtaGetDocumentSSchema(doc), TEXT("XLink"),
1.13      cvs       332:                                TEXT("XLinkP"));
                    333:   return (XLinkSSchema);
                    334: }
                    335: 
                    336: /*----------------------------------------------------------------------
                    337:    GetXMLSSchema returns the XML Thot schema for document doc.
1.1       cvs       338:   ----------------------------------------------------------------------*/
                    339: #ifdef __STDC__
                    340: SSchema            GetXMLSSchema (int XMLtype, Document doc)
                    341: #else
                    342: SSchema            GetXMLSSchema (XMLtype, doc)
                    343: Document          doc;
                    344: int                XMLtype;
                    345: #endif
                    346: {
1.14      cvs       347:   if (XMLtype == XHTML_TYPE)
                    348:     return GetXHTMLSSchema (doc);
                    349:   else if (XMLtype == MATH_TYPE)
1.13      cvs       350:     return GetMathMLSSchema (doc);
                    351:   else if (XMLtype == GRAPH_TYPE)
                    352:     return GetGraphMLSSchema (doc);
                    353:   else if (XMLtype == XLINK_TYPE)
1.15      cvs       354:     return GetXLinkSSchema (doc);
1.13      cvs       355:   else
                    356:     return NULL;
1.1       cvs       357: }
                    358: 
                    359: 
                    360: /*----------------------------------------------------------------------
                    361:    MapXMLElementType
                    362:    search in the mapping tables the entry for the element type of name
                    363:    XMLname and returns the corresponding Thot element type.
                    364:    Returns:
                    365:     - ElTypeNum and ElSSchema inelType  ElTypeNum = 0 if not found.
                    366:     - content 
                    367:   ----------------------------------------------------------------------*/
                    368: #ifdef __STDC__
1.14      cvs       369: void               MapXMLElementType (int XMLtype,
                    370:                                      STRING XMLname,
                    371:                                      ElementType *elType,
                    372:                                      STRING *mappedName,
                    373:                                      CHAR_T *content,
                    374:                                      Document doc)
1.1       cvs       375: #else
1.14      cvs       376: void               MapXMLElementType (XMLtype,
                    377:                                      XMLname,
                    378:                                      elType,
                    379:                                      mappedName,
                    380:                                      content,
                    381:                                      doc)
1.6       cvs       382: int                XMLtype;
1.12      cvs       383: STRING             XMLname;
                    384: ElementType       *elType;
                    385: STRING            *mappedName;
                    386: CHAR_T           *content;
1.6       cvs       387: Document           doc;
1.1       cvs       388: #endif
                    389: {
                    390:    int                 i;
                    391:    ElemMapping        *ptr;
                    392: 
                    393:    /* Select the right table */
1.14      cvs       394:    if (XMLtype == XHTML_TYPE)
                    395:      ptr = XHTMLElemMappingTable;
                    396:    else if (XMLtype == MATH_TYPE)
1.1       cvs       397:      ptr = MathMLElemMappingTable;
                    398:    else if (XMLtype == GRAPH_TYPE)
                    399:      ptr = GraphMLElemMappingTable;
                    400:    else
                    401:      ptr = NULL;
1.16      cvs       402:    *mappedName = NULL;
1.1       cvs       403:    elType->ElTypeNum = 0;
                    404:    if (ptr != NULL)
                    405:      {
                    406:        /* search in the ElemMappingTable */
                    407:        i = 0;
                    408:        /* look for the first concerned entry in the table */
                    409:        while (ptr[i].XMLname[0] < XMLname[0] && ptr[i].XMLname[0] != EOS)
                    410:         i++;
                    411:        /* look at all entries starting with the right character */
                    412:        do
1.9       cvs       413:         if (ustrcmp (ptr[i].XMLname, XMLname))
1.1       cvs       414:           i++;
                    415:         else
                    416:           {
                    417:             elType->ElTypeNum = ptr[i].ThotType;
                    418:             if (elType->ElSSchema == NULL)
                    419:               elType->ElSSchema = GetXMLSSchema (XMLtype, doc);
                    420:             *mappedName = ptr[i].XMLname;
                    421:             *content = ptr[i].XMLcontents;
                    422:           }
                    423:        while (elType->ElTypeNum <= 0 && ptr[i].XMLname[0] == XMLname[0]);
                    424:      }
                    425: }
                    426: 
                    427: 
                    428: /*----------------------------------------------------------------------
                    429:    GetXMLElementName
                    430:    search in the mapping tables the XML name for a given Thot type
                    431:   ----------------------------------------------------------------------*/
                    432: #ifdef __STDC__
1.9       cvs       433: void              GetXMLElementName (ElementType elType, CHAR_T** buffer)
1.1       cvs       434: #else
                    435: void              GetXMLElementName (elType, buffer)
                    436: ElementType       elType;
1.9       cvs       437: CHAR_T**          buffer;
1.1       cvs       438: #endif
                    439: {
                    440:    int                 i;
                    441:    ElemMapping        *ptr;
                    442:    STRING              name;
                    443: 
                    444:    if (elType.ElTypeNum > 0)
                    445:      {
                    446:        i = 0;
                    447:        /* Select the table which matches with the element schema */
                    448:        name = TtaGetSSchemaName (elType.ElSSchema);
                    449:        if (ustrcmp (TEXT("MathML"), name) == 0)
                    450:          ptr = MathMLElemMappingTable;
1.4       cvs       451:        else if (ustrcmp (TEXT("GraphML"), name) == 0)
1.1       cvs       452:          ptr = GraphMLElemMappingTable;
1.4       cvs       453:         else
                    454:          ptr = NULL;
1.1       cvs       455: 
1.4       cvs       456:        if (ptr)
                    457:          do
                    458:            {
1.1       cvs       459:            if (ptr[i].ThotType == elType.ElTypeNum)
                    460:              {
                    461:                *buffer = ptr[i].XMLname;
                    462:                return;
                    463:              }
                    464:            i++;
1.4       cvs       465:            }
                    466:          while (ptr[i].XMLname[0] != EOS);       
1.1       cvs       467:      }
                    468:    *buffer = TEXT("???");
                    469:    return;
                    470: }

Webmaster