
                          Apache xml_schema/c

  What is it?
  -----------

  Apache xml_schema/C is a general purpose schema model that can be used when
  an object tree representation of an xml_schema is required. This is an effort
  to implement Xml schema in C. Please have a look at

  http://ws.apache.org/commons/XmlSchema/index.html

  for an overwies of Xml schema.

  This is implemented using Axiom object model and this has no other 
  dependencies.
  
  Axiom C is available at 
  
  https://svn.apache.org/repos/asf/webservices/axis2/trunk/c/axiom    

  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based Web Services stack implementation with
  freely available source code.

  The Latest Version
  ------------------

  You can get the latest svn checkout of Apache xml_schema/C module from

  https://svn.apache.org/repos/asf/webservices/axis2/trunk/c/xml_schema

  Installation
  ------------

  Please see the file called INSTALL. 

  Licensing
  ---------

  Please see the file called LICENSE.

  Contacts
  --------

     o If you want freely available support for using Apache xml_schema/C please
       join the Apache Axis2/C user community by subscribing to users mailing
       list, axis-c-user@ws.apache.org' as described at
       http://ws.apache.org/axis2/c/mail-lists.html

     o If you have a bug report for Apache xml_schema/C please go log a Jira issue
       at http://issues.apache.org/jira/browse/AXIS2C

     o If you want to participate in actively developing Apache xml_schema/C please
       subscribe to the `axis-c-dev@ws.apache.org' mailing list as described at
       http://ws.apache.org/axis2/c/mail-lists.html

  Acknowledgments
  ----------------

  Apache xml_schema/C relies heavily on the use of autoconf, automake and libtool
  to provide a build environment.
