ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ/** * @file * * @brief DTD validator * * API to handle XML Document Type Definitions and validate * documents. * * @copyright See Copyright for the status of this software. * * @author Daniel Veillard */ #ifndef __XML_VALID_H__ #define __XML_VALID_H__ #include #include #define XML_TREE_INTERNALS #include #undef XML_TREE_INTERNALS #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Validation state added for non-deterministic content model. */ typedef struct _xmlValidState xmlValidState; typedef xmlValidState *xmlValidStatePtr; /** * Report a validity error. * * @param ctx user data (usually an xmlValidCtxt) * @param msg printf-like format string * @param ... arguments to format */ typedef void (*xmlValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); /** * Report a validity warning. * * @param ctx user data (usually an xmlValidCtxt) * @param msg printf-like format string * @param ... arguments to format */ typedef void (*xmlValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3); typedef struct _xmlValidCtxt xmlValidCtxt; typedef xmlValidCtxt *xmlValidCtxtPtr; /** * An xmlValidCtxt is used for error reporting when validating. */ 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 */ xmlNode *node; /* Current parsed Node */ int nodeNr; /* Depth of the parsing stack */ int nodeMax; /* Max depth of the parsing stack */ xmlNode **nodeTab; /* array of nodes */ unsigned int flags; /* internal flags */ xmlDoc *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 xmlAutomata *am; /* the automata */ xmlAutomataState *state; /* used to build the automata */ #else void *am; void *state; #endif }; typedef struct _xmlHashTable xmlNotationTable; typedef xmlNotationTable *xmlNotationTablePtr; typedef struct _xmlHashTable xmlElementTable; typedef xmlElementTable *xmlElementTablePtr; typedef struct _xmlHashTable xmlAttributeTable; typedef xmlAttributeTable *xmlAttributeTablePtr; typedef struct _xmlHashTable xmlIDTable; typedef xmlIDTable *xmlIDTablePtr; typedef struct _xmlHashTable xmlRefTable; typedef xmlRefTable *xmlRefTablePtr; /* Notation */ XMLPUBFUN xmlNotation * xmlAddNotationDecl (xmlValidCtxt *ctxt, xmlDtd *dtd, const xmlChar *name, const xmlChar *publicId, const xmlChar *systemId); XML_DEPRECATED XMLPUBFUN xmlNotationTable * xmlCopyNotationTable (xmlNotationTable *table); XML_DEPRECATED XMLPUBFUN void xmlFreeNotationTable (xmlNotationTable *table); #ifdef LIBXML_OUTPUT_ENABLED XML_DEPRECATED XMLPUBFUN void xmlDumpNotationDecl (xmlBuffer *buf, xmlNotation *nota); /* XML_DEPRECATED, still used in lxml */ XMLPUBFUN void xmlDumpNotationTable (xmlBuffer *buf, xmlNotationTable *table); #endif /* LIBXML_OUTPUT_ENABLED */ /* Element Content */ XML_DEPRECATED XMLPUBFUN xmlElementContent * xmlNewElementContent (const xmlChar *name, xmlElementContentType type); XML_DEPRECATED XMLPUBFUN xmlElementContent * xmlCopyElementContent (xmlElementContent *content); XML_DEPRECATED XMLPUBFUN void xmlFreeElementContent (xmlElementContent *cur); XML_DEPRECATED XMLPUBFUN xmlElementContent * xmlNewDocElementContent (xmlDoc *doc, const xmlChar *name, xmlElementContentType type); XML_DEPRECATED XMLPUBFUN xmlElementContent * xmlCopyDocElementContent(xmlDoc *doc, xmlElementContent *content); XML_DEPRECATED XMLPUBFUN void xmlFreeDocElementContent(xmlDoc *doc, xmlElementContent *cur); XML_DEPRECATED XMLPUBFUN void xmlSnprintfElementContent(char *buf, int size, xmlElementContent *content, int englob); #ifdef LIBXML_OUTPUT_ENABLED XML_DEPRECATED XMLPUBFUN void xmlSprintfElementContent(char *buf, xmlElementContent *content, int englob); #endif /* LIBXML_OUTPUT_ENABLED */ /* Element */ XMLPUBFUN xmlElement * xmlAddElementDecl (xmlValidCtxt *ctxt, xmlDtd *dtd, const xmlChar *name, xmlElementTypeVal type, xmlElementContent *content); XML_DEPRECATED XMLPUBFUN xmlElementTable * xmlCopyElementTable (xmlElementTable *table); XML_DEPRECATED XMLPUBFUN void xmlFreeElementTable (xmlElementTable *table); #ifdef LIBXML_OUTPUT_ENABLED XML_DEPRECATED XMLPUBFUN void xmlDumpElementTable (xmlBuffer *buf, xmlElementTable *table); XML_DEPRECATED XMLPUBFUN void xmlDumpElementDecl (xmlBuffer *buf, xmlElement *elem); #endif /* LIBXML_OUTPUT_ENABLED */ /* Enumeration */ XML_DEPRECATED XMLPUBFUN xmlEnumeration * xmlCreateEnumeration (const xmlChar *name); /* XML_DEPRECATED, needed for custom attributeDecl SAX handler */ XMLPUBFUN void xmlFreeEnumeration (xmlEnumeration *cur); XML_DEPRECATED XMLPUBFUN xmlEnumeration * xmlCopyEnumeration (xmlEnumeration *cur); /* Attribute */ XMLPUBFUN xmlAttribute * xmlAddAttributeDecl (xmlValidCtxt *ctxt, xmlDtd *dtd, const xmlChar *elem, const xmlChar *name, const xmlChar *ns, xmlAttributeType type, xmlAttributeDefault def, const xmlChar *defaultValue, xmlEnumeration *tree); XML_DEPRECATED XMLPUBFUN xmlAttributeTable * xmlCopyAttributeTable (xmlAttributeTable *table); XML_DEPRECATED XMLPUBFUN void xmlFreeAttributeTable (xmlAttributeTable *table); #ifdef LIBXML_OUTPUT_ENABLED XML_DEPRECATED XMLPUBFUN void xmlDumpAttributeTable (xmlBuffer *buf, xmlAttributeTable *table); XML_DEPRECATED XMLPUBFUN void xmlDumpAttributeDecl (xmlBuffer *buf, xmlAttribute *attr); #endif /* LIBXML_OUTPUT_ENABLED */ /* IDs */ XMLPUBFUN int xmlAddIDSafe (xmlAttr *attr, const xmlChar *value); XMLPUBFUN xmlID * xmlAddID (xmlValidCtxt *ctxt, xmlDoc *doc, const xmlChar *value, xmlAttr *attr); XMLPUBFUN void xmlFreeIDTable (xmlIDTable *table); XMLPUBFUN xmlAttr * xmlGetID (xmlDoc *doc, const xmlChar *ID); XMLPUBFUN int xmlIsID (xmlDoc *doc, xmlNode *elem, xmlAttr *attr); XMLPUBFUN int xmlRemoveID (xmlDoc *doc, xmlAttr *attr); /* IDREFs */ XML_DEPRECATED XMLPUBFUN xmlRef * xmlAddRef (xmlValidCtxt *ctxt, xmlDoc *doc, const xmlChar *value, xmlAttr *attr); XML_DEPRECATED XMLPUBFUN void xmlFreeRefTable (xmlRefTable *table); XML_DEPRECATED XMLPUBFUN int xmlIsRef (xmlDoc *doc, xmlNode *elem, xmlAttr *attr); XML_DEPRECATED XMLPUBFUN int xmlRemoveRef (xmlDoc *doc, xmlAttr *attr); XML_DEPRECATED XMLPUBFUN xmlList * xmlGetRefs (xmlDoc *doc, const xmlChar *ID); /** * The public function calls related to validity checking. */ #ifdef LIBXML_VALID_ENABLED /* Allocate/Release Validation Contexts */ XMLPUBFUN xmlValidCtxt * xmlNewValidCtxt(void); XMLPUBFUN void xmlFreeValidCtxt(xmlValidCtxt *); XML_DEPRECATED XMLPUBFUN int xmlValidateRoot (xmlValidCtxt *ctxt, xmlDoc *doc); XML_DEPRECATED XMLPUBFUN int xmlValidateElementDecl (xmlValidCtxt *ctxt, xmlDoc *doc, xmlElement *elem); XML_DEPRECATED XMLPUBFUN xmlChar * xmlValidNormalizeAttributeValue(xmlDoc *doc, xmlNode *elem, const xmlChar *name, const xmlChar *value); XML_DEPRECATED XMLPUBFUN xmlChar * xmlValidCtxtNormalizeAttributeValue(xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem, const xmlChar *name, const xmlChar *value); XML_DEPRECATED XMLPUBFUN int xmlValidateAttributeDecl(xmlValidCtxt *ctxt, xmlDoc *doc, xmlAttribute *attr); XML_DEPRECATED XMLPUBFUN int xmlValidateAttributeValue(xmlAttributeType type, const xmlChar *value); XML_DEPRECATED XMLPUBFUN int xmlValidateNotationDecl (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNotation *nota); XMLPUBFUN int xmlValidateDtd (xmlValidCtxt *ctxt, xmlDoc *doc, xmlDtd *dtd); XML_DEPRECATED XMLPUBFUN int xmlValidateDtdFinal (xmlValidCtxt *ctxt, xmlDoc *doc); XMLPUBFUN int xmlValidateDocument (xmlValidCtxt *ctxt, xmlDoc *doc); XMLPUBFUN int xmlValidateElement (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem); XML_DEPRECATED XMLPUBFUN int xmlValidateOneElement (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem); XML_DEPRECATED XMLPUBFUN int xmlValidateOneAttribute (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem, xmlAttr *attr, const xmlChar *value); XML_DEPRECATED XMLPUBFUN int xmlValidateOneNamespace (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem, const xmlChar *prefix, xmlNs *ns, const xmlChar *value); XML_DEPRECATED XMLPUBFUN int xmlValidateDocumentFinal(xmlValidCtxt *ctxt, xmlDoc *doc); XML_DEPRECATED XMLPUBFUN int xmlValidateNotationUse (xmlValidCtxt *ctxt, xmlDoc *doc, const xmlChar *notationName); #endif /* LIBXML_VALID_ENABLED */ XML_DEPRECATED XMLPUBFUN int xmlIsMixedElement (xmlDoc *doc, const xmlChar *name); XMLPUBFUN xmlAttribute * xmlGetDtdAttrDesc (xmlDtd *dtd, const xmlChar *elem, const xmlChar *name); XMLPUBFUN xmlAttribute * xmlGetDtdQAttrDesc (xmlDtd *dtd, const xmlChar *elem, const xmlChar *name, const xmlChar *prefix); XMLPUBFUN xmlNotation * xmlGetDtdNotationDesc (xmlDtd *dtd, const xmlChar *name); XMLPUBFUN xmlElement * xmlGetDtdQElementDesc (xmlDtd *dtd, const xmlChar *name, const xmlChar *prefix); XMLPUBFUN xmlElement * xmlGetDtdElementDesc (xmlDtd *dtd, const xmlChar *name); #ifdef LIBXML_VALID_ENABLED XMLPUBFUN int xmlValidGetPotentialChildren(xmlElementContent *ctree, const xmlChar **names, int *len, int max); /* only needed for `xmllint --insert` */ XMLPUBFUN int xmlValidGetValidElements(xmlNode *prev, xmlNode *next, const xmlChar **names, int max); XMLPUBFUN int xmlValidateNameValue (const xmlChar *value); XMLPUBFUN int xmlValidateNamesValue (const xmlChar *value); XMLPUBFUN int xmlValidateNmtokenValue (const xmlChar *value); XMLPUBFUN int xmlValidateNmtokensValue(const xmlChar *value); #ifdef LIBXML_REGEXP_ENABLED /* * Validation based on the regexp support */ XML_DEPRECATED XMLPUBFUN int xmlValidBuildContentModel(xmlValidCtxt *ctxt, xmlElement *elem); XML_DEPRECATED XMLPUBFUN int xmlValidatePushElement (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem, const xmlChar *qname); XML_DEPRECATED XMLPUBFUN int xmlValidatePushCData (xmlValidCtxt *ctxt, const xmlChar *data, int len); XML_DEPRECATED XMLPUBFUN int xmlValidatePopElement (xmlValidCtxt *ctxt, xmlDoc *doc, xmlNode *elem, const xmlChar *qname); #endif /* LIBXML_REGEXP_ENABLED */ #endif /* LIBXML_VALID_ENABLED */ #ifdef __cplusplus } #endif #endif /* __XML_VALID_H__ */