Spaces:
Sleeping
Sleeping
/* | |
* 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 | |
*/ | |
extern "C" { | |
/* | |
* 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); | |
/** | |
* XML_VCTXT_DTD_VALIDATED: | |
* | |
* Set after xmlValidateDtdFinal was called. | |
*/ | |
/** | |
* XML_VCTXT_USE_PCTXT: | |
* | |
* Set if the validation context is part of a parser context. | |
*/ | |
/* | |
* 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 flags; /* internal flags */ | |
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 */ | |
xmlAutomataPtr am; /* the automata */ | |
xmlAutomataStatePtr state; /* used to build the automata */ | |
void *am; | |
void *state; | |
}; | |
/* | |
* 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); | |
XMLPUBFUN xmlNotationTablePtr XMLCALL | |
xmlCopyNotationTable (xmlNotationTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlFreeNotationTable (xmlNotationTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlDumpNotationDecl (xmlBufferPtr buf, | |
xmlNotationPtr nota); | |
XMLPUBFUN void XMLCALL | |
xmlDumpNotationTable (xmlBufferPtr buf, | |
xmlNotationTablePtr table); | |
/* 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); | |
/* DEPRECATED */ | |
XMLPUBFUN void XMLCALL | |
xmlSprintfElementContent(char *buf, | |
xmlElementContentPtr content, | |
int englob); | |
/* DEPRECATED */ | |
/* Element */ | |
XMLPUBFUN xmlElementPtr XMLCALL | |
xmlAddElementDecl (xmlValidCtxtPtr ctxt, | |
xmlDtdPtr dtd, | |
const xmlChar *name, | |
xmlElementTypeVal type, | |
xmlElementContentPtr content); | |
XMLPUBFUN xmlElementTablePtr XMLCALL | |
xmlCopyElementTable (xmlElementTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlFreeElementTable (xmlElementTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlDumpElementTable (xmlBufferPtr buf, | |
xmlElementTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlDumpElementDecl (xmlBufferPtr buf, | |
xmlElementPtr elem); | |
/* Enumeration */ | |
XMLPUBFUN xmlEnumerationPtr XMLCALL | |
xmlCreateEnumeration (const xmlChar *name); | |
XMLPUBFUN void XMLCALL | |
xmlFreeEnumeration (xmlEnumerationPtr cur); | |
XMLPUBFUN xmlEnumerationPtr XMLCALL | |
xmlCopyEnumeration (xmlEnumerationPtr cur); | |
/* 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); | |
XMLPUBFUN xmlAttributeTablePtr XMLCALL | |
xmlCopyAttributeTable (xmlAttributeTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlFreeAttributeTable (xmlAttributeTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlDumpAttributeTable (xmlBufferPtr buf, | |
xmlAttributeTablePtr table); | |
XMLPUBFUN void XMLCALL | |
xmlDumpAttributeDecl (xmlBufferPtr buf, | |
xmlAttributePtr attr); | |
/* 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 */ | |
XML_DEPRECATED | |
XMLPUBFUN xmlRefPtr XMLCALL | |
xmlAddRef (xmlValidCtxtPtr ctxt, | |
xmlDocPtr doc, | |
const xmlChar *value, | |
xmlAttrPtr attr); | |
XML_DEPRECATED | |
XMLPUBFUN void XMLCALL | |
xmlFreeRefTable (xmlRefTablePtr table); | |
XML_DEPRECATED | |
XMLPUBFUN int XMLCALL | |
xmlIsRef (xmlDocPtr doc, | |
xmlNodePtr elem, | |
xmlAttrPtr attr); | |
XML_DEPRECATED | |
XMLPUBFUN int XMLCALL | |
xmlRemoveRef (xmlDocPtr doc, | |
xmlAttrPtr attr); | |
XML_DEPRECATED | |
XMLPUBFUN xmlListPtr XMLCALL | |
xmlGetRefs (xmlDocPtr doc, | |
const xmlChar *ID); | |
/** | |
* The public function calls related to validity checking. | |
*/ | |
/* 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); | |
XMLPUBFUN int XMLCALL | |
xmlValidateNotationUse (xmlValidCtxtPtr ctxt, | |
xmlDocPtr doc, | |
const xmlChar *notationName); | |
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); | |
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); | |
/* | |
* 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); | |
} | |