1 /**
   2  * Summary: interfaces to the Catalog handling system
   3  * Description: the catalog module implements the support for
   4  * XML Catalogs and SGML catalogs
   5  *
   6  * SGML Open Technical Resolution TR9401:1997.
   7  * http://www.jclark.com/sp/catalog.htm
   8  *
   9  * XML Catalogs Working Draft 06 August 2001
  10  * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
  11  *
  12  * Copy: See Copyright for the status of this software.
  13  *
  14  * Author: Daniel Veillard
  15  */
  16 
  17 #ifndef __XML_CATALOG_H__
  18 #define __XML_CATALOG_H__
  19 
  20 #include <stdio.h>
  21 
  22 #include <libxml/xmlversion.h>
  23 #include <libxml/xmlstring.h>
  24 #include <libxml/tree.h>
  25 
  26 #ifdef LIBXML_CATALOG_ENABLED
  27 
  28 #ifdef __cplusplus
  29 extern "C" {
  30 #endif
  31 
  32 /**
  33  * XML_CATALOGS_NAMESPACE:
  34  *
  35  * The namespace for the XML Catalogs elements.
  36  */
  37 #define XML_CATALOGS_NAMESPACE                  \
  38     (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog"
  39 /**
  40  * XML_CATALOG_PI:
  41  *
  42  * The specific XML Catalog Processing Instuction name.
  43  */
  44 #define XML_CATALOG_PI                      \
  45     (const xmlChar *) "oasis-xml-catalog"
  46 
  47 /*
  48  * The API is voluntarily limited to general cataloging.
  49  */
  50 typedef enum {
  51     XML_CATA_PREFER_NONE = 0,
  52     XML_CATA_PREFER_PUBLIC = 1,
  53     XML_CATA_PREFER_SYSTEM
  54 } xmlCatalogPrefer;
  55 
  56 typedef enum {
  57     XML_CATA_ALLOW_NONE = 0,
  58     XML_CATA_ALLOW_GLOBAL = 1,
  59     XML_CATA_ALLOW_DOCUMENT = 2,
  60     XML_CATA_ALLOW_ALL = 3
  61 } xmlCatalogAllow;
  62 
  63 typedef struct _xmlCatalog xmlCatalog;
  64 typedef xmlCatalog *xmlCatalogPtr;
  65 
  66 /*
  67  * Operations on a given catalog.
  68  */
  69 XMLPUBFUN xmlCatalogPtr XMLCALL
  70         xmlNewCatalog       (int sgml);
  71 XMLPUBFUN xmlCatalogPtr XMLCALL
  72         xmlLoadACatalog     (const char *filename);
  73 XMLPUBFUN xmlCatalogPtr XMLCALL
  74         xmlLoadSGMLSuperCatalog (const char *filename);
  75 XMLPUBFUN int XMLCALL
  76         xmlConvertSGMLCatalog   (xmlCatalogPtr catal);
  77 XMLPUBFUN int XMLCALL
  78         xmlACatalogAdd      (xmlCatalogPtr catal,
  79                      const xmlChar *type,
  80                      const xmlChar *orig,
  81                      const xmlChar *replace);
  82 XMLPUBFUN int XMLCALL
  83         xmlACatalogRemove   (xmlCatalogPtr catal,
  84                      const xmlChar *value);
  85 XMLPUBFUN xmlChar * XMLCALL
  86         xmlACatalogResolve  (xmlCatalogPtr catal,
  87                      const xmlChar *pubID,
  88                                      const xmlChar *sysID);
  89 XMLPUBFUN xmlChar * XMLCALL
  90         xmlACatalogResolveSystem(xmlCatalogPtr catal,
  91                      const xmlChar *sysID);
  92 XMLPUBFUN xmlChar * XMLCALL
  93         xmlACatalogResolvePublic(xmlCatalogPtr catal,
  94                      const xmlChar *pubID);
  95 XMLPUBFUN xmlChar * XMLCALL
  96         xmlACatalogResolveURI   (xmlCatalogPtr catal,
  97                      const xmlChar *URI);
  98 #ifdef LIBXML_OUTPUT_ENABLED
  99 XMLPUBFUN void XMLCALL
 100         xmlACatalogDump     (xmlCatalogPtr catal,
 101                      FILE *out);
 102 #endif /* LIBXML_OUTPUT_ENABLED */
 103 XMLPUBFUN void XMLCALL
 104         xmlFreeCatalog      (xmlCatalogPtr catal);
 105 XMLPUBFUN int XMLCALL
 106         xmlCatalogIsEmpty   (xmlCatalogPtr catal);
 107 
 108 /*
 109  * Global operations.
 110  */
 111 XMLPUBFUN void XMLCALL
 112         xmlInitializeCatalog    (void);
 113 XMLPUBFUN int XMLCALL
 114         xmlLoadCatalog      (const char *filename);
 115 XMLPUBFUN void XMLCALL
 116         xmlLoadCatalogs     (const char *paths);
 117 XMLPUBFUN void XMLCALL
 118         xmlCatalogCleanup   (void);
 119 #ifdef LIBXML_OUTPUT_ENABLED
 120 XMLPUBFUN void XMLCALL
 121         xmlCatalogDump      (FILE *out);
 122 #endif /* LIBXML_OUTPUT_ENABLED */
 123 XMLPUBFUN xmlChar * XMLCALL
 124         xmlCatalogResolve   (const xmlChar *pubID,
 125                                      const xmlChar *sysID);
 126 XMLPUBFUN xmlChar * XMLCALL
 127         xmlCatalogResolveSystem (const xmlChar *sysID);
 128 XMLPUBFUN xmlChar * XMLCALL
 129         xmlCatalogResolvePublic (const xmlChar *pubID);
 130 XMLPUBFUN xmlChar * XMLCALL
 131         xmlCatalogResolveURI    (const xmlChar *URI);
 132 XMLPUBFUN int XMLCALL
 133         xmlCatalogAdd       (const xmlChar *type,
 134                      const xmlChar *orig,
 135                      const xmlChar *replace);
 136 XMLPUBFUN int XMLCALL
 137         xmlCatalogRemove    (const xmlChar *value);
 138 XMLPUBFUN xmlDocPtr XMLCALL
 139         xmlParseCatalogFile (const char *filename);
 140 XMLPUBFUN int XMLCALL
 141         xmlCatalogConvert   (void);
 142 
 143 /*
 144  * Strictly minimal interfaces for per-document catalogs used
 145  * by the parser.
 146  */
 147 XMLPUBFUN void XMLCALL
 148         xmlCatalogFreeLocal (void *catalogs);
 149 XMLPUBFUN void * XMLCALL
 150         xmlCatalogAddLocal  (void *catalogs,
 151                      const xmlChar *URL);
 152 XMLPUBFUN xmlChar * XMLCALL
 153         xmlCatalogLocalResolve  (void *catalogs,
 154                      const xmlChar *pubID,
 155                                      const xmlChar *sysID);
 156 XMLPUBFUN xmlChar * XMLCALL
 157         xmlCatalogLocalResolveURI(void *catalogs,
 158                      const xmlChar *URI);
 159 /*
 160  * Preference settings.
 161  */
 162 XMLPUBFUN int XMLCALL
 163         xmlCatalogSetDebug  (int level);
 164 XMLPUBFUN xmlCatalogPrefer XMLCALL
 165         xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
 166 XMLPUBFUN void XMLCALL
 167         xmlCatalogSetDefaults   (xmlCatalogAllow allow);
 168 XMLPUBFUN xmlCatalogAllow XMLCALL
 169         xmlCatalogGetDefaults   (void);
 170 
 171 
 172 /* DEPRECATED interfaces */
 173 XMLPUBFUN const xmlChar * XMLCALL
 174         xmlCatalogGetSystem (const xmlChar *sysID);
 175 XMLPUBFUN const xmlChar * XMLCALL
 176         xmlCatalogGetPublic (const xmlChar *pubID);
 177 
 178 #ifdef __cplusplus
 179 }
 180 #endif
 181 #endif /* LIBXML_CATALOG_ENABLED */
 182 #endif /* __XML_CATALOG_H__ */