ReactOS 0.4.15-dev-7918-g2a2556c
valid.h
Go to the documentation of this file.
1/*
2 * Summary: The DTD validation
3 * Description: API for the DTD handling and the validity checking
4 *
5 * Copy: See Copyright for the status of this software.
6 *
7 * Author: Daniel Veillard
8 */
9
10
11#ifndef __XML_VALID_H__
12#define __XML_VALID_H__
13
14#include <libxml/xmlversion.h>
15#include <libxml/xmlerror.h>
16#include <libxml/tree.h>
17#include <libxml/list.h>
18#include <libxml/xmlautomata.h>
19#include <libxml/xmlregexp.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/*
26 * Validation state added for non-determinist content model.
27 */
28typedef struct _xmlValidState xmlValidState;
30
43 const char *msg,
44 ...) LIBXML_ATTR_FORMAT(2,3);
45
58 const char *msg,
59 ...) LIBXML_ATTR_FORMAT(2,3);
60
61#ifdef IN_LIBXML
67#define XML_VCTXT_DTD_VALIDATED (1u << 0)
73#define XML_VCTXT_USE_PCTXT (1u << 1)
74#endif
75
76/*
77 * xmlValidCtxt:
78 * An xmlValidCtxt is used for error reporting when validating.
79 */
83 void *userData; /* user specific data block */
84 xmlValidityErrorFunc error; /* the callback in case of errors */
85 xmlValidityWarningFunc warning; /* the callback in case of warning */
86
87 /* Node analysis stack used when validating within entities */
88 xmlNodePtr node; /* Current parsed Node */
89 int nodeNr; /* Depth of the parsing stack */
90 int nodeMax; /* Max depth of the parsing stack */
91 xmlNodePtr *nodeTab; /* array of nodes */
92
93 unsigned int flags; /* internal flags */
94 xmlDocPtr doc; /* the document */
95 int valid; /* temporary validity check result */
96
97 /* state state used for non-determinist content validation */
98 xmlValidState *vstate; /* current state */
99 int vstateNr; /* Depth of the validation stack */
100 int vstateMax; /* Max depth of the validation stack */
101 xmlValidState *vstateTab; /* array of validation states */
102
103#ifdef LIBXML_REGEXP_ENABLED
104 xmlAutomataPtr am; /* the automata */
105 xmlAutomataStatePtr state; /* used to build the automata */
106#else
107 void *am;
108 void *state;
109#endif
110};
111
112/*
113 * ALL notation declarations are stored in a table.
114 * There is one table per DTD.
115 */
116
119
120/*
121 * ALL element declarations are stored in a table.
122 * There is one table per DTD.
123 */
124
127
128/*
129 * ALL attribute declarations are stored in a table.
130 * There is one table per DTD.
131 */
132
135
136/*
137 * ALL IDs attributes are stored in a table.
138 * There is one table per document.
139 */
140
143
144/*
145 * ALL Refs attributes are stored in a table.
146 * There is one table per document.
147 */
148
151
152/* Notation */
155 xmlDtdPtr dtd,
156 const xmlChar *name,
157 const xmlChar *PublicID,
158 const xmlChar *SystemID);
159#ifdef LIBXML_TREE_ENABLED
161 xmlCopyNotationTable (xmlNotationTablePtr table);
162#endif /* LIBXML_TREE_ENABLED */
165#ifdef LIBXML_OUTPUT_ENABLED
167 xmlDumpNotationDecl (xmlBufferPtr buf,
168 xmlNotationPtr nota);
170 xmlDumpNotationTable (xmlBufferPtr buf,
172#endif /* LIBXML_OUTPUT_ENABLED */
173
174/* Element Content */
175/* the non Doc version are being deprecated */
183/* the new versions with doc argument */
186 const xmlChar *name,
196 int size,
198 int englob);
199#ifdef LIBXML_OUTPUT_ENABLED
200/* DEPRECATED */
202 xmlSprintfElementContent(char *buf,
204 int englob);
205#endif /* LIBXML_OUTPUT_ENABLED */
206/* DEPRECATED */
207
208/* Element */
211 xmlDtdPtr dtd,
212 const xmlChar *name,
215#ifdef LIBXML_TREE_ENABLED
217 xmlCopyElementTable (xmlElementTablePtr table);
218#endif /* LIBXML_TREE_ENABLED */
221#ifdef LIBXML_OUTPUT_ENABLED
223 xmlDumpElementTable (xmlBufferPtr buf,
226 xmlDumpElementDecl (xmlBufferPtr buf,
228#endif /* LIBXML_OUTPUT_ENABLED */
229
230/* Enumeration */
235#ifdef LIBXML_TREE_ENABLED
237 xmlCopyEnumeration (xmlEnumerationPtr cur);
238#endif /* LIBXML_TREE_ENABLED */
239
240/* Attribute */
243 xmlDtdPtr dtd,
244 const xmlChar *elem,
245 const xmlChar *name,
246 const xmlChar *ns,
249 const xmlChar *defaultValue,
251#ifdef LIBXML_TREE_ENABLED
253 xmlCopyAttributeTable (xmlAttributeTablePtr table);
254#endif /* LIBXML_TREE_ENABLED */
257#ifdef LIBXML_OUTPUT_ENABLED
259 xmlDumpAttributeTable (xmlBufferPtr buf,
262 xmlDumpAttributeDecl (xmlBufferPtr buf,
264#endif /* LIBXML_OUTPUT_ENABLED */
265
266/* IDs */
269 xmlDocPtr doc,
270 const xmlChar *value,
275 xmlGetID (xmlDocPtr doc,
276 const xmlChar *ID);
278 xmlIsID (xmlDocPtr doc,
284
285/* IDREFs */
289 xmlDocPtr doc,
290 const xmlChar *value,
297 xmlIsRef (xmlDocPtr doc,
307 const xmlChar *ID);
308
312#ifdef LIBXML_VALID_ENABLED
313/* Allocate/Release Validation Contexts */
315 xmlNewValidCtxt(void);
317 xmlFreeValidCtxt(xmlValidCtxtPtr);
318
320 xmlValidateRoot (xmlValidCtxtPtr ctxt,
321 xmlDocPtr doc);
323 xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
324 xmlDocPtr doc,
327 xmlValidNormalizeAttributeValue(xmlDocPtr doc,
329 const xmlChar *name,
330 const xmlChar *value);
332 xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
333 xmlDocPtr doc,
335 const xmlChar *name,
336 const xmlChar *value);
338 xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
339 xmlDocPtr doc,
342 xmlValidateAttributeValue(xmlAttributeType type,
343 const xmlChar *value);
345 xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
346 xmlDocPtr doc,
347 xmlNotationPtr nota);
349 xmlValidateDtd (xmlValidCtxtPtr ctxt,
350 xmlDocPtr doc,
351 xmlDtdPtr dtd);
353 xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
354 xmlDocPtr doc);
356 xmlValidateDocument (xmlValidCtxtPtr ctxt,
357 xmlDocPtr doc);
359 xmlValidateElement (xmlValidCtxtPtr ctxt,
360 xmlDocPtr doc,
363 xmlValidateOneElement (xmlValidCtxtPtr ctxt,
364 xmlDocPtr doc,
367 xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
368 xmlDocPtr doc,
371 const xmlChar *value);
373 xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
374 xmlDocPtr doc,
376 const xmlChar *prefix,
377 xmlNsPtr ns,
378 const xmlChar *value);
380 xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
381 xmlDocPtr doc);
382#endif /* LIBXML_VALID_ENABLED */
383
384#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
386 xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
387 xmlDocPtr doc,
388 const xmlChar *notationName);
389#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */
390
393 const xmlChar *name);
396 const xmlChar *elem,
397 const xmlChar *name);
400 const xmlChar *elem,
401 const xmlChar *name,
402 const xmlChar *prefix);
405 const xmlChar *name);
408 const xmlChar *name,
409 const xmlChar *prefix);
412 const xmlChar *name);
413
414#ifdef LIBXML_VALID_ENABLED
415
417 xmlValidGetPotentialChildren(xmlElementContent *ctree,
418 const xmlChar **names,
419 int *len,
420 int max);
421
423 xmlValidGetValidElements(xmlNode *prev,
424 xmlNode *next,
425 const xmlChar **names,
426 int max);
428 xmlValidateNameValue (const xmlChar *value);
430 xmlValidateNamesValue (const xmlChar *value);
432 xmlValidateNmtokenValue (const xmlChar *value);
434 xmlValidateNmtokensValue(const xmlChar *value);
435
436#ifdef LIBXML_REGEXP_ENABLED
437/*
438 * Validation based on the regexp support
439 */
441 xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
443
445 xmlValidatePushElement (xmlValidCtxtPtr ctxt,
446 xmlDocPtr doc,
448 const xmlChar *qname);
450 xmlValidatePushCData (xmlValidCtxtPtr ctxt,
451 const xmlChar *data,
452 int len);
454 xmlValidatePopElement (xmlValidCtxtPtr ctxt,
455 xmlDocPtr doc,
457 const xmlChar *qname);
458#endif /* LIBXML_REGEXP_ENABLED */
459#endif /* LIBXML_VALID_ENABLED */
460#ifdef __cplusplus
461}
462#endif
463#endif /* __XML_VALID_H__ */
#define msg(x)
Definition: auth_time.c:54
content
Definition: atl_ax.c:994
#define XMLCALL
FxCollectionEntry * cur
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
GLuint GLuint * names
Definition: glext.h:11545
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
static size_t elem
Definition: string.c:68
static unsigned __int64 next
Definition: rand_nt.c:6
#define ID
Definition: ruserpass.c:36
xmlAttributeType
Definition: tree.h:206
xmlAttributeDefault
Definition: tree.h:225
xmlElementTypeVal
Definition: tree.h:322
xmlElementContentType
Definition: tree.h:278
Definition: tree.h:434
Definition: tree.h:551
Definition: tree.h:406
Definition: tree.h:457
Definition: list.c:39
Definition: tree.h:489
Definition: tree.h:389
Definition: tree.h:474
xmlDocPtr doc
Definition: valid.h:94
int nodeNr
Definition: valid.h:89
xmlNodePtr node
Definition: valid.h:88
int vstateMax
Definition: valid.h:100
void * userData
Definition: valid.h:83
xmlValidityErrorFunc error
Definition: valid.h:84
xmlValidState * vstate
Definition: valid.h:98
xmlValidState * vstateTab
Definition: valid.h:101
void * state
Definition: valid.h:108
unsigned int flags
Definition: valid.h:93
int valid
Definition: valid.h:95
xmlNodePtr * nodeTab
Definition: valid.h:91
int nodeMax
Definition: valid.h:90
void * am
Definition: valid.h:107
int vstateNr
Definition: valid.h:99
xmlValidityWarningFunc warning
Definition: valid.h:85
Definition: cookie.c:202
Definition: name.c:39
Definition: mxnamespace.c:45
#define max(a, b)
Definition: svc.c:63
Definition: pdh_main.c:94
XMLPUBFUN xmlEnumerationPtr XMLCALL xmlCreateEnumeration(const xmlChar *name)
Definition: valid.c:1795
xmlRefTable * xmlRefTablePtr
Definition: valid.h:150
XML_DEPRECATED XMLPUBFUN void XMLCALL xmlFreeRefTable(xmlRefTablePtr table)
Definition: valid.c:3103
XML_DEPRECATED XMLPUBFUN int XMLCALL xmlRemoveRef(xmlDocPtr doc, xmlAttrPtr attr)
Definition: valid.c:3164
XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyDocElementContent(xmlDocPtr doc, xmlElementContentPtr content)
Definition: valid.c:995
XMLPUBFUN xmlIDPtr XMLCALL xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr)
Definition: valid.c:2672
XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewDocElementContent(xmlDocPtr doc, const xmlChar *name, xmlElementContentType type)
Definition: valid.c:908
XMLPUBFUN void XMLCALL xmlSnprintfElementContent(char *buf, int size, xmlElementContentPtr content, int englob)
Definition: valid.c:1285
XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdQElementDesc(xmlDtdPtr dtd, const xmlChar *name, const xmlChar *prefix)
Definition: valid.c:3355
XMLPUBFUN xmlElementContentPtr XMLCALL xmlNewElementContent(const xmlChar *name, xmlElementContentType type)
Definition: valid.c:981
XMLPUBFUN xmlNotationPtr XMLCALL xmlAddNotationDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, const xmlChar *PublicID, const xmlChar *SystemID)
Definition: valid.c:2394
xmlIDTable * xmlIDTablePtr
Definition: valid.h:142
XMLPUBFUN xmlElementPtr XMLCALL xmlGetDtdElementDesc(xmlDtdPtr dtd, const xmlChar *name)
Definition: valid.c:3257
XMLPUBFUN xmlElementContentPtr XMLCALL xmlCopyElementContent(xmlElementContentPtr content)
Definition: valid.c:1077
XMLPUBFUN xmlAttrPtr XMLCALL xmlGetID(xmlDocPtr doc, const xmlChar *ID)
Definition: valid.c:2874
XMLPUBFUN int XMLCALL xmlIsMixedElement(xmlDocPtr doc, const xmlChar *name)
Definition: valid.c:3494
XMLPUBFUN void XMLCALL xmlFreeIDTable(xmlIDTablePtr table)
Definition: valid.c:2756
XMLPUBFUN void XMLCALL xmlFreeDocElementContent(xmlDocPtr doc, xmlElementContentPtr cur)
Definition: valid.c:1089
xmlAttributeTable * xmlAttributeTablePtr
Definition: valid.h:134
xmlElementTable * xmlElementTablePtr
Definition: valid.h:126
XML_DEPRECATED XMLPUBFUN xmlListPtr XMLCALL xmlGetRefs(xmlDocPtr doc, const xmlChar *ID)
Definition: valid.c:3222
void(XMLCDECL *) typedef void(XMLCDECL * xmlValidityWarningFunc)(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
Definition: valid.h:57
XMLPUBFUN void XMLCALL xmlFreeEnumeration(xmlEnumerationPtr cur)
Definition: valid.c:1817
void(XMLCDECL * xmlValidityErrorFunc)(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
Definition: valid.h:42
XML_DEPRECATED XMLPUBFUN xmlRefPtr XMLCALL xmlAddRef(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, xmlAttrPtr attr)
Definition: valid.c:3003
XML_DEPRECATED XMLPUBFUN int XMLCALL xmlIsRef(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr)
Definition: valid.c:3122
typedeftypedef void(XMLCDECL *) typedef void(XMLCDECL *) struct _xmlValidCtx xmlValidCtxt)
Definition: valid.h:80
XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdQAttrDesc(xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name, const xmlChar *prefix)
Definition: valid.c:3416
XMLPUBFUN int XMLCALL xmlRemoveID(xmlDocPtr doc, xmlAttrPtr attr)
Definition: valid.c:2835
XMLPUBFUN void XMLCALL xmlFreeNotationTable(xmlNotationTablePtr table)
Definition: valid.c:2471
XMLPUBFUN xmlElementPtr XMLCALL xmlAddElementDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd, const xmlChar *name, xmlElementTypeVal type, xmlElementContentPtr content)
Definition: valid.c:1418
xmlValidState * xmlValidStatePtr
Definition: valid.h:29
XMLPUBFUN xmlNotationPtr XMLCALL xmlGetDtdNotationDesc(xmlDtdPtr dtd, const xmlChar *name)
Definition: valid.c:3438
XMLPUBFUN int XMLCALL xmlIsID(xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr)
Definition: valid.c:2774
xmlValidCtxt * xmlValidCtxtPtr
Definition: valid.h:81
xmlNotationTable * xmlNotationTablePtr
Definition: valid.h:118
struct _xmlValidState xmlValidState
Definition: valid.h:28
XMLPUBFUN void XMLCALL xmlFreeElementTable(xmlElementTablePtr table)
Definition: valid.c:1641
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)
Definition: valid.c:1967
XMLPUBFUN void XMLCALL xmlFreeElementContent(xmlElementContentPtr cur)
Definition: valid.c:1155
XMLPUBFUN xmlAttributePtr XMLCALL xmlGetDtdAttrDesc(xmlDtdPtr dtd, const xmlChar *elem, const xmlChar *name)
Definition: valid.c:3379
XMLPUBFUN void XMLCALL xmlFreeAttributeTable(xmlAttributeTablePtr table)
Definition: valid.c:2193
#define XMLPUBFUN
Definition: xmlexports.h:61
#define XMLCDECL
Definition: xmlexports.h:52
unsigned char xmlChar
Definition: xmlstring.h:28
#define LIBXML_ATTR_FORMAT(fmt, args)
Definition: xmlversion.h:486
#define XML_DEPRECATED
Definition: xmlversion.h:494