
                          Apache Axis2/C Guththila
                          ========================

  What Is It?
  -----------

  Guththila is Streaming XML Parser for the Apache Axis2/C.

  The Latest Version
  ------------------

  You can get the latest svn checkout of Apache Axis2/C Guththila module from

  https://svn.apache.org/repos/asf/webservices/axis2/trunk/c/guththila

  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 Axis2/C Guththila 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 Axis2/C Guththila please log-in and create a JIRA issue
       at http://issues.apache.org/jira/browse/AXIS2C

     o If you want to participate actively in developing Apache Axis2/C Guththila please
       subscribe to the `axis-c-dev@ws.apache.org' mailing list as described at
       http://ws.apache.org/axis2/c/mail-lists.html

