(root)/
gettext-0.22.4/
gnulib-local/
lib/
libxml/
relaxng.in.h
       1  /* libxml2 - Library for parsing XML documents
       2   * Copyright (C) 2006-2019 Free Software Foundation, Inc.
       3   *
       4   * This file is not part of the GNU gettext program, but is used with
       5   * GNU gettext.
       6   *
       7   * The original copyright notice is as follows:
       8   */
       9  
      10  /*
      11   * Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
      12   *
      13   * Permission is hereby granted, free of charge, to any person obtaining a copy
      14   * of this software and associated documentation files (the "Software"), to deal
      15   * in the Software without restriction, including without limitation the rights
      16   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      17   * copies of the Software, and to permit persons to whom the Software is fur-
      18   * nished to do so, subject to the following conditions:
      19   *
      20   * The above copyright notice and this permission notice shall be included in
      21   * all copies or substantial portions of the Software.
      22   *
      23   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      24   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
      25   * NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
      26   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      27   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      28   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      29   * THE SOFTWARE.
      30   *
      31   * Author: Daniel Veillard
      32   */
      33  
      34  /*
      35   * Summary: implementation of the Relax-NG validation
      36   * Description: implementation of the Relax-NG validation
      37   */
      38  
      39  #ifndef __XML_RELAX_NG__
      40  #define __XML_RELAX_NG__
      41  
      42  #include <libxml/xmlversion.h>
      43  #include <libxml/hash.h>
      44  #include <libxml/xmlstring.h>
      45  
      46  #ifdef LIBXML_SCHEMAS_ENABLED
      47  
      48  #ifdef __cplusplus
      49  extern "C" {
      50  #endif
      51  
      52  typedef struct _xmlRelaxNG xmlRelaxNG;
      53  typedef xmlRelaxNG *xmlRelaxNGPtr;
      54  
      55  
      56  /**
      57   * xmlRelaxNGValidityErrorFunc:
      58   * @ctx: the validation context
      59   * @msg: the message
      60   * @...: extra arguments
      61   *
      62   * Signature of an error callback from a Relax-NG validation
      63   */
      64  typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
      65  						      const char *msg,
      66  						      ...) LIBXML_ATTR_FORMAT(2,3);
      67  
      68  /**
      69   * xmlRelaxNGValidityWarningFunc:
      70   * @ctx: the validation context
      71   * @msg: the message
      72   * @...: extra arguments
      73   *
      74   * Signature of a warning callback from a Relax-NG validation
      75   */
      76  typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
      77  							const char *msg,
      78  							...) LIBXML_ATTR_FORMAT(2,3);
      79  
      80  /**
      81   * A schemas validation context
      82   */
      83  typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
      84  typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
      85  
      86  typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
      87  typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
      88  
      89  /*
      90   * xmlRelaxNGValidErr:
      91   *
      92   * List of possible Relax NG validation errors
      93   */
      94  typedef enum {
      95      XML_RELAXNG_OK = 0,
      96      XML_RELAXNG_ERR_MEMORY,
      97      XML_RELAXNG_ERR_TYPE,
      98      XML_RELAXNG_ERR_TYPEVAL,
      99      XML_RELAXNG_ERR_DUPID,
     100      XML_RELAXNG_ERR_TYPECMP,
     101      XML_RELAXNG_ERR_NOSTATE,
     102      XML_RELAXNG_ERR_NODEFINE,
     103      XML_RELAXNG_ERR_LISTEXTRA,
     104      XML_RELAXNG_ERR_LISTEMPTY,
     105      XML_RELAXNG_ERR_INTERNODATA,
     106      XML_RELAXNG_ERR_INTERSEQ,
     107      XML_RELAXNG_ERR_INTEREXTRA,
     108      XML_RELAXNG_ERR_ELEMNAME,
     109      XML_RELAXNG_ERR_ATTRNAME,
     110      XML_RELAXNG_ERR_ELEMNONS,
     111      XML_RELAXNG_ERR_ATTRNONS,
     112      XML_RELAXNG_ERR_ELEMWRONGNS,
     113      XML_RELAXNG_ERR_ATTRWRONGNS,
     114      XML_RELAXNG_ERR_ELEMEXTRANS,
     115      XML_RELAXNG_ERR_ATTREXTRANS,
     116      XML_RELAXNG_ERR_ELEMNOTEMPTY,
     117      XML_RELAXNG_ERR_NOELEM,
     118      XML_RELAXNG_ERR_NOTELEM,
     119      XML_RELAXNG_ERR_ATTRVALID,
     120      XML_RELAXNG_ERR_CONTENTVALID,
     121      XML_RELAXNG_ERR_EXTRACONTENT,
     122      XML_RELAXNG_ERR_INVALIDATTR,
     123      XML_RELAXNG_ERR_DATAELEM,
     124      XML_RELAXNG_ERR_VALELEM,
     125      XML_RELAXNG_ERR_LISTELEM,
     126      XML_RELAXNG_ERR_DATATYPE,
     127      XML_RELAXNG_ERR_VALUE,
     128      XML_RELAXNG_ERR_LIST,
     129      XML_RELAXNG_ERR_NOGRAMMAR,
     130      XML_RELAXNG_ERR_EXTRADATA,
     131      XML_RELAXNG_ERR_LACKDATA,
     132      XML_RELAXNG_ERR_INTERNAL,
     133      XML_RELAXNG_ERR_ELEMWRONG,
     134      XML_RELAXNG_ERR_TEXTWRONG
     135  } xmlRelaxNGValidErr;
     136  
     137  /*
     138   * xmlRelaxNGParserFlags:
     139   *
     140   * List of possible Relax NG Parser flags
     141   */
     142  typedef enum {
     143      XML_RELAXNGP_NONE = 0,
     144      XML_RELAXNGP_FREE_DOC = 1,
     145      XML_RELAXNGP_CRNG = 2
     146  } xmlRelaxNGParserFlag;
     147  
     148  XMLPUBFUN int XMLCALL
     149  		    xmlRelaxNGInitTypes		(void);
     150  XMLPUBFUN void XMLCALL
     151  		    xmlRelaxNGCleanupTypes	(void);
     152  
     153  /*
     154   * Interfaces for parsing.
     155   */
     156  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
     157  		    xmlRelaxNGNewParserCtxt	(const char *URL);
     158  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
     159  		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
     160  						 int size);
     161  XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
     162  		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
     163  
     164  XMLPUBFUN int XMLCALL
     165  		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
     166  						 int flag);
     167  
     168  XMLPUBFUN void XMLCALL
     169  		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
     170  XMLPUBFUN void XMLCALL
     171  		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
     172  					 xmlRelaxNGValidityErrorFunc err,
     173  					 xmlRelaxNGValidityWarningFunc warn,
     174  					 void *ctx);
     175  XMLPUBFUN int XMLCALL
     176  		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
     177  					 xmlRelaxNGValidityErrorFunc *err,
     178  					 xmlRelaxNGValidityWarningFunc *warn,
     179  					 void **ctx);
     180  XMLPUBFUN void XMLCALL
     181  		    xmlRelaxNGSetParserStructuredErrors(
     182  					 xmlRelaxNGParserCtxtPtr ctxt,
     183  					 xmlStructuredErrorFunc serror,
     184  					 void *ctx);
     185  XMLPUBFUN xmlRelaxNGPtr XMLCALL
     186  		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
     187  XMLPUBFUN void XMLCALL
     188  		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
     189  #ifdef LIBXML_OUTPUT_ENABLED
     190  XMLPUBFUN void XMLCALL
     191  		    xmlRelaxNGDump		(FILE *output,
     192  					 xmlRelaxNGPtr schema);
     193  XMLPUBFUN void XMLCALL
     194  		    xmlRelaxNGDumpTree	(FILE * output,
     195  					 xmlRelaxNGPtr schema);
     196  #endif /* LIBXML_OUTPUT_ENABLED */
     197  /*
     198   * Interfaces for validating
     199   */
     200  XMLPUBFUN void XMLCALL
     201  		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
     202  					 xmlRelaxNGValidityErrorFunc err,
     203  					 xmlRelaxNGValidityWarningFunc warn,
     204  					 void *ctx);
     205  XMLPUBFUN int XMLCALL
     206  		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
     207  					 xmlRelaxNGValidityErrorFunc *err,
     208  					 xmlRelaxNGValidityWarningFunc *warn,
     209  					 void **ctx);
     210  XMLPUBFUN void XMLCALL
     211  			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
     212  					  xmlStructuredErrorFunc serror, void *ctx);
     213  XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
     214  		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
     215  XMLPUBFUN void XMLCALL
     216  		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
     217  XMLPUBFUN int XMLCALL
     218  		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
     219  						 xmlDocPtr doc);
     220  /*
     221   * Interfaces for progressive validation when possible
     222   */
     223  XMLPUBFUN int XMLCALL
     224  		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
     225  					 xmlDocPtr doc,
     226  					 xmlNodePtr elem);
     227  XMLPUBFUN int XMLCALL
     228  		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
     229  					 const xmlChar *data,
     230  					 int len);
     231  XMLPUBFUN int XMLCALL
     232  		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
     233  					 xmlDocPtr doc,
     234  					 xmlNodePtr elem);
     235  XMLPUBFUN int XMLCALL
     236  		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
     237  					 xmlDocPtr doc,
     238  					 xmlNodePtr elem);
     239  
     240  #ifdef __cplusplus
     241  }
     242  #endif
     243  
     244  #endif /* LIBXML_SCHEMAS_ENABLED */
     245  
     246  #endif /* __XML_RELAX_NG__ */