libxml++ r172 - in trunk: . examples examples/schemavalidation libxml++ libxml++/validators



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]