| Viewing file:  valid.h (13.3 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
/** Summary: The DTD validation
 * Description: API for the DTD handling and the validity checking
 *
 * Copy: See Copyright for the status of this software.
 *
 * Author: Daniel Veillard
 */
 
 
 #ifndef __XML_VALID_H__
 #define __XML_VALID_H__
 
 #include <libxml/xmlversion.h>
 #include <libxml/xmlerror.h>
 #include <libxml/tree.h>
 #include <libxml/list.h>
 #include <libxml/xmlautomata.h>
 #include <libxml/xmlregexp.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /*
 * Validation state added for non-determinist content model.
 */
 typedef struct _xmlValidState xmlValidState;
 typedef xmlValidState *xmlValidStatePtr;
 
 /**
 * xmlValidityErrorFunc:
 * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
 *        but comes from ctxt->userData (which normally contains such
 *        a pointer); ctxt->userData can be changed by the user.
 * @msg:  the string to format *printf like vararg
 * @...:  remaining arguments to the format
 *
 * Callback called when a validity error is found. This is a message
 * oriented function similar to an *printf function.
 */
 typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
 const char *msg,
 ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
 * xmlValidityWarningFunc:
 * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
 *        but comes from ctxt->userData (which normally contains such
 *        a pointer); ctxt->userData can be changed by the user.
 * @msg:  the string to format *printf like vararg
 * @...:  remaining arguments to the format
 *
 * Callback called when a validity warning is found. This is a message
 * oriented function similar to an *printf function.
 */
 typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx,
 const char *msg,
 ...) LIBXML_ATTR_FORMAT(2,3);
 
 #ifdef IN_LIBXML
 /**
 * XML_CTXT_FINISH_DTD_0:
 *
 * Special value for finishDtd field when embedded in an xmlParserCtxt
 */
 #define XML_CTXT_FINISH_DTD_0 0xabcd1234
 /**
 * XML_CTXT_FINISH_DTD_1:
 *
 * Special value for finishDtd field when embedded in an xmlParserCtxt
 */
 #define XML_CTXT_FINISH_DTD_1 0xabcd1235
 #endif
 
 /*
 * xmlValidCtxt:
 * An xmlValidCtxt is used for error reporting when validating.
 */
 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 */
 
 unsigned int     finishDtd;       /* finished validating the Dtd ? */
 xmlDocPtr              doc;       /* the document */
 int                  valid;       /* temporary validity check result */
 
 /* 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 */
 
 #ifdef LIBXML_REGEXP_ENABLED
 xmlAutomataPtr            am;     /* the automata */
 xmlAutomataStatePtr    state;     /* used to build the automata */
 #else
 void                     *am;
 void                  *state;
 #endif
 };
 
 /*
 * 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;
 
 /* Notation */
 XMLPUBFUN xmlNotationPtr XMLCALL
 xmlAddNotationDecl    (xmlValidCtxtPtr ctxt,
 xmlDtdPtr dtd,
 const xmlChar *name,
 const xmlChar *PublicID,
 const xmlChar *SystemID);
 #ifdef LIBXML_TREE_ENABLED
 XMLPUBFUN xmlNotationTablePtr XMLCALL
 xmlCopyNotationTable    (xmlNotationTablePtr table);
 #endif /* LIBXML_TREE_ENABLED */
 XMLPUBFUN void XMLCALL
 xmlFreeNotationTable    (xmlNotationTablePtr table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void XMLCALL
 xmlDumpNotationDecl    (xmlBufferPtr buf,
 xmlNotationPtr nota);
 XMLPUBFUN void XMLCALL
 xmlDumpNotationTable    (xmlBufferPtr buf,
 xmlNotationTablePtr table);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* Element Content */
 /* the non Doc version are being deprecated */
 XMLPUBFUN xmlElementContentPtr XMLCALL
 xmlNewElementContent    (const xmlChar *name,
 xmlElementContentType type);
 XMLPUBFUN xmlElementContentPtr XMLCALL
 xmlCopyElementContent    (xmlElementContentPtr content);
 XMLPUBFUN void XMLCALL
 xmlFreeElementContent    (xmlElementContentPtr cur);
 /* the new versions with doc argument */
 XMLPUBFUN xmlElementContentPtr XMLCALL
 xmlNewDocElementContent    (xmlDocPtr doc,
 const xmlChar *name,
 xmlElementContentType type);
 XMLPUBFUN xmlElementContentPtr XMLCALL
 xmlCopyDocElementContent(xmlDocPtr doc,
 xmlElementContentPtr content);
 XMLPUBFUN void XMLCALL
 xmlFreeDocElementContent(xmlDocPtr doc,
 xmlElementContentPtr cur);
 XMLPUBFUN void XMLCALL
 xmlSnprintfElementContent(char *buf,
 int size,
 xmlElementContentPtr content,
 int englob);
 #ifdef LIBXML_OUTPUT_ENABLED
 /* DEPRECATED */
 XMLPUBFUN void XMLCALL
 xmlSprintfElementContent(char *buf,
 xmlElementContentPtr content,
 int englob);
 #endif /* LIBXML_OUTPUT_ENABLED */
 /* DEPRECATED */
 
 /* Element */
 XMLPUBFUN xmlElementPtr XMLCALL
 xmlAddElementDecl    (xmlValidCtxtPtr ctxt,
 xmlDtdPtr dtd,
 const xmlChar *name,
 xmlElementTypeVal type,
 xmlElementContentPtr content);
 #ifdef LIBXML_TREE_ENABLED
 XMLPUBFUN xmlElementTablePtr XMLCALL
 xmlCopyElementTable    (xmlElementTablePtr table);
 #endif /* LIBXML_TREE_ENABLED */
 XMLPUBFUN void XMLCALL
 xmlFreeElementTable    (xmlElementTablePtr table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void XMLCALL
 xmlDumpElementTable    (xmlBufferPtr buf,
 xmlElementTablePtr table);
 XMLPUBFUN void XMLCALL
 xmlDumpElementDecl    (xmlBufferPtr buf,
 xmlElementPtr elem);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* Enumeration */
 XMLPUBFUN xmlEnumerationPtr XMLCALL
 xmlCreateEnumeration    (const xmlChar *name);
 XMLPUBFUN void XMLCALL
 xmlFreeEnumeration    (xmlEnumerationPtr cur);
 #ifdef LIBXML_TREE_ENABLED
 XMLPUBFUN xmlEnumerationPtr XMLCALL
 xmlCopyEnumeration    (xmlEnumerationPtr cur);
 #endif /* LIBXML_TREE_ENABLED */
 
 /* Attribute */
 XMLPUBFUN xmlAttributePtr XMLCALL
 xmlAddAttributeDecl    (xmlValidCtxtPtr ctxt,
 xmlDtdPtr dtd,
 const xmlChar *elem,
 const xmlChar *name,
 const xmlChar *ns,
 xmlAttributeType type,
 xmlAttributeDefault def,
 const xmlChar *defaultValue,
 xmlEnumerationPtr tree);
 #ifdef LIBXML_TREE_ENABLED
 XMLPUBFUN xmlAttributeTablePtr XMLCALL
 xmlCopyAttributeTable  (xmlAttributeTablePtr table);
 #endif /* LIBXML_TREE_ENABLED */
 XMLPUBFUN void XMLCALL
 xmlFreeAttributeTable  (xmlAttributeTablePtr table);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void XMLCALL
 xmlDumpAttributeTable  (xmlBufferPtr buf,
 xmlAttributeTablePtr table);
 XMLPUBFUN void XMLCALL
 xmlDumpAttributeDecl   (xmlBufferPtr buf,
 xmlAttributePtr attr);
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /* IDs */
 XMLPUBFUN xmlIDPtr XMLCALL
 xmlAddID           (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 const xmlChar *value,
 xmlAttrPtr attr);
 XMLPUBFUN void XMLCALL
 xmlFreeIDTable           (xmlIDTablePtr table);
 XMLPUBFUN xmlAttrPtr XMLCALL
 xmlGetID           (xmlDocPtr doc,
 const xmlChar *ID);
 XMLPUBFUN int XMLCALL
 xmlIsID               (xmlDocPtr doc,
 xmlNodePtr elem,
 xmlAttrPtr attr);
 XMLPUBFUN int XMLCALL
 xmlRemoveID           (xmlDocPtr doc,
 xmlAttrPtr attr);
 
 /* IDREFs */
 XMLPUBFUN xmlRefPtr XMLCALL
 xmlAddRef           (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 const xmlChar *value,
 xmlAttrPtr attr);
 XMLPUBFUN void XMLCALL
 xmlFreeRefTable           (xmlRefTablePtr table);
 XMLPUBFUN int XMLCALL
 xmlIsRef           (xmlDocPtr doc,
 xmlNodePtr elem,
 xmlAttrPtr attr);
 XMLPUBFUN int XMLCALL
 xmlRemoveRef           (xmlDocPtr doc,
 xmlAttrPtr attr);
 XMLPUBFUN xmlListPtr XMLCALL
 xmlGetRefs           (xmlDocPtr doc,
 const xmlChar *ID);
 
 /**
 * The public function calls related to validity checking.
 */
 #ifdef LIBXML_VALID_ENABLED
 /* Allocate/Release Validation Contexts */
 XMLPUBFUN xmlValidCtxtPtr XMLCALL
 xmlNewValidCtxt(void);
 XMLPUBFUN void XMLCALL
 xmlFreeValidCtxt(xmlValidCtxtPtr);
 
 XMLPUBFUN int XMLCALL
 xmlValidateRoot        (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc);
 XMLPUBFUN int XMLCALL
 xmlValidateElementDecl    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlElementPtr elem);
 XMLPUBFUN xmlChar * XMLCALL
 xmlValidNormalizeAttributeValue(xmlDocPtr doc,
 xmlNodePtr elem,
 const xmlChar *name,
 const xmlChar *value);
 XMLPUBFUN xmlChar * XMLCALL
 xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem,
 const xmlChar *name,
 const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlAttributePtr attr);
 XMLPUBFUN int XMLCALL
 xmlValidateAttributeValue(xmlAttributeType type,
 const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateNotationDecl    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNotationPtr nota);
 XMLPUBFUN int XMLCALL
 xmlValidateDtd        (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlDtdPtr dtd);
 XMLPUBFUN int XMLCALL
 xmlValidateDtdFinal    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc);
 XMLPUBFUN int XMLCALL
 xmlValidateDocument    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc);
 XMLPUBFUN int XMLCALL
 xmlValidateElement    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem);
 XMLPUBFUN int XMLCALL
 xmlValidateOneElement    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem);
 XMLPUBFUN int XMLCALL
 xmlValidateOneAttribute    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr    elem,
 xmlAttrPtr attr,
 const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateOneNamespace    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem,
 const xmlChar *prefix,
 xmlNsPtr ns,
 const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
 xmlDocPtr doc);
 #endif /* LIBXML_VALID_ENABLED */
 
 #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 XMLPUBFUN int XMLCALL
 xmlValidateNotationUse    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 const xmlChar *notationName);
 #endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */
 
 XMLPUBFUN int XMLCALL
 xmlIsMixedElement    (xmlDocPtr doc,
 const xmlChar *name);
 XMLPUBFUN xmlAttributePtr XMLCALL
 xmlGetDtdAttrDesc    (xmlDtdPtr dtd,
 const xmlChar *elem,
 const xmlChar *name);
 XMLPUBFUN xmlAttributePtr XMLCALL
 xmlGetDtdQAttrDesc    (xmlDtdPtr dtd,
 const xmlChar *elem,
 const xmlChar *name,
 const xmlChar *prefix);
 XMLPUBFUN xmlNotationPtr XMLCALL
 xmlGetDtdNotationDesc    (xmlDtdPtr dtd,
 const xmlChar *name);
 XMLPUBFUN xmlElementPtr XMLCALL
 xmlGetDtdQElementDesc    (xmlDtdPtr dtd,
 const xmlChar *name,
 const xmlChar *prefix);
 XMLPUBFUN xmlElementPtr XMLCALL
 xmlGetDtdElementDesc    (xmlDtdPtr dtd,
 const xmlChar *name);
 
 #ifdef LIBXML_VALID_ENABLED
 
 XMLPUBFUN int XMLCALL
 xmlValidGetPotentialChildren(xmlElementContent *ctree,
 const xmlChar **names,
 int *len,
 int max);
 
 XMLPUBFUN int XMLCALL
 xmlValidGetValidElements(xmlNode *prev,
 xmlNode *next,
 const xmlChar **names,
 int max);
 XMLPUBFUN int XMLCALL
 xmlValidateNameValue    (const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateNamesValue    (const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateNmtokenValue    (const xmlChar *value);
 XMLPUBFUN int XMLCALL
 xmlValidateNmtokensValue(const xmlChar *value);
 
 #ifdef LIBXML_REGEXP_ENABLED
 /*
 * Validation based on the regexp support
 */
 XMLPUBFUN int XMLCALL
 xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
 xmlElementPtr elem);
 
 XMLPUBFUN int XMLCALL
 xmlValidatePushElement    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem,
 const xmlChar *qname);
 XMLPUBFUN int XMLCALL
 xmlValidatePushCData    (xmlValidCtxtPtr ctxt,
 const xmlChar *data,
 int len);
 XMLPUBFUN int XMLCALL
 xmlValidatePopElement    (xmlValidCtxtPtr ctxt,
 xmlDocPtr doc,
 xmlNodePtr elem,
 const xmlChar *qname);
 #endif /* LIBXML_REGEXP_ENABLED */
 #endif /* LIBXML_VALID_ENABLED */
 #ifdef __cplusplus
 }
 #endif
 #endif /* __XML_VALID_H__ */
 
 |