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 Instruction 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__ */ 183