2001-02-23 20:55:21 +03:00
/*
* valid . h : interface to the DTD handling and the validity checking
*
* See Copyright for the status of this software .
*
2001-06-24 16:13:24 +04:00
* daniel @ veillard . com
2001-02-23 20:55:21 +03:00
*/
# ifndef __XML_VALID_H__
# define __XML_VALID_H__
# include <libxml/tree.h>
2001-03-24 20:00:36 +03:00
# include <libxml/list.h>
2001-02-23 20:55:21 +03:00
# ifdef __cplusplus
extern " C " {
# endif
2001-04-20 17:03:48 +04:00
/*
* Validation state added for non - determinist content model
*/
typedef struct _xmlValidState xmlValidState ;
typedef xmlValidState * xmlValidStatePtr ;
2001-02-23 20:55:21 +03:00
/**
* an xmlValidCtxt is used for error reporting when validating
*/
typedef void ( * xmlValidityErrorFunc ) ( void * ctx , const char * msg , . . . ) ;
typedef void ( * xmlValidityWarningFunc ) ( void * ctx , const char * msg , . . . ) ;
typedef struct _xmlValidCtxt xmlValidCtxt ;
typedef xmlValidCtxt * xmlValidCtxtPtr ;
struct _xmlValidCtxt {
void * userData ; /* user specific data block */
xmlValidityErrorFunc error ; /* the callback in case of errors */
xmlValidityWarningFunc warning ; /* the callback in case of warning */
/* Node analysis stack used when validating within entities */
xmlNodePtr node ; /* Current parsed Node */
int nodeNr ; /* Depth of the parsing stack */
int nodeMax ; /* Max depth of the parsing stack */
xmlNodePtr * nodeTab ; /* array of nodes */
int finishDtd ; /* finished validating the Dtd ? */
xmlDocPtr doc ; /* the document */
int valid ; /* temporary validity check result */
2001-04-20 17:03:48 +04:00
/* state state used for non-determinist content validation */
xmlValidState * vstate ; /* current state */
int vstateNr ; /* Depth of the validation stack */
int vstateMax ; /* Max depth of the validation stack */
xmlValidState * vstateTab ; /* array of validation states */
2001-02-23 20:55:21 +03:00
} ;
/*
* ALl notation declarations are stored in a table
* there is one table per DTD
*/
typedef struct _xmlHashTable xmlNotationTable ;
typedef xmlNotationTable * xmlNotationTablePtr ;
/*
* ALl element declarations are stored in a table
* there is one table per DTD
*/
typedef struct _xmlHashTable xmlElementTable ;
typedef xmlElementTable * xmlElementTablePtr ;
/*
* ALl attribute declarations are stored in a table
* there is one table per DTD
*/
typedef struct _xmlHashTable xmlAttributeTable ;
typedef xmlAttributeTable * xmlAttributeTablePtr ;
/*
* ALl IDs attributes are stored in a table
* there is one table per document
*/
typedef struct _xmlHashTable xmlIDTable ;
typedef xmlIDTable * xmlIDTablePtr ;
/*
* ALl Refs attributes are stored in a table
* there is one table per document
*/
typedef struct _xmlHashTable xmlRefTable ;
typedef xmlRefTable * xmlRefTablePtr ;
/* helper */
xmlChar * xmlSplitQName2 ( const xmlChar * name ,
xmlChar * * prefix ) ;
/* Notation */
xmlNotationPtr xmlAddNotationDecl ( xmlValidCtxtPtr ctxt ,
xmlDtdPtr dtd ,
const xmlChar * name ,
const xmlChar * PublicID ,
const xmlChar * SystemID ) ;
xmlNotationTablePtr xmlCopyNotationTable ( xmlNotationTablePtr table ) ;
void xmlFreeNotationTable ( xmlNotationTablePtr table ) ;
void xmlDumpNotationDecl ( xmlBufferPtr buf ,
xmlNotationPtr nota ) ;
void xmlDumpNotationTable ( xmlBufferPtr buf ,
xmlNotationTablePtr table ) ;
/* Element Content */
xmlElementContentPtr xmlNewElementContent ( xmlChar * name ,
xmlElementContentType type ) ;
xmlElementContentPtr xmlCopyElementContent ( xmlElementContentPtr content ) ;
void xmlFreeElementContent ( xmlElementContentPtr cur ) ;
2001-08-15 16:06:36 +04:00
void xmlSnprintfElementContent ( char * buf ,
int size ,
xmlElementContentPtr content ,
int glob ) ;
/* DEPRECATED */
2001-02-23 20:55:21 +03:00
void xmlSprintfElementContent ( char * buf ,
xmlElementContentPtr content ,
int glob ) ;
2001-08-15 16:06:36 +04:00
/* DEPRECATED */
2001-02-23 20:55:21 +03:00
/* Element */
xmlElementPtr xmlAddElementDecl ( xmlValidCtxtPtr ctxt ,
xmlDtdPtr dtd ,
const xmlChar * name ,
xmlElementTypeVal type ,
xmlElementContentPtr content ) ;
xmlElementTablePtr xmlCopyElementTable ( xmlElementTablePtr table ) ;
void xmlFreeElementTable ( xmlElementTablePtr table ) ;
void xmlDumpElementTable ( xmlBufferPtr buf ,
xmlElementTablePtr table ) ;
void xmlDumpElementDecl ( xmlBufferPtr buf ,
xmlElementPtr elem ) ;
/* Enumeration */
xmlEnumerationPtr xmlCreateEnumeration ( xmlChar * name ) ;
void xmlFreeEnumeration ( xmlEnumerationPtr cur ) ;
xmlEnumerationPtr xmlCopyEnumeration ( xmlEnumerationPtr cur ) ;
/* Attribute */
xmlAttributePtr xmlAddAttributeDecl ( xmlValidCtxtPtr ctxt ,
xmlDtdPtr dtd ,
const xmlChar * elem ,
const xmlChar * name ,
const xmlChar * ns ,
xmlAttributeType type ,
xmlAttributeDefault def ,
const xmlChar * defaultValue ,
xmlEnumerationPtr tree ) ;
xmlAttributeTablePtr xmlCopyAttributeTable ( xmlAttributeTablePtr table ) ;
void xmlFreeAttributeTable ( xmlAttributeTablePtr table ) ;
void xmlDumpAttributeTable ( xmlBufferPtr buf ,
xmlAttributeTablePtr table ) ;
void xmlDumpAttributeDecl ( xmlBufferPtr buf ,
xmlAttributePtr attr ) ;
/* IDs */
xmlIDPtr xmlAddID ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
const xmlChar * value ,
xmlAttrPtr attr ) ;
void xmlFreeIDTable ( xmlIDTablePtr table ) ;
xmlAttrPtr xmlGetID ( xmlDocPtr doc ,
const xmlChar * ID ) ;
int xmlIsID ( xmlDocPtr doc ,
xmlNodePtr elem ,
xmlAttrPtr attr ) ;
int xmlRemoveID ( xmlDocPtr doc , xmlAttrPtr attr ) ;
/* IDREFs */
xmlRefPtr xmlAddRef ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
const xmlChar * value ,
xmlAttrPtr attr ) ;
void xmlFreeRefTable ( xmlRefTablePtr table ) ;
int xmlIsRef ( xmlDocPtr doc ,
xmlNodePtr elem ,
xmlAttrPtr attr ) ;
int xmlRemoveRef ( xmlDocPtr doc , xmlAttrPtr attr ) ;
2001-03-24 20:00:36 +03:00
xmlListPtr xmlGetRefs ( xmlDocPtr doc ,
const xmlChar * ID ) ;
2001-02-23 20:55:21 +03:00
/**
* The public function calls related to validity checking
*/
int xmlValidateRoot ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ) ;
int xmlValidateElementDecl ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlElementPtr elem ) ;
xmlChar * xmlValidNormalizeAttributeValue ( xmlDocPtr doc ,
xmlNodePtr elem ,
const xmlChar * name ,
const xmlChar * value ) ;
int xmlValidateAttributeDecl ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlAttributePtr attr ) ;
int xmlValidateAttributeValue ( xmlAttributeType type ,
const xmlChar * value ) ;
int xmlValidateNotationDecl ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlNotationPtr nota ) ;
int xmlValidateDtd ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlDtdPtr dtd ) ;
int xmlValidateDtdFinal ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ) ;
int xmlValidateDocument ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ) ;
int xmlValidateElement ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlNodePtr elem ) ;
int xmlValidateOneElement ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlNodePtr elem ) ;
int xmlValidateOneAttribute ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
xmlNodePtr elem ,
xmlAttrPtr attr ,
const xmlChar * value ) ;
int xmlValidateDocumentFinal ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ) ;
int xmlValidateNotationUse ( xmlValidCtxtPtr ctxt ,
xmlDocPtr doc ,
const xmlChar * notationName ) ;
int xmlIsMixedElement ( xmlDocPtr doc ,
const xmlChar * name ) ;
xmlAttributePtr xmlGetDtdAttrDesc ( xmlDtdPtr dtd ,
const xmlChar * elem ,
const xmlChar * name ) ;
2001-08-07 05:10:10 +04:00
xmlAttributePtr xmlGetDtdQAttrDesc ( xmlDtdPtr dtd ,
const xmlChar * elem ,
const xmlChar * name ,
const xmlChar * prefix ) ;
2001-02-23 20:55:21 +03:00
xmlNotationPtr xmlGetDtdNotationDesc ( xmlDtdPtr dtd ,
const xmlChar * name ) ;
2001-08-07 05:10:10 +04:00
xmlElementPtr xmlGetDtdQElementDesc ( xmlDtdPtr dtd ,
const xmlChar * name ,
const xmlChar * prefix ) ;
2001-02-23 20:55:21 +03:00
xmlElementPtr xmlGetDtdElementDesc ( xmlDtdPtr dtd ,
const xmlChar * name ) ;
int xmlValidGetValidElements ( xmlNode * prev ,
xmlNode * next ,
const xmlChar * * list ,
int max ) ;
int xmlValidGetPotentialChildren ( xmlElementContent * ctree ,
const xmlChar * * list ,
int * len ,
int max ) ;
# ifdef __cplusplus
}
# endif
# endif /* __XML_VALID_H__ */