File:  [Public] / XML / valid.h
Revision 1.13: download - view: text, annotated - select for diffs
Thu Aug 12 13:04:03 1999 UTC (24 years, 9 months ago) by daniel
Branches: MAIN
CVS tags: HEAD
Work on the plane, XPath equal and compare, ID support, Daniel

/*
 * valid.h : interface to the DTD handling and the validity checking
 *
 * See Copyright for the status of this software.
 *
 * Daniel.Veillard@w3.org
 */


#ifndef __XML_VALID_H__
#define __XML_VALID_H__
#include "tree.h"

/**
 * an xmlValidCtxt is used for error reporting when validating
 */

typedef void (*xmlValidityErrorFunc) (void *ctx, const char *msg, ...);
typedef void (*xmlValidityWarningFunc) (void *ctx, const char *msg, ...);

typedef struct xmlValidCtxt {
    void *userData;			/* user specific data block */
    xmlValidityErrorFunc error;		/* the callback in case of errors */
    xmlValidityWarningFunc warning;	/* the callback in case of warning */
} xmlValidCtxt, *xmlValidCtxtPtr;

extern void xmlParserValidityError(void *ctx, const char *msg, ...);
extern void xmlParserValidityWarning(void *ctx, const char *msg, ...);

/*
 * ALl notation declarations are stored in a table
 * there is one table per DTD
 */

#define XML_MIN_NOTATION_TABLE	32

typedef struct xmlNotationTable {
    int nb_notations;		/* number of notations stored */
    int max_notations;		/* maximum number of notations */
    xmlNotationPtr *table;	/* the table of attributes */
} xmlNotationTable;
typedef xmlNotationTable *xmlNotationTablePtr;

/*
 * ALl element declarations are stored in a table
 * there is one table per DTD
 */

#define XML_MIN_ELEMENT_TABLE	32

typedef struct xmlElementTable {
    int nb_elements;		/* number of elements stored */
    int max_elements;		/* maximum number of elements */
    xmlElementPtr *table;	/* the table of elements */
} xmlElementTable;
typedef xmlElementTable *xmlElementTablePtr;

/*
 * ALl attribute declarations are stored in a table
 * there is one table per DTD
 */

#define XML_MIN_ATTRIBUTE_TABLE	32

typedef struct xmlAttributeTable {
    int nb_attributes;		/* number of attributes stored */
    int max_attributes;		/* maximum number of attributes */
    xmlAttributePtr *table;	/* the table of attributes */
} xmlAttributeTable;
typedef xmlAttributeTable *xmlAttributeTablePtr;

/*
 * ALl IDs attributes are stored in a table
 * there is one table per document
 */

#define XML_MIN_ID_TABLE	32

typedef struct xmlIDTable {
    int nb_ids;			/* number of ids stored */
    int max_ids;		/* maximum number of ids */
    xmlIDPtr *table;		/* the table of ids */
} xmlIDTable;
typedef xmlIDTable *xmlIDTablePtr;

/* Notation */
xmlNotationPtr xmlAddNotationDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd,
	   const CHAR *name, const CHAR *PublicID, const CHAR *SystemID);
xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
void xmlFreeNotationTable(xmlNotationTablePtr table);
void xmlDumpNotationTable(xmlBufferPtr buf, xmlNotationTablePtr table);

/* Element Content */
xmlElementContentPtr xmlNewElementContent(CHAR *name, int type);
xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
void xmlFreeElementContent(xmlElementContentPtr cur);

/* Element */
xmlElementPtr xmlAddElementDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd,
         const CHAR *name, int type, xmlElementContentPtr content);
xmlElementTablePtr xmlCopyElementTable(xmlElementTablePtr table);
void xmlFreeElementTable(xmlElementTablePtr table);
void xmlDumpElementTable(xmlBufferPtr buf, xmlElementTablePtr table);

/* Enumeration */
xmlEnumerationPtr xmlCreateEnumeration(CHAR *name);
void xmlFreeEnumeration(xmlEnumerationPtr cur);
xmlEnumerationPtr xmlCopyEnumeration(xmlEnumerationPtr cur);

/* Attribute */
xmlAttributePtr xmlAddAttributeDecl(xmlValidCtxtPtr ctxt, xmlDtdPtr dtd,
               const CHAR *elem, const CHAR *name, int type, int def,
	       const CHAR *defaultValue, xmlEnumerationPtr tree);
xmlAttributeTablePtr xmlCopyAttributeTable(xmlAttributeTablePtr table);
void xmlFreeAttributeTable(xmlAttributeTablePtr table);
void xmlDumpAttributeTable(xmlBufferPtr buf, xmlAttributeTablePtr table);

/* IDs */
xmlIDPtr xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
               const CHAR *value, xmlAttrPtr attr);
xmlIDTablePtr xmlCopyIDTable(xmlIDTablePtr table);
void xmlFreeIDTable(xmlIDTablePtr table);

/**
 * The public function calls related to validity checking
 */

int xmlValidateRoot(xmlValidCtxtPtr ctxt, xmlDocPtr doc);
int xmlValidateElementDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
                           xmlElementPtr elem);
int xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
                             xmlAttributePtr attr);
int xmlValidateNotationDecl(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
                            xmlNotationPtr nota);
int xmlValidateDtd(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd);

int xmlValidateDocument(xmlValidCtxtPtr ctxt, xmlDocPtr doc);
int xmlValidateElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem);
int xmlValidateOneElement(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
                          xmlNodePtr elem);
int xmlValidateOneAttribute(xmlValidCtxtPtr ctxt, xmlDocPtr doc,
			xmlNodePtr elem, xmlAttrPtr attr, const CHAR *value);

int xmlIsMixedElement(xmlDocPtr doc, const CHAR *name);
#endif /* __XML_VALID_H__ */

Webmaster