libxml++ r172 - in trunk: . examples examples/schemavalidation libxml++ libxml++/validators
- From: murrayc svn gnome org
- To: svn-commits-list gnome org
- Subject: libxml++ r172 - in trunk: . examples examples/schemavalidation libxml++ libxml++/validators
- Date: Wed, 26 Mar 2008 17:32:49 +0000 (GMT)
Author: murrayc
Date: Wed Mar 26 17:32:48 2008
New Revision: 172
URL: http://svn.gnome.org/viewvc/libxml++?rev=172&view=rev
Log:
2008-03-26 Emilien KIA <cursor free fr>
* configure.in:
* libxml++/Makefile.am:
* libxml++/libxml++.h:
* libxml++/schema.cc:
* libxml++/schema.h: Added Schema class, similar to the existing Dtd
class.
* libxml++/validators/Makefile.am:
* libxml++/validators/schemavalidator.cc
* libxml++/validators/schemavalidator.h: Added Schema validator class,
similar to the existing DtdValidator class.
* examples/Makefile.am:
* examples/schemavalidation/: New example, similar to the
existing dtdvalidation example.
Bug #312216.
Added:
trunk/examples/schemavalidation/
trunk/examples/schemavalidation/Makefile.am
trunk/examples/schemavalidation/example.xml
trunk/examples/schemavalidation/example.xsd
trunk/examples/schemavalidation/main.cc
trunk/libxml++/schema.cc
trunk/libxml++/schema.h
trunk/libxml++/validators/schemavalidator.cc
trunk/libxml++/validators/schemavalidator.h
Modified:
trunk/ChangeLog
trunk/configure.in
trunk/examples/Makefile.am
trunk/libxml++/Makefile.am
trunk/libxml++/dtd.h
trunk/libxml++/libxml++.h
trunk/libxml++/validators/Makefile.am
Modified: trunk/configure.in
==============================================================================
--- trunk/configure.in (original)
+++ trunk/configure.in Wed Mar 26 17:32:48 2008
@@ -151,6 +151,7 @@
examples/import_node/Makefile
examples/textreader/Makefile
examples/dtdvalidation/Makefile
+ examples/schemavalidation/Makefile
win32_msvc6/Makefile
win32_msvc6/examples/Makefile
Modified: trunk/examples/Makefile.am
==============================================================================
--- trunk/examples/Makefile.am (original)
+++ trunk/examples/Makefile.am Wed Mar 26 17:32:48 2008
@@ -1,5 +1,5 @@
SUBDIRS = dom_build dom_parser dom_parser_raw dom_parse_entities dom_read_write dom_xpath \
sax_parser sax_parser_entities sax_exception sax_parser_build_dom \
- import_node textreader dtdvalidation
+ import_node textreader dtdvalidation schemavalidation
EXTRA_DIST = README Makefile.am_fragment
Added: trunk/examples/schemavalidation/Makefile.am
==============================================================================
--- (empty file)
+++ trunk/examples/schemavalidation/Makefile.am Wed Mar 26 17:32:48 2008
@@ -0,0 +1,9 @@
+include $(top_srcdir)/examples/Makefile.am_fragment
+
+#Build the executable, but don't install it.
+noinst_PROGRAMS = example
+
+#List of source files needed to build the executable:
+example_SOURCES = main.cc
+
+EXTRA_DIST = example.xml example.dtd
Added: trunk/examples/schemavalidation/example.xml
==============================================================================
--- (empty file)
+++ trunk/examples/schemavalidation/example.xml Wed Mar 26 17:32:48 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!-- Example from XMLSchema recommendation 0 - primer at http://www.w3.org/TR/xmlschema-0/ -->
+<purchaseOrder orderDate="1999-10-20">
+ <shipTo country="US">
+ <name>Alice Smith</name>
+ <street>123 Maple Street</street>
+ <city>Mill Valley</city>
+ <state>CA</state>
+ <zip>90952</zip>
+ </shipTo>
+ <billTo country="US">
+ <name>Robert Smith</name>
+ <street>8 Oak Avenue</street>
+ <city>Old Town</city>
+ <state>PA</state>
+ <zip>95819</zip>
+ </billTo>
+ <comment>Hurry, my lawn is going wild</comment>
+ <items>
+ <item partNum="872-AA">
+ <productName>Lawnmower</productName>
+ <quantity>1</quantity>
+ <USPrice>148.95</USPrice>
+ <comment>Confirm this is electric</comment>
+ </item>
+ <item partNum="926-AA">
+ <productName>Baby Monitor</productName>
+ <quantity>1</quantity>
+ <USPrice>39.98</USPrice>
+ <shipDate>1999-05-21</shipDate>
+ </item>
+ </items>
+</purchaseOrder>
Added: trunk/examples/schemavalidation/example.xsd
==============================================================================
--- (empty file)
+++ trunk/examples/schemavalidation/example.xsd Wed Mar 26 17:32:48 2008
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!-- Example from XMLSchema recommendation 0 - primer at http://www.w3.org/TR/xmlschema-0/ -->
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">
+ Purchase order schema for Example.com.
+ Copyright 2000 Example.com. All rights reserved.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
+
+ <xsd:element name="comment" type="xsd:string"/>
+
+ <xsd:complexType name="PurchaseOrderType">
+ <xsd:sequence>
+ <xsd:element name="shipTo" type="USAddress"/>
+ <xsd:element name="billTo" type="USAddress"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="items" type="Items"/>
+ </xsd:sequence>
+ <xsd:attribute name="orderDate" type="xsd:date"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="USAddress">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="street" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:decimal"/>
+ </xsd:sequence>
+ <xsd:attribute name="country" type="xsd:NMTOKEN"
+ fixed="US"/>
+ </xsd:complexType>
+
+ <xsd:complexType name="Items">
+ <xsd:sequence>
+ <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="productName" type="xsd:string"/>
+ <xsd:element name="quantity">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:positiveInteger">
+ <xsd:maxExclusive value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="USPrice" type="xsd:decimal"/>
+ <xsd:element ref="comment" minOccurs="0"/>
+ <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="partNum" type="SKU" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <!-- Stock Keeping Unit, a code for identifying products -->
+ <xsd:simpleType name="SKU">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="\d{3}-[A-Z]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+
+</xsd:schema>
Added: trunk/examples/schemavalidation/main.cc
==============================================================================
--- (empty file)
+++ trunk/examples/schemavalidation/main.cc Wed Mar 26 17:32:48 2008
@@ -0,0 +1,69 @@
+// -*- C++ -*-
+
+/* main.cc
+ *
+ * Copyright (C) 2002 The libxml++ development team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <libxml++/libxml++.h>
+
+#include <iostream>
+
+
+int main(int argc, char* argv[])
+{
+ std::string schemafilepath("example.xsd"),
+ docfilepath("example.xml");
+
+ if(argc!=0 && argc!=3)
+ std::cout << "usage : " << argv[0] << " [document schema]" << std::endl;
+ else
+ {
+ if(argc == 3)
+ {
+ docfilepath = argv[1];
+ schemafilepath = argv[2];
+ }
+
+ try
+ {
+ xmlpp::DomParser parser(docfilepath);
+ xmlpp::SchemaValidator validator(schemafilepath);
+
+ try
+ {
+ validator.validate( parser.get_document() );
+ std::cout << "Valid document" << std::endl;
+ }
+ catch( const xmlpp::validity_error& error)
+ {
+ std::cout << "Error validating the document" << std::endl;
+ std::cout << error.what();
+ }
+ }
+ catch( const xmlpp::parse_error& )
+ {
+ std::cerr << "Error parsing the schema" << std::endl;
+ }
+ }
+}
+
Modified: trunk/libxml++/Makefile.am
==============================================================================
--- trunk/libxml++/Makefile.am (original)
+++ trunk/libxml++/Makefile.am Wed Mar 26 17:32:48 2008
@@ -5,9 +5,9 @@
INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
DEFS = @DEFS@ -DLIBXMLPP_BUILD
-h_sources_public = libxml++.h attribute.h dtd.h document.h noncopyable.h keepblanks.h
+h_sources_public = libxml++.h attribute.h dtd.h document.h noncopyable.h keepblanks.h schema.h
h_sources_private =
-cc_sources = attribute.cc dtd.cc document.cc noncopyable.cc keepblanks.cc
+cc_sources = attribute.cc dtd.cc document.cc noncopyable.cc keepblanks.cc schema.cc
cc_sources_private =
# Support for DLL on cygwin/mingw using libtool > 1.4
Modified: trunk/libxml++/dtd.h
==============================================================================
--- trunk/libxml++/dtd.h (original)
+++ trunk/libxml++/dtd.h Wed Mar 26 17:32:48 2008
@@ -33,10 +33,12 @@
Glib::ustring get_external_id() const;
Glib::ustring get_system_id() const;
- /** Access the underlying libxml implementation. */
+ /** Access the underlying libxml implementation.
+ */
_xmlDtd* cobj();
- /** Access the underlying libxml implementation. */
+ /** Access the underlying libxml implementation.
+ */
const _xmlDtd* cobj() const;
private:
_xmlDtd* impl_;
Modified: trunk/libxml++/libxml++.h
==============================================================================
--- trunk/libxml++/libxml++.h (original)
+++ trunk/libxml++/libxml++.h Wed Mar 26 17:32:48 2008
@@ -21,5 +21,6 @@
#include <libxml++/document.h>
#include <libxml++/validators/validator.h>
#include <libxml++/validators/dtdvalidator.h>
+#include <libxml++/validators/schemavalidator.h>
#endif //__LIBXMLCPP_H
Added: trunk/libxml++/schema.cc
==============================================================================
--- (empty file)
+++ trunk/libxml++/schema.cc Wed Mar 26 17:32:48 2008
@@ -0,0 +1,99 @@
+/* schema.cc
+ * libxml++ and this file are copyright (C) 2000 by Ari Johnson, and
+ * are covered by the GNU Lesser General Public License, which should be
+ * included with libxml++ as the file COPYING.
+ */
+
+#include <libxml++/schema.h>
+
+#include <libxml/tree.h>
+#include <libxml/xmlschemas.h>
+#include <libxml/xmlschemastypes.h>
+
+namespace xmlpp
+{
+
+Schema::Schema(_xmlSchema* schema)
+: impl_(schema)
+, embedded_doc_(false)
+{
+ schema->_private = this;
+}
+
+Schema::Schema(Document* document, bool embed)
+: impl_(0)
+, embedded_doc_(false)
+{
+ set_document(document, embed);
+}
+
+Schema::~Schema()
+{
+ release_underlying();
+}
+
+void Schema::set_document(Document* document, bool embed)
+{
+ release_underlying();
+
+ xmlSchemaParserCtxtPtr context = xmlSchemaNewDocParserCtxt( document->cobj() );
+ impl_ = xmlSchemaParse( context );
+ if ( !impl_ )
+ throw parse_error("Schema could not be parsed");
+ impl_->_private = this;
+ embedded_doc_ = false;
+ xmlSchemaFreeParserCtxt( context );
+}
+
+Glib::ustring Schema::get_name() const
+{
+ return (char*)impl_->name;
+}
+
+Glib::ustring Schema::get_target_namespace() const
+{
+ return (char*)impl_->targetNamespace;
+}
+
+Glib::ustring Schema::get_version() const
+{
+ return (char*)impl_->version;
+}
+
+void Schema::release_underlying()
+{
+ if(embedded_doc_ && impl_ && impl_->doc->_private)
+ {
+ delete (Document*) impl_->doc->_private;
+ impl_ = 0;
+ embedded_doc_ = false;
+ }
+}
+
+Document* Schema::get_document()
+{
+ if(impl_)
+ return (Document*) impl_->doc->_private;
+ else
+ return NULL;
+}
+
+const Document* Schema::get_document()const
+{
+ if(impl_)
+ return (Document*) impl_->doc->_private;
+ else
+ return NULL;
+}
+
+_xmlSchema* Schema::cobj()
+{
+ return impl_;
+}
+
+const _xmlSchema* Schema::cobj() const
+{
+ return impl_;
+}
+
+} //namespace xmlpp
Added: trunk/libxml++/schema.h
==============================================================================
--- (empty file)
+++ trunk/libxml++/schema.h Wed Mar 26 17:32:48 2008
@@ -0,0 +1,76 @@
+/* schema.h
+ * libxml++ and this file are copyright (C) 2000 by Ari Johnson, and
+ * are covered by the GNU Lesser General Public License, which should be
+ * included with libxml++ as the file COPYING.
+ */
+
+#ifndef __LIBXMLPP_SCHEMA_H
+#define __LIBXMLPP_SCHEMA_H
+
+#include <libxml++/attribute.h>
+#include <libxml++/document.h>
+#include <list>
+#include <map>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" {
+ struct _xmlSchema;
+}
+#endif //DOXYGEN_SHOULD_SKIP_THIS4
+
+namespace xmlpp
+{
+
+/** Represents XML Schema.
+ *
+ */
+class Schema : NonCopyable
+{
+public:
+ /** Create a schema from the underlying libxml schema element.
+ */
+ explicit Schema(_xmlSchema* schema);
+
+ /** Create a schema from a XML document.
+ * @param document XMLSchema document, NULL to create an empty schema document.
+ * @param embed If true, the document will be deleted when
+ * the schema is deleted or another document is set.
+ */
+ explicit Schema(Document* document = NULL, bool embed = false);
+ ~Schema();
+
+ /** Set a new document to the schema.
+ * @param document XMLSchema document, NULL to create an empty schema document.
+ * @param embed If true, the document will be deleted when the schema is deleted or another document is set.
+ */
+ virtual void set_document(Document* document = NULL, bool embed = false);
+
+ Glib::ustring get_name() const;
+ Glib::ustring get_target_namespace() const;
+ Glib::ustring get_version() const;
+
+ Document* get_document();
+ const Document* get_document()const;
+
+ /** Access the underlying libxml implementation. */
+ _xmlSchema* cobj();
+
+ /** Access the underlying libxml implementation. */
+ const _xmlSchema* cobj() const;
+
+protected:
+ virtual void release_underlying();
+
+private:
+ _xmlSchema* impl_;
+
+ /** Is the base document is created with the schema. */
+ bool embedded_doc_;
+};
+
+} // namespace xmlpp
+
+#endif //__LIBXMLPP_SCHEMA_H
+
+
+
Modified: trunk/libxml++/validators/Makefile.am
==============================================================================
--- trunk/libxml++/validators/Makefile.am (original)
+++ trunk/libxml++/validators/Makefile.am Wed Mar 26 17:32:48 2008
@@ -1,8 +1,8 @@
INCLUDES = -I$(top_srcdir) @LIBXML_CFLAGS@
DEFS = @DEFS@ -DLIBXMLPP_BUILD
-h_sources_public = validator.h dtdvalidator.h
-cc_sources = validator.cc dtdvalidator.cc
+h_sources_public = validator.h dtdvalidator.h schemavalidator.h
+cc_sources = validator.cc dtdvalidator.cc schemavalidator.cc
noinst_LTLIBRARIES = libvalidators.la
Added: trunk/libxml++/validators/schemavalidator.cc
==============================================================================
--- (empty file)
+++ trunk/libxml++/validators/schemavalidator.cc Wed Mar 26 17:32:48 2008
@@ -0,0 +1,199 @@
+/* dtdvalidator.cpp
+ * libxml++ and this file are copyright (C) 2000 by Ari Johnson
+ * (C) 2002-2004 by the libxml dev team and
+ * are covered by the GNU Lesser General Public License, which should be
+ * included with libxml++ as the file COPYING.
+ */
+
+#include "libxml++/validators/schemavalidator.h"
+#include "libxml++/schema.h"
+
+#include <libxml/xmlschemas.h>
+#include <libxml/xmlschemastypes.h>
+
+#include <sstream>
+#include <iostream>
+
+namespace xmlpp
+{
+
+SchemaValidator::SchemaValidator()
+: schema_(0)
+, embbeded_shema_(false)
+, ctxt_(0)
+{
+}
+
+SchemaValidator::SchemaValidator(const Glib::ustring& file)
+: schema_(0)
+, embbeded_shema_(false)
+, ctxt_(0)
+{
+ parse_file( file );
+}
+
+SchemaValidator::SchemaValidator(Document& document)
+: schema_(0)
+, embbeded_shema_(false)
+, ctxt_(0)
+{
+ parse_document( document );
+}
+
+SchemaValidator::SchemaValidator(Schema* schema)
+: schema_(schema)
+, embbeded_shema_(false)
+, ctxt_(0)
+{
+}
+
+SchemaValidator::~SchemaValidator()
+{
+ release_underlying();
+ Validator::release_underlying();
+}
+
+void SchemaValidator::parse_context(_xmlSchemaParserCtxt* context)
+{
+ release_underlying(); // Free any existing dtd.
+
+ xmlSchema* schema = xmlSchemaParse( context );
+ if ( ! schema )
+ throw parse_error("Schema could not be parsed");
+
+ schema->_private = new Schema(schema);
+
+ schema_ = static_cast<Schema*>(schema->_private);
+ embbeded_shema_ = true;
+}
+
+void SchemaValidator::parse_file(const Glib::ustring& filename)
+{
+ xmlSchemaParserCtxtPtr ctx = xmlSchemaNewParserCtxt( filename.c_str() );
+ parse_context( ctx );
+ xmlSchemaFreeParserCtxt( ctx );
+}
+
+void SchemaValidator::parse_memory(const Glib::ustring& contents)
+{
+ xmlSchemaParserCtxtPtr ctx = xmlSchemaNewMemParserCtxt( contents.c_str(), contents.bytes() );
+ parse_context( ctx );
+ xmlSchemaFreeParserCtxt( ctx );
+}
+
+void SchemaValidator::parse_document(Document& document)
+{
+ xmlSchemaParserCtxtPtr ctx = xmlSchemaNewDocParserCtxt( document.cobj() );
+ parse_context( ctx );
+ xmlSchemaFreeParserCtxt( ctx );
+}
+
+void SchemaValidator::set_schema(Schema* schema)
+{
+ release_underlying();
+ schema_ = schema;
+ embbeded_shema_ = false;
+}
+
+void SchemaValidator::release_underlying()
+{
+ if(ctxt_)
+ {
+ xmlSchemaFreeValidCtxt( ctxt_ );
+ ctxt_ = 0;
+ }
+ if(schema_)
+ {
+ if(embbeded_shema_)
+ delete schema_;
+ schema_ = 0;
+ }
+}
+
+SchemaValidator::operator bool() const
+{
+ return schema_ != 0;
+}
+
+Schema* SchemaValidator::get_schema()
+{
+ return schema_;
+}
+
+const Schema* SchemaValidator::get_schema() const
+{
+ return schema_;
+}
+
+void SchemaValidator::initialize_valid()
+{
+ xmlSchemaSetValidErrors(ctxt_, &callback_validity_error, &callback_validity_warning, this);
+
+ //Clear these temporary buffers too:
+ validate_error_.erase();
+ validate_warning_.erase();
+}
+
+
+bool SchemaValidator::validate(const Document* doc)
+{
+ if (!doc)
+ throw internal_error("Document pointer cannot be 0");
+
+ if (!schema_)
+ throw internal_error("Must have a schema to validate document");
+
+ // A context is required at this stage only
+ if (!ctxt_)
+ ctxt_ = xmlSchemaNewValidCtxt( schema_->cobj() );
+
+ if(!ctxt_)
+ {
+ throw internal_error("Couldn't create validating context");
+ }
+
+ initialize_valid();
+
+ int res = xmlSchemaValidateDoc( ctxt_, (xmlDoc*)doc->cobj() );
+
+ if(res != 0)
+ {
+ check_for_exception();
+ throw validity_error("Document failed schema validation");
+ }
+
+ return res;
+}
+
+bool SchemaValidator::validate(const Glib::ustring& file)
+{
+ if (file.empty())
+ throw internal_error("File path must not be empty");
+
+ if (!schema_)
+ throw internal_error("Must have a schema to validate document");
+
+ // A context is required at this stage only
+ if (!ctxt_)
+ ctxt_ = xmlSchemaNewValidCtxt( schema_->cobj() );
+
+ if(!ctxt_)
+ {
+ throw internal_error("Couldn't create validating context");
+ }
+
+ initialize_valid();
+
+ int res = xmlSchemaValidateFile( ctxt_, file.c_str(), 0 );
+
+ if(res != 0)
+ {
+ check_for_exception();
+ throw validity_error("Document failed schema validation");
+ }
+
+ return res;
+}
+
+} // namespace xmlpp
+
Added: trunk/libxml++/validators/schemavalidator.h
==============================================================================
--- (empty file)
+++ trunk/libxml++/validators/schemavalidator.h Wed Mar 26 17:32:48 2008
@@ -0,0 +1,66 @@
+/* schemavalidator.h
+ * libxml++ and this file are copyright (C) 2000 by Ari Johnson,
+ * (C) 2002-2004 by the libxml dev team and
+ * are covered by the GNU Lesser General Public License, which should be
+ * included with libxml++ as the file COPYING.
+ */
+
+#ifndef __LIBXMLPP_VALIDATOR_SCHEMAVALIDATOR_H
+#define __LIBXMLPP_VALIDATOR_SCHEMAVALIDATOR_H
+
+#include <libxml++/validators/validator.h>
+#include <libxml++/schema.h>
+#include <libxml++/document.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" {
+ struct _xmlSchemaParserCtxt;
+ struct _xmlSchemaValidCtxt;
+}
+#endif //DOXYGEN_SHOULD_SKIP_THIS4
+
+namespace xmlpp {
+
+/** XML DOM parser.
+ *
+ */
+class SchemaValidator : public Validator
+{
+public:
+ SchemaValidator();
+ explicit SchemaValidator(const Glib::ustring& file);
+ explicit SchemaValidator(Document& document);
+ explicit SchemaValidator(Schema* schema);
+ virtual ~SchemaValidator();
+
+ virtual void parse_file(const Glib::ustring& filename);
+ virtual void parse_memory(const Glib::ustring& contents);
+ virtual void parse_document(Document& document);
+ virtual void set_schema(Schema* schema);
+
+ /** Test whether a document has been parsed.
+ */
+ operator bool() const;
+ Schema* get_schema();
+ const Schema* get_schema() const;
+
+ bool validate(const Document* doc);
+ bool validate(const Glib::ustring& file);
+
+protected:
+ virtual void initialize_valid();
+ void parse_context(_xmlSchemaParserCtxt* context);
+ virtual void release_underlying();
+
+ Schema* schema_;
+ bool embbeded_shema_;
+ _xmlSchemaValidCtxt* ctxt_;
+};
+
+
+
+
+} // namespace xmlpp
+
+#endif //__LIBXMLPP_VALIDATOR_SCHEMAVALIDATOR_H
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]