00001 // LICENSE: (Please see the file COPYING for details) 00002 // 00003 // NUS - Nemesis Utilities System: A C++ application development framework 00004 // Copyright (C) 2006, 2008 Otavio Rodolfo Piske 00005 // 00006 // This file is part of NUS 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Lesser General Public 00010 // License as published by the Free Software Foundation version 2.1 00011 // of the License. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // Lesser General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU Lesser General Public 00019 // License along with this library; if not, write to the Free Software 00020 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00021 // 00022 #ifndef NXMLSCHEMAPARSER_H 00023 #define NXMLSCHEMAPARSER_H 00024 00025 #include <libxml/parser.h> 00026 #include <libxml/xmlschemas.h> 00027 00035 #include "ndefs.h" 00036 #include "nstring.h" 00037 #include "nexception.h" 00038 #include "nxmlabstractparser.h" 00039 #include "nxmlerror.h" 00040 #include "ndebug.h" 00041 00042 00050 class DllDeclSpec NXmlSchemaParser: public NXmlAbstractParser { 00051 public: 00055 NXmlSchemaParser(void); 00056 00060 ~NXmlSchemaParser(void); 00061 00062 xmlDocPtr parse(const NString &filename); 00063 xmlDocPtr parse(const NString &buffer, const NString &url); 00064 xmlDocPtr parse(const NFile *file, const NString &url); 00065 00066 private: 00067 // The parser context 00068 xmlSchemaParserCtxtPtr m_parser_ctxt; 00069 00070 // The schema pointer 00071 xmlSchemaPtr m_schema_ptr; 00072 00073 // The valid schema pointer, used to validate the document 00074 xmlSchemaValidCtxtPtr m_valid_ctxt; 00075 00076 NXmlSchemaParser(const NXmlSchemaParser &other); 00077 NXmlSchemaParser &operator=(const NXmlSchemaParser &rhs); 00078 00079 void parseSchema(void); 00080 }; 00081 00082 #endif // NXMLSCHEMAPARSER_H