      * Summary: incomplete XML Schemas structure implementation
      * Description: interface to the XML Schemas handling and schema validity
      *              checking, it is incomplete right now.
      *
      * Copy: See Copyright for the status of this software.
      *
      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.

      /if not defined(XML_SCHEMA_H__)
      /define XML_SCHEMA_H__

      /include "libxmlrpg/xmlversion"

      /if defined(LIBXML_SCHEMAS_ENABLED)

      /include "libxmlrpg/xmlTypesC"
      /include "libxmlrpg/tree"

      * This error codes are obsolete; not used any more.

     d xmlSchemaValidError...
     d                 s                   based(######typedef######)
     d                                     like(xmlCenum)
     d  XML_SCHEMAS_ERR_OK...
     d                 c                   0
     d  XML_SCHEMAS_ERR_NOROOT...
     d                 c                   1
     d  XML_SCHEMAS_ERR_UNDECLAREDELEM...
     d                 c                   2
     d  XML_SCHEMAS_ERR_NOTTOPLEVEL...
     d                 c                   3
     d  XML_SCHEMAS_ERR_MISSING...
     d                 c                   4
     d  XML_SCHEMAS_ERR_WRONGELEM...
     d                 c                   5
     d  XML_SCHEMAS_ERR_NOTYPE...
     d                 c                   6
     d  XML_SCHEMAS_ERR_NOROLLBACK...
     d                 c                   7
     d  XML_SCHEMAS_ERR_ISABSTRACT...
     d                 c                   8
     d  XML_SCHEMAS_ERR_NOTEMPTY...
     d                 c                   9
     d  XML_SCHEMAS_ERR_ELEMCONT...
     d                 c                   10
     d  XML_SCHEMAS_ERR_HAVEDEFAULT...
     d                 c                   11
     d  XML_SCHEMAS_ERR_NOTNILLABLE...
     d                 c                   12
     d  XML_SCHEMAS_ERR_EXTRACONTENT...
     d                 c                   13
     d  XML_SCHEMAS_ERR_INVALIDATTR...
     d                 c                   14
     d  XML_SCHEMAS_ERR_INVALIDELEM...
     d                 c                   15
     d  XML_SCHEMAS_ERR_NOTDETERMINIST...
     d                 c                   16
     d  XML_SCHEMAS_ERR_CONSTRUCT...
     d                 c                   17
     d  XML_SCHEMAS_ERR_INTERNAL...
     d                 c                   18
     d  XML_SCHEMAS_ERR_NOTSIMPLE...
     d                 c                   19
     d  XML_SCHEMAS_ERR_ATTRUNKNOWN...
     d                 c                   20
     d  XML_SCHEMAS_ERR_ATTRINVALID...
     d                 c                   21
     d  XML_SCHEMAS_ERR_VALUE...
     d                 c                   22
     d  XML_SCHEMAS_ERR_FACET...
     d                 c                   23
     d  XML_SCHEMAS_ERR_...
     d                 c                   24
     d  XML_SCHEMAS_ERR_XXX...
     d                 c                   25

      * ATTENTION: Change xmlSchemaSetValidOptions's check
      * for invalid values, if adding to the validation
      * options below.

      * xmlSchemaValidOption:
      *
      * This is the set of XML Schema validation options.

     d xmlSchemaValidOption...
     d                 s                   based(######typedef######)
     d                                     like(xmlCenum)
      *
      * Default/fixed: create an attribute node
      * or an element's text node on the instance.
      *
     d  XML_SCHEMA_VAL_VC_I_CREATE...
     d                 c                   X'0001'
      /if defined(DISABLED)
      *
      * assemble schemata using
      * xsi:schemaLocation and
      * xsi:noNamespaceSchemaLocation
      *
     d  XML_SCHEMA_VAL_XSI_ASSEMBLE...
     d                 c                   X'0002'
      /endif

      * The schemas related types are kept internal

     d xmlSchemaPtr    s               *   based(######typedef######)

      * xmlSchemaValidityErrorFunc:
      * @ctx: the validation context
      * @msg: the message
      * @...: extra arguments
      *
      * Signature of an error callback from an XSD validation

     d xmlSchemaValidityErrorFunc...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * xmlSchemaValidityWarningFunc:
      * @ctx: the validation context
      * @msg: the message
      * @...: extra arguments
      *
      * Signature of a warning callback from an XSD validation

     d xmlSchemaValidityWarningFunc...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * A schemas validation context

     d xmlSchemaParserCtxtPtr...
     d                 s               *   based(######typedef######)

     d xmlSchemaValidCtxtPtr...
     d                 s               *   based(######typedef######)

      * xmlSchemaValidityLocatorFunc:
      * @ctx: user provided context
      * @file: returned file information
      * @line: returned line information
      *
      * A schemas validation locator, a callback called by the validator.
      * This is used when file or node information are not available
      * to find out what file and line number are affected
      *
      * Returns: 0 in case of success and -1 in case of error

     d xmlSchemaValidityLocatorFunc...
     d                 s               *   based(######typedef######)
     d                                     procptr

      * Interfaces for parsing.

     d xmlSchemaNewParserCtxt...
     d                 pr                  extproc('xmlSchemaNewParserCtxt')
     d                                     like(xmlSchemaParserCtxtPtr)
     d URL                             *   value options(*string)               const char *

     d xmlSchemaNewMemParserCtxt...
     d                 pr                  extproc('xmlSchemaNewMemParserCtxt')
     d                                     like(xmlSchemaParserCtxtPtr)
     d buffer                          *   value options(*string)               const char *
     d size                                value like(xmlCint)

     d xmlSchemaNewDocParserCtxt...
     d                 pr                  extproc('xmlSchemaNewDocParserCtxt')
     d                                     like(xmlSchemaParserCtxtPtr)
     d doc                                 value like(xmlDocPtr)

     d xmlSchemaFreeParserCtxt...
     d                 pr                  extproc('xmlSchemaFreeParserCtxt')
     d ctxt                                value like(xmlSchemaParserCtxtPtr)

     d xmlSchemaSetParserErrors...
     d                 pr                  extproc('xmlSchemaSetParserErrors')
     d ctxt                                value like(xmlSchemaParserCtxtPtr)
     d err                                 value
     d                                     like(xmlSchemaValidityErrorFunc)
     d warn                                value
     d                                     like(xmlSchemaValidityWarningFunc)
     d ctx                             *   value                                void *

     d xmlSchemaSetParserStructuredErrors...
     d                 pr                  extproc(
     d                                     'xmlSchemaSetParserStructuredErrors')
     d ctxt                                value like(xmlSchemaParserCtxtPtr)
     d serror                              value like(xmlStructuredErrorFunc)
     d ctx                             *   value                                void *

     d xmlSchemaGetParserErrors...
     d                 pr                  extproc('xmlSchemaGetParserErrors')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaParserCtxtPtr)
     d err                                 like(xmlSchemaValidityErrorFunc)
     d warn                                like(xmlSchemaValidityWarningFunc)
     d ctx                             *                                        void *(*)

     d xmlSchemaIsValid...
     d                 pr                  extproc('xmlSchemaIsValid')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)

     d xmlSchemaParse  pr                  extproc('xmlSchemaParse')
     d                                     like(xmlSchemaPtr)
     d ctxt                                value like(xmlSchemaParserCtxtPtr)

     d xmlSchemaFree   pr                  extproc('xmlSchemaFree')
     d schema                              value like(xmlSchemaPtr)

      /if defined(LIBXML_OUTPUT_ENABLED)
     d xmlSchemaDump   pr                  extproc('xmlSchemaDump')
     d output                          *   value                                FILE *
     d schema                              value like(xmlSchemaPtr)
      /endif                                                                    LIBXML_OUTPUT_ENABLD

      * Interfaces for validating

     d xmlSchemaSetValidErrors...
     d                 pr                  extproc('xmlSchemaSetValidErrors')
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d err                                 value
     d                                     like(xmlSchemaValidityErrorFunc)
     d warn                                value
     d                                     like(xmlSchemaValidityWarningFunc)
     d ctx                             *   value                                void *

     d xmlSchemaSetValidStructuredErrors...
     d                 pr                  extproc(
     d                                     'xmlSchemaSetValidStructuredErrors')
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d serror                              value like(xmlStructuredErrorFunc)
     d ctx                             *   value                                void *

     d xmlSchemaGetValidErrors...
     d                 pr                  extproc('xmlSchemaGetValidErrors')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d err                                 like(xmlSchemaValidityErrorFunc)
     d warn                                like(xmlSchemaValidityWarningFunc)
     d ctx                             *                                        void *(*)

     d xmlSchemaSetValidOptions...
     d                 pr                  extproc('xmlSchemaSetValidOptions')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d options                             value like(xmlCint)

     d xmlSchemaValidateSetFilename...
     d                 pr                  extproc(
     d                                     'xmlSchemaValidateSetFilename')
     d vctxt                               value like(xmlSchemaValidCtxtPtr)
     d filename                        *   value options(*string)               const char *

     d xmlSchemaValidCtxtGetOptions...
     d                 pr                  extproc(
     d                                     'xmlSchemaValidCtxtGetOptions')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)

     d xmlSchemaNewValidCtxt...
     d                 pr                  extproc('xmlSchemaNewValidCtxt')
     d                                     like(xmlSchemaValidCtxtPtr)
     d schema                              value like(xmlSchemaPtr)

     d xmlSchemaFreeValidCtxt...
     d                 pr                  extproc('xmlSchemaFreeValidCtxt')
     d ctxt                                value like(xmlSchemaValidCtxtPtr)

     d xmlSchemaValidateDoc...
     d                 pr                  extproc('xmlSchemaValidateDoc')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d instance                            value like(xmlDocPtr)

     d xmlSchemaValidateOneElement...
     d                 pr                  extproc(
     d                                     'xmlSchemaValidateOneElement')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d elem                                value like(xmlNodePtr)

     d xmlSchemaValidateStream...
     d                 pr                  extproc('xmlSchemaValidateStream')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d input                               value like(xmlParserInputBufferPtr)
     d enc                                 value like(xmlCharEncoding)
     d sax                                 value like(xmlSAXHandlerPtr)
     d user_data                       *   value                                void *

     d xmlSchemaValidateFile...
     d                 pr                  extproc('xmlSchemaValidateFile')
     d                                     like(xmlCint)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d filename                        *   value options(*string)               const char *
     d options                             value like(xmlCint)

     d xmlSchemaValidCtxtGetParserCtxt...
     d                 pr                  extproc(
     d                                     'xmlSchemaValidCtxtGetParserCtxt')
     d                                     like(xmlParserCtxtPtr)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)

      * Interface to insert Schemas SAX validation in a SAX stream

     d xmlSchemaSAXPlugPtr...
     d                 s               *   based(######typedef######)

     d xmlSchemaSAXPlug...
     d                 pr                  extproc('xmlSchemaSAXPlug')
     d                                     like(xmlSchemaSAXPlugPtr)
     d ctxt                                value like(xmlSchemaValidCtxtPtr)
     d sax                                 like(xmlSAXHandlerPtr)
     d user_data                       *                                        void *(*)

     d xmlSchemaSAXUnplug...
     d                 pr                  extproc('xmlSchemaSAXUnplug')
     d                                     like(xmlCint)
     d plug                                value like(xmlSchemaSAXPlugPtr)

     d xmlSchemaValidateSetLocator...
     d                 pr                  extproc(
     d                                     'xmlSchemaValidateSetLocator')
     d vctxt                               value like(xmlSchemaValidCtxtPtr)
     d f                                   value
     d                                     like(xmlSchemaValidityLocatorFunc)
     d ctxt                            *   value                                void *

      /endif                                                                    LIBXML_SCHEMAS_ENBLD
      /endif                                                                    XML_SCHEMA_H__
