relaxng.h revision 38ae7e4efe803ea78b6499cd05a394db32623e41
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Summary: implementation of the Relax-NG validation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Description: implementation of the Relax-NG validation
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Copy: See Copyright for the status of this software.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Author: Daniel Veillard
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifndef __XML_RELAX_NG__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#define __XML_RELAX_NG__
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlversion.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/hash.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#include <libxml/xmlstring.h>
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_SCHEMAS_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncextern "C" {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlRelaxNG xmlRelaxNG;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlRelaxNG *xmlRelaxNGPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/**
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * A schemas validation context
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlRelaxNGValidErr:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * List of possible Relax NG validation errors
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef enum {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_OK = 0,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_MEMORY,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_TYPE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_TYPEVAL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_DUPID,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_TYPECMP,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_NOSTATE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_NODEFINE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_LISTEXTRA,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_LISTEMPTY,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_INTERNODATA,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_INTERSEQ,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_INTEREXTRA,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMNAME,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ATTRNAME,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMNONS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ATTRNONS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMWRONGNS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ATTRWRONGNS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMEXTRANS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ATTREXTRANS,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMNOTEMPTY,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_NOELEM,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_NOTELEM,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ATTRVALID,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_CONTENTVALID,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_EXTRACONTENT,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_INVALIDATTR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_DATAELEM,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_VALELEM,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_LISTELEM,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_DATATYPE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_VALUE,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_LIST,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_NOGRAMMAR,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_EXTRADATA,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_LACKDATA,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_INTERNAL,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_ELEMWRONG,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNG_ERR_TEXTWRONG
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync} xmlRelaxNGValidErr;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * xmlRelaxNGParserFlags:
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync *
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * List of possible Relax NG Parser flags
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsynctypedef enum {
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNGP_NONE = 0,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNGP_FREE_DOC = 1,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync XML_RELAXNGP_CRNG = 2
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync} xmlRelaxNGParserFlag;
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGInitTypes (void);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGCleanupTypes (void);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Interfaces for parsing.
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGNewParserCtxt (const char *URL);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGNewMemParserCtxt (const char *buffer,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int size);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int flag);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityErrorFunc err,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityWarningFunc warn,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityErrorFunc *err,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityWarningFunc *warn,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void **ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGSetParserStructuredErrors(
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGParserCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlStructuredErrorFunc serror,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlRelaxNGPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGFree (xmlRelaxNGPtr schema);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef LIBXML_OUTPUT_ENABLED
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGDump (FILE *output,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGPtr schema);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGDumpTree (FILE * output,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGPtr schema);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_OUTPUT_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Interfaces for validating
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityErrorFunc err,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityWarningFunc warn,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityErrorFunc *err,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidityWarningFunc *warn,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync void **ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlStructuredErrorFunc serror, void *ctx);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN void XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDocPtr doc);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync/*
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync * Interfaces for progressive validation when possible
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr elem);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync const xmlChar *data,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync int len);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr elem);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsyncXMLPUBFUN int XMLCALL
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlDocPtr doc,
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync xmlNodePtr elem);
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#ifdef __cplusplus
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync}
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* LIBXML_SCHEMAS_ENABLED */
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync
38ae7e4efe803ea78b6499cd05a394db32623e41vboxsync#endif /* __XML_RELAX_NG__ */