#include #include #include #include #include "xmlschemalocator.h" XmlSchemaLocator::XmlSchemaLocator() : WrapExpat ( true ), d ( new SchemaLocatorData() ) { d->parser = p; XML_SetUserData ( p, d.get() ); XML_SetStartElementHandler ( p, starthandler ); } XmlSchemaLocator::~XmlSchemaLocator() {} void XMLCALL XmlSchemaLocator::starthandler ( void *data, const XML_Char *el, const XML_Char **attr ) { SchemaLocatorData *d; d = ( SchemaLocatorData * ) data; while ( *attr ) { if ( !strcmp ( *attr, "http://www.w3.org/2001/XMLSchema-instance:noNamespaceSchemaLocation" ) || !strcmp ( *attr, "http://www.w3.org/2001/XMLSchema-instance:schemaLocation" ) ) { d->schemaLocation = * ( attr + 1 ); XML_StopParser ( d->parser, false ); } attr += 2; } } std::string XmlSchemaLocator::getSchemaLocation() { return d->schemaLocation; }