valid.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:8k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /*
  2.  * valid.h : interface to the DTD handling and the validity checking
  3.  *
  4.  * See Copyright for the status of this software.
  5.  *
  6.  * Daniel.Veillard@w3.org
  7.  */
  8. #ifndef __XML_VALID_H__
  9. #define __XML_VALID_H__
  10. #include <libxml/tree.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. /**
  15.  * an xmlValidCtxt is used for error reporting when validating
  16.  */
  17. typedef void (*xmlValidityErrorFunc) (void *ctx, const char *msg, ...);
  18. typedef void (*xmlValidityWarningFunc) (void *ctx, const char *msg, ...);
  19. typedef struct _xmlValidCtxt xmlValidCtxt;
  20. typedef xmlValidCtxt *xmlValidCtxtPtr;
  21. struct _xmlValidCtxt {
  22.     void *userData; /* user specific data block */
  23.     xmlValidityErrorFunc error; /* the callback in case of errors */
  24.     xmlValidityWarningFunc warning; /* the callback in case of warning */
  25.     /* Node analysis stack used when validating within entities */
  26.     xmlNodePtr         node;          /* Current parsed Node */
  27.     int                nodeNr;        /* Depth of the parsing stack */
  28.     int                nodeMax;       /* Max depth of the parsing stack */
  29.     xmlNodePtr        *nodeTab;       /* array of nodes */
  30.     int              finishDtd;       /* finished validating the Dtd ? */
  31. };
  32. /*
  33.  * ALl notation declarations are stored in a table
  34.  * there is one table per DTD
  35.  */
  36. #define XML_MIN_NOTATION_TABLE 32
  37. typedef struct _xmlNotationTable xmlNotationTable;
  38. typedef xmlNotationTable *xmlNotationTablePtr;
  39. struct _xmlNotationTable {
  40.     int nb_notations; /* number of notations stored */
  41.     int max_notations; /* maximum number of notations */
  42.     xmlNotationPtr *table; /* the table of attributes */
  43. };
  44. /*
  45.  * ALl element declarations are stored in a table
  46.  * there is one table per DTD
  47.  */
  48. #define XML_MIN_ELEMENT_TABLE 32
  49. typedef struct _xmlElementTable xmlElementTable;
  50. typedef xmlElementTable *xmlElementTablePtr;
  51. struct _xmlElementTable {
  52.     int nb_elements; /* number of elements stored */
  53.     int max_elements; /* maximum number of elements */
  54.     xmlElementPtr *table; /* the table of elements */
  55. };
  56. /*
  57.  * ALl attribute declarations are stored in a table
  58.  * there is one table per DTD
  59.  */
  60. #define XML_MIN_ATTRIBUTE_TABLE 32
  61. typedef struct _xmlAttributeTable xmlAttributeTable;
  62. typedef xmlAttributeTable *xmlAttributeTablePtr;
  63. struct _xmlAttributeTable {
  64.     int nb_attributes; /* number of attributes stored */
  65.     int max_attributes; /* maximum number of attributes */
  66.     xmlAttributePtr *table; /* the table of attributes */
  67. };
  68. /*
  69.  * ALl IDs attributes are stored in a table
  70.  * there is one table per document
  71.  */
  72. #define XML_MIN_ID_TABLE 32
  73. typedef struct _xmlIDTable xmlIDTable;
  74. typedef xmlIDTable *xmlIDTablePtr;
  75. struct _xmlIDTable {
  76.     int nb_ids; /* number of ids stored */
  77.     int max_ids; /* maximum number of ids */
  78.     xmlIDPtr *table; /* the table of ids */
  79. };
  80. /*
  81.  * ALl Refs attributes are stored in a table
  82.  * there is one table per document
  83.  */
  84. #define XML_MIN_REF_TABLE 32
  85. typedef struct _xmlRefTable xmlRefTable;
  86. typedef xmlRefTable *xmlRefTablePtr;
  87. struct _xmlRefTable {
  88.     int nb_refs; /* number of refs stored */
  89.     int max_refs; /* maximum number of refs */
  90.     xmlRefPtr *table; /* the table of refs */
  91. };
  92. /* Notation */
  93. xmlNotationPtr     xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
  94.  xmlDtdPtr dtd,
  95.  const xmlChar *name,
  96.  const xmlChar *PublicID,
  97.  const xmlChar *SystemID);
  98. xmlNotationTablePtr xmlCopyNotationTable(xmlNotationTablePtr table);
  99. void     xmlFreeNotationTable(xmlNotationTablePtr table);
  100. void     xmlDumpNotationDecl (xmlBufferPtr buf,
  101.  xmlNotationPtr nota);
  102. void     xmlDumpNotationTable(xmlBufferPtr buf,
  103.  xmlNotationTablePtr table);
  104. /* Element Content */
  105. xmlElementContentPtr xmlNewElementContent (xmlChar *name,
  106.    xmlElementContentType type);
  107. xmlElementContentPtr xmlCopyElementContent(xmlElementContentPtr content);
  108. void      xmlFreeElementContent(xmlElementContentPtr cur);
  109. void      xmlSprintfElementContent(char *buf,
  110.                                    xmlElementContentPtr content,
  111.    int glob);
  112. /* Element */
  113. xmlElementPtr    xmlAddElementDecl (xmlValidCtxtPtr ctxt,
  114.  xmlDtdPtr dtd,
  115.  const xmlChar *name,
  116.  xmlElementTypeVal type,
  117.  xmlElementContentPtr content);
  118. xmlElementTablePtr xmlCopyElementTable (xmlElementTablePtr table);
  119. void    xmlFreeElementTable (xmlElementTablePtr table);
  120. void    xmlDumpElementTable (xmlBufferPtr buf,
  121.  xmlElementTablePtr table);
  122. void    xmlDumpElementDecl (xmlBufferPtr buf,
  123.  xmlElementPtr elem);
  124. /* Enumeration */
  125. xmlEnumerationPtr  xmlCreateEnumeration (xmlChar *name);
  126. void    xmlFreeEnumeration (xmlEnumerationPtr cur);
  127. xmlEnumerationPtr  xmlCopyEnumeration (xmlEnumerationPtr cur);
  128. /* Attribute */
  129. xmlAttributePtr     xmlAddAttributeDecl     (xmlValidCtxtPtr ctxt,
  130.      xmlDtdPtr dtd,
  131.      const xmlChar *elem,
  132.      const xmlChar *name,
  133.      const xmlChar *prefix,
  134.      xmlAttributeType type,
  135.      xmlAttributeDefault def,
  136.      const xmlChar *defaultValue,
  137.      xmlEnumerationPtr tree);
  138. xmlAttributeTablePtr xmlCopyAttributeTable  (xmlAttributeTablePtr table);
  139. void      xmlFreeAttributeTable  (xmlAttributeTablePtr table);
  140. void      xmlDumpAttributeTable  (xmlBufferPtr buf,
  141.      xmlAttributeTablePtr table);
  142. void      xmlDumpAttributeDecl   (xmlBufferPtr buf,
  143.      xmlAttributePtr attr);
  144. /* IDs */
  145. xmlIDPtr xmlAddID (xmlValidCtxtPtr ctxt,
  146.  xmlDocPtr doc,
  147.  const xmlChar *value,
  148.  xmlAttrPtr attr);
  149. xmlIDTablePtr xmlCopyIDTable (xmlIDTablePtr table);
  150. void xmlFreeIDTable (xmlIDTablePtr table);
  151. xmlAttrPtr xmlGetID (xmlDocPtr doc,
  152.  const xmlChar *ID);
  153. int xmlIsID (xmlDocPtr doc,
  154.  xmlNodePtr elem,
  155.  xmlAttrPtr attr);
  156. int xmlRemoveID (xmlDocPtr doc, xmlAttrPtr attr);
  157. /* IDREFs */
  158. xmlRefPtr xmlAddRef (xmlValidCtxtPtr ctxt,
  159.  xmlDocPtr doc,
  160.  const xmlChar *value,
  161.  xmlAttrPtr attr);
  162. xmlRefTablePtr xmlCopyRefTable (xmlRefTablePtr table);
  163. void xmlFreeRefTable (xmlRefTablePtr table);
  164. int xmlIsRef (xmlDocPtr doc,
  165.  xmlNodePtr elem,
  166.  xmlAttrPtr attr);
  167. int xmlRemoveRef (xmlDocPtr doc, xmlAttrPtr attr);
  168. /**
  169.  * The public function calls related to validity checking
  170.  */
  171. int xmlValidateRoot (xmlValidCtxtPtr ctxt,
  172.  xmlDocPtr doc);
  173. int xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
  174.  xmlDocPtr doc,
  175.                          xmlElementPtr elem);
  176. xmlChar * xmlValidNormalizeAttributeValue(xmlDocPtr doc,
  177.  xmlNodePtr elem,
  178.  const xmlChar *name,
  179.  const xmlChar *value);
  180. int xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
  181.  xmlDocPtr doc,
  182.                          xmlAttributePtr attr);
  183. int xmlValidateAttributeValue(xmlAttributeType type,
  184.  const xmlChar *value);
  185. int xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
  186.  xmlDocPtr doc,
  187.                          xmlNotationPtr nota);
  188. int xmlValidateDtd (xmlValidCtxtPtr ctxt,
  189.  xmlDocPtr doc,
  190.  xmlDtdPtr dtd);
  191. int xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
  192.  xmlDocPtr doc);
  193. int xmlValidateDocument (xmlValidCtxtPtr ctxt,
  194.  xmlDocPtr doc);
  195. int xmlValidateElement (xmlValidCtxtPtr ctxt,
  196.  xmlDocPtr doc,
  197.  xmlNodePtr elem);
  198. int xmlValidateOneElement (xmlValidCtxtPtr ctxt,
  199.  xmlDocPtr doc,
  200.                          xmlNodePtr elem);
  201. int xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
  202.  xmlDocPtr doc,
  203.  xmlNodePtr elem,
  204.  xmlAttrPtr attr,
  205.  const xmlChar *value);
  206. int xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
  207.  xmlDocPtr doc);
  208. int xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
  209.  xmlDocPtr doc,
  210.  const xmlChar *notationName);
  211. int xmlIsMixedElement (xmlDocPtr doc,
  212.  const xmlChar *name);
  213. xmlAttributePtr xmlGetDtdAttrDesc (xmlDtdPtr dtd,
  214.  const xmlChar *elem,
  215.  const xmlChar *name);
  216. xmlNotationPtr xmlGetDtdNotationDesc (xmlDtdPtr dtd,
  217.  const xmlChar *name);
  218. xmlElementPtr xmlGetDtdElementDesc (xmlDtdPtr dtd,
  219.  const xmlChar *name);
  220. int xmlValidGetValidElements(xmlNode *prev,
  221.  xmlNode *next,
  222.  const xmlChar **list,
  223.  int max);
  224. int xmlValidGetPotentialChildren(xmlElementContent *ctree,
  225.  const xmlChar **list,
  226.  int *len,
  227.  int max);
  228. #ifdef __cplusplus
  229. }
  230. #endif
  231. #endif /* __XML_VALID_H__ */