Beispiel #1
0
/*******************************************
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);
}
Beispiel #2
0
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 );}