Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

SchemaValidator.h

Go to the documentation of this file.
00001 /* 
00002  * wsdlpull - A C++ parser  for WSDL  (Web services description language)
00003  * Copyright (C) 2005-2007 Vivek Krishna
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Library General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Library General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Library General Public
00016  * License along with this library; if not, write to the Free
00017  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018  *
00019  *
00020  */
00021 #ifndef _SCHEMAVALIDATORH
00022 #define _SCHEMAVALIDATORH
00023 
00024 #include <schemaparser/SchemaParser.h>
00025 #include <schemaparser/SchemaParserException.h>
00026 #include <schemaparser/TypeContainer.h>
00027 
00028 //class for validating a schema instance
00029 class SchemaValidator
00030 {
00031  public:
00038   SchemaValidator(const SchemaParser * sp);
00039   ~SchemaValidator();
00040 
00042 
00054   TypeContainer *validate(XmlPullParser * xpp, int typeId,
00055                           TypeContainer * ipTc = 0);
00056   
00057   TypeContainer *validate(const std::string & val , int typeId,
00058                           TypeContainer * ipTc = 0); //for simple types
00059   TypeContainer * validate(void* value ,int typeId,
00060                            TypeContainer * ipTc=0);
00061   
00063  private:
00064   
00065   TypeContainer* validateContentModel(XmlPullParser * xpp, 
00066                                       ContentModel* cm,
00067                                       TypeContainer * ipTc,
00068                                       const string & elemName,
00069                                       bool nested=false);
00070   
00071   void extractSimpleType(const string & val, int basetype,
00072                          TypeContainer * ipTc, const SimpleType * st);
00073   bool    validateListOrUnion(const SimpleType* st,
00074                               const std::string &val);
00075 
00076   bool  findElement(ContentModel::ContentsIterator start, 
00077                     ContentModel::ContentsIterator end,
00078                     string name, 
00079                     ContentModel::ContentsIterator & found);
00080   bool checkAttributeOccurence(const ComplexType* ct ,XmlPullParser* xpp);
00081   void error(const std::string & , XmlPullParser* xpp=0);
00082   const SchemaParser *sParser;
00083 
00084 };
00085 #endif

Generated on Sun Oct 16 10:11:52 2005 for wsdlpull by  doxygen 1.3.9.1