/******************************************* Open a marcXMLFile and parse into its tree Pre: marcXMLfp contains a pointer to a an xmlFile Post: Returns pointer to a parsed tree datastructure, Caller is responsible for freeing marcXMLfp *******************************************/ static XmElem * openXmElemTree( FILE *marcXMLfp ){ char *schemaPath = getenv("MXTOOL_XSD"); //get the pathname of marc21 schema xmlSchemaPtr schemaPtr = mxInit( schemaPath ); if (schemaPtr==NULL){ fprintf(stderr, "Error, check MXTOOL_XSD environment variable\n"); return NULL; } if (marcXMLfp==NULL){ fprintf(stderr, "Error, could not open xml file\n"); mxTerm(schemaPtr); return NULL; } XmElem *top = NULL; int mxReadFileError = mxReadFile( marcXMLfp, schemaPtr, &top ); mxTerm(schemaPtr); if (mxReadFileError == 1){ fprintf(stderr, "\nFailed to parse XML file\n"); return NULL; }else if (mxReadFileError == 2){ fprintf(stderr, "\nXml did not match schema\n"); return NULL; } return (top); }
PyObject * Mx_term ( PyObject * self, PyObject * args ){ if ( NULL != top) mxCleanElem( top ); if ( NULL != top2 ) mxCleanElem( top2 ); if ( NULL != schemaPtr ) mxTerm( schemaPtr ); return Py_BuildValue ( "i", 1 );}