00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __XML_VALID_H__
00012 #define __XML_VALID_H__
00013
00014 #include <libxml/xmlversion.h>
00015 #include <libxml/xmlerror.h>
00016 #include <libxml/tree.h>
00017 #include <libxml/list.h>
00018 #include <libxml/xmlautomata.h>
00019 #include <libxml/xmlregexp.h>
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00025
00026
00027
00028 typedef struct _xmlValidState xmlValidState;
00029 typedef xmlValidState *xmlValidStatePtr;
00030
00042 typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
00043 const char *msg,
00044 ...);
00045
00057 typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx,
00058 const char *msg,
00059 ...);
00060
00061 #ifdef IN_LIBXML
00062
00067 #define XML_CTXT_FINISH_DTD_0 0xabcd1234
00068
00073 #define XML_CTXT_FINISH_DTD_1 0xabcd1235
00074 #endif
00075
00076
00077
00078
00079
00080 typedef struct _xmlValidCtxt xmlValidCtxt;
00081 typedef xmlValidCtxt *xmlValidCtxtPtr;
00082 struct _xmlValidCtxt {
00083 void *userData;
00084 xmlValidityErrorFunc error;
00085 xmlValidityWarningFunc warning;
00086
00087
00088 xmlNodePtr node;
00089 int nodeNr;
00090 int nodeMax;
00091 xmlNodePtr *nodeTab;
00092
00093 unsigned int finishDtd;
00094 xmlDocPtr doc;
00095 int valid;
00096
00097
00098 xmlValidState *vstate;
00099 int vstateNr;
00100 int vstateMax;
00101 xmlValidState *vstateTab;
00102
00103 #ifdef LIBXML_REGEXP_ENABLED
00104 xmlAutomataPtr am;
00105 xmlAutomataStatePtr state;
00106 #else
00107 void *am;
00108 void *state;
00109 #endif
00110 };
00111
00112
00113
00114
00115
00116
00117 typedef struct _xmlHashTable xmlNotationTable;
00118 typedef xmlNotationTable *xmlNotationTablePtr;
00119
00120
00121
00122
00123
00124
00125 typedef struct _xmlHashTable xmlElementTable;
00126 typedef xmlElementTable *xmlElementTablePtr;
00127
00128
00129
00130
00131
00132
00133 typedef struct _xmlHashTable xmlAttributeTable;
00134 typedef xmlAttributeTable *xmlAttributeTablePtr;
00135
00136
00137
00138
00139
00140
00141 typedef struct _xmlHashTable xmlIDTable;
00142 typedef xmlIDTable *xmlIDTablePtr;
00143
00144
00145
00146
00147
00148
00149 typedef struct _xmlHashTable xmlRefTable;
00150 typedef xmlRefTable *xmlRefTablePtr;
00151
00152
00153 XMLPUBFUN xmlNotationPtr XMLCALL
00154 xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
00155 xmlDtdPtr dtd,
00156 const xmlChar *name,
00157 const xmlChar *PublicID,
00158 const xmlChar *SystemID);
00159 #ifdef LIBXML_TREE_ENABLED
00160 XMLPUBFUN xmlNotationTablePtr XMLCALL
00161 xmlCopyNotationTable (xmlNotationTablePtr table);
00162 #endif
00163 XMLPUBFUN void XMLCALL
00164 xmlFreeNotationTable (xmlNotationTablePtr table);
00165 #ifdef LIBXML_OUTPUT_ENABLED
00166 XMLPUBFUN void XMLCALL
00167 xmlDumpNotationDecl (xmlBufferPtr buf,
00168 xmlNotationPtr nota);
00169 XMLPUBFUN void XMLCALL
00170 xmlDumpNotationTable (xmlBufferPtr buf,
00171 xmlNotationTablePtr table);
00172 #endif
00173
00174
00175
00176 XMLPUBFUN xmlElementContentPtr XMLCALL
00177 xmlNewElementContent (const xmlChar *name,
00178 xmlElementContentType type);
00179 XMLPUBFUN xmlElementContentPtr XMLCALL
00180 xmlCopyElementContent (xmlElementContentPtr content);
00181 XMLPUBFUN void XMLCALL
00182 xmlFreeElementContent (xmlElementContentPtr cur);
00183
00184 XMLPUBFUN xmlElementContentPtr XMLCALL
00185 xmlNewDocElementContent (xmlDocPtr doc,
00186 const xmlChar *name,
00187 xmlElementContentType type);
00188 XMLPUBFUN xmlElementContentPtr XMLCALL
00189 xmlCopyDocElementContent(xmlDocPtr doc,
00190 xmlElementContentPtr content);
00191 XMLPUBFUN void XMLCALL
00192 xmlFreeDocElementContent(xmlDocPtr doc,
00193 xmlElementContentPtr cur);
00194 XMLPUBFUN void XMLCALL
00195 xmlSnprintfElementContent(char *buf,
00196 int size,
00197 xmlElementContentPtr content,
00198 int englob);
00199 #ifdef LIBXML_OUTPUT_ENABLED
00200
00201 XMLPUBFUN void XMLCALL
00202 xmlSprintfElementContent(char *buf,
00203 xmlElementContentPtr content,
00204 int englob);
00205 #endif
00206
00207
00208
00209 XMLPUBFUN xmlElementPtr XMLCALL
00210 xmlAddElementDecl (xmlValidCtxtPtr ctxt,
00211 xmlDtdPtr dtd,
00212 const xmlChar *name,
00213 xmlElementTypeVal type,
00214 xmlElementContentPtr content);
00215 #ifdef LIBXML_TREE_ENABLED
00216 XMLPUBFUN xmlElementTablePtr XMLCALL
00217 xmlCopyElementTable (xmlElementTablePtr table);
00218 #endif
00219 XMLPUBFUN void XMLCALL
00220 xmlFreeElementTable (xmlElementTablePtr table);
00221 #ifdef LIBXML_OUTPUT_ENABLED
00222 XMLPUBFUN void XMLCALL
00223 xmlDumpElementTable (xmlBufferPtr buf,
00224 xmlElementTablePtr table);
00225 XMLPUBFUN void XMLCALL
00226 xmlDumpElementDecl (xmlBufferPtr buf,
00227 xmlElementPtr elem);
00228 #endif
00229
00230
00231 XMLPUBFUN xmlEnumerationPtr XMLCALL
00232 xmlCreateEnumeration (const xmlChar *name);
00233 XMLPUBFUN void XMLCALL
00234 xmlFreeEnumeration (xmlEnumerationPtr cur);
00235 #ifdef LIBXML_TREE_ENABLED
00236 XMLPUBFUN xmlEnumerationPtr XMLCALL
00237 xmlCopyEnumeration (xmlEnumerationPtr cur);
00238 #endif
00239
00240
00241 XMLPUBFUN xmlAttributePtr XMLCALL
00242 xmlAddAttributeDecl (xmlValidCtxtPtr ctxt,
00243 xmlDtdPtr dtd,
00244 const xmlChar *elem,
00245 const xmlChar *name,
00246 const xmlChar *ns,
00247 xmlAttributeType type,
00248 xmlAttributeDefault def,
00249 const xmlChar *defaultValue,
00250 xmlEnumerationPtr tree);
00251 #ifdef LIBXML_TREE_ENABLED
00252 XMLPUBFUN xmlAttributeTablePtr XMLCALL
00253 xmlCopyAttributeTable (xmlAttributeTablePtr table);
00254 #endif
00255 XMLPUBFUN void XMLCALL
00256 xmlFreeAttributeTable (xmlAttributeTablePtr table);
00257 #ifdef LIBXML_OUTPUT_ENABLED
00258 XMLPUBFUN void XMLCALL
00259 xmlDumpAttributeTable (xmlBufferPtr buf,
00260 xmlAttributeTablePtr table);
00261 XMLPUBFUN void XMLCALL
00262 xmlDumpAttributeDecl (xmlBufferPtr buf,
00263 xmlAttributePtr attr);
00264 #endif
00265
00266
00267 XMLPUBFUN xmlIDPtr XMLCALL
00268 xmlAddID (xmlValidCtxtPtr ctxt,
00269 xmlDocPtr doc,
00270 const xmlChar *value,
00271 xmlAttrPtr attr);
00272 XMLPUBFUN void XMLCALL
00273 xmlFreeIDTable (xmlIDTablePtr table);
00274 XMLPUBFUN xmlAttrPtr XMLCALL
00275 xmlGetID (xmlDocPtr doc,
00276 const xmlChar *ID);
00277 XMLPUBFUN int XMLCALL
00278 xmlIsID (xmlDocPtr doc,
00279 xmlNodePtr elem,
00280 xmlAttrPtr attr);
00281 XMLPUBFUN int XMLCALL
00282 xmlRemoveID (xmlDocPtr doc,
00283 xmlAttrPtr attr);
00284
00285
00286 XMLPUBFUN xmlRefPtr XMLCALL
00287 xmlAddRef (xmlValidCtxtPtr ctxt,
00288 xmlDocPtr doc,
00289 const xmlChar *value,
00290 xmlAttrPtr attr);
00291 XMLPUBFUN void XMLCALL
00292 xmlFreeRefTable (xmlRefTablePtr table);
00293 XMLPUBFUN int XMLCALL
00294 xmlIsRef (xmlDocPtr doc,
00295 xmlNodePtr elem,
00296 xmlAttrPtr attr);
00297 XMLPUBFUN int XMLCALL
00298 xmlRemoveRef (xmlDocPtr doc,
00299 xmlAttrPtr attr);
00300 XMLPUBFUN xmlListPtr XMLCALL
00301 xmlGetRefs (xmlDocPtr doc,
00302 const xmlChar *ID);
00303
00307 #ifdef LIBXML_VALID_ENABLED
00308
00309 XMLPUBFUN xmlValidCtxtPtr XMLCALL
00310 xmlNewValidCtxt(void);
00311 XMLPUBFUN void XMLCALL
00312 xmlFreeValidCtxt(xmlValidCtxtPtr);
00313
00314 XMLPUBFUN int XMLCALL
00315 xmlValidateRoot (xmlValidCtxtPtr ctxt,
00316 xmlDocPtr doc);
00317 XMLPUBFUN int XMLCALL
00318 xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
00319 xmlDocPtr doc,
00320 xmlElementPtr elem);
00321 XMLPUBFUN xmlChar * XMLCALL
00322 xmlValidNormalizeAttributeValue(xmlDocPtr doc,
00323 xmlNodePtr elem,
00324 const xmlChar *name,
00325 const xmlChar *value);
00326 XMLPUBFUN xmlChar * XMLCALL
00327 xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
00328 xmlDocPtr doc,
00329 xmlNodePtr elem,
00330 const xmlChar *name,
00331 const xmlChar *value);
00332 XMLPUBFUN int XMLCALL
00333 xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
00334 xmlDocPtr doc,
00335 xmlAttributePtr attr);
00336 XMLPUBFUN int XMLCALL
00337 xmlValidateAttributeValue(xmlAttributeType type,
00338 const xmlChar *value);
00339 XMLPUBFUN int XMLCALL
00340 xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
00341 xmlDocPtr doc,
00342 xmlNotationPtr nota);
00343 XMLPUBFUN int XMLCALL
00344 xmlValidateDtd (xmlValidCtxtPtr ctxt,
00345 xmlDocPtr doc,
00346 xmlDtdPtr dtd);
00347 XMLPUBFUN int XMLCALL
00348 xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
00349 xmlDocPtr doc);
00350 XMLPUBFUN int XMLCALL
00351 xmlValidateDocument (xmlValidCtxtPtr ctxt,
00352 xmlDocPtr doc);
00353 XMLPUBFUN int XMLCALL
00354 xmlValidateElement (xmlValidCtxtPtr ctxt,
00355 xmlDocPtr doc,
00356 xmlNodePtr elem);
00357 XMLPUBFUN int XMLCALL
00358 xmlValidateOneElement (xmlValidCtxtPtr ctxt,
00359 xmlDocPtr doc,
00360 xmlNodePtr elem);
00361 XMLPUBFUN int XMLCALL
00362 xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
00363 xmlDocPtr doc,
00364 xmlNodePtr elem,
00365 xmlAttrPtr attr,
00366 const xmlChar *value);
00367 XMLPUBFUN int XMLCALL
00368 xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
00369 xmlDocPtr doc,
00370 xmlNodePtr elem,
00371 const xmlChar *prefix,
00372 xmlNsPtr ns,
00373 const xmlChar *value);
00374 XMLPUBFUN int XMLCALL
00375 xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
00376 xmlDocPtr doc);
00377 #endif
00378
00379 #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
00380 XMLPUBFUN int XMLCALL
00381 xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
00382 xmlDocPtr doc,
00383 const xmlChar *notationName);
00384 #endif
00385
00386 XMLPUBFUN int XMLCALL
00387 xmlIsMixedElement (xmlDocPtr doc,
00388 const xmlChar *name);
00389 XMLPUBFUN xmlAttributePtr XMLCALL
00390 xmlGetDtdAttrDesc (xmlDtdPtr dtd,
00391 const xmlChar *elem,
00392 const xmlChar *name);
00393 XMLPUBFUN xmlAttributePtr XMLCALL
00394 xmlGetDtdQAttrDesc (xmlDtdPtr dtd,
00395 const xmlChar *elem,
00396 const xmlChar *name,
00397 const xmlChar *prefix);
00398 XMLPUBFUN xmlNotationPtr XMLCALL
00399 xmlGetDtdNotationDesc (xmlDtdPtr dtd,
00400 const xmlChar *name);
00401 XMLPUBFUN xmlElementPtr XMLCALL
00402 xmlGetDtdQElementDesc (xmlDtdPtr dtd,
00403 const xmlChar *name,
00404 const xmlChar *prefix);
00405 XMLPUBFUN xmlElementPtr XMLCALL
00406 xmlGetDtdElementDesc (xmlDtdPtr dtd,
00407 const xmlChar *name);
00408
00409 #ifdef LIBXML_VALID_ENABLED
00410
00411 XMLPUBFUN int XMLCALL
00412 xmlValidGetPotentialChildren(xmlElementContent *ctree,
00413 const xmlChar **names,
00414 int *len,
00415 int max);
00416
00417 XMLPUBFUN int XMLCALL
00418 xmlValidGetValidElements(xmlNode *prev,
00419 xmlNode *next,
00420 const xmlChar **names,
00421 int max);
00422 XMLPUBFUN int XMLCALL
00423 xmlValidateNameValue (const xmlChar *value);
00424 XMLPUBFUN int XMLCALL
00425 xmlValidateNamesValue (const xmlChar *value);
00426 XMLPUBFUN int XMLCALL
00427 xmlValidateNmtokenValue (const xmlChar *value);
00428 XMLPUBFUN int XMLCALL
00429 xmlValidateNmtokensValue(const xmlChar *value);
00430
00431 #ifdef LIBXML_REGEXP_ENABLED
00432
00433
00434
00435 XMLPUBFUN int XMLCALL
00436 xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
00437 xmlElementPtr elem);
00438
00439 XMLPUBFUN int XMLCALL
00440 xmlValidatePushElement (xmlValidCtxtPtr ctxt,
00441 xmlDocPtr doc,
00442 xmlNodePtr elem,
00443 const xmlChar *qname);
00444 XMLPUBFUN int XMLCALL
00445 xmlValidatePushCData (xmlValidCtxtPtr ctxt,
00446 const xmlChar *data,
00447 int len);
00448 XMLPUBFUN int XMLCALL
00449 xmlValidatePopElement (xmlValidCtxtPtr ctxt,
00450 xmlDocPtr doc,
00451 xmlNodePtr elem,
00452 const xmlChar *qname);
00453 #endif
00454 #endif
00455 #ifdef __cplusplus
00456 }
00457 #endif
00458 #endif