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
70 xmlNewCatalog (int sgml);
71 XMLPUBFUN xmlCatalogPtr
72 xmlLoadACatalog (const char *filename);
73 XMLPUBFUN xmlCatalogPtr
74 xmlLoadSGMLSuperCatalog (const char *filename);
75 XMLPUBFUN int
76 xmlConvertSGMLCatalog (xmlCatalogPtr catal);
77 XMLPUBFUN int
78 xmlACatalogAdd (xmlCatalogPtr catal,
79 const xmlChar *type,
80 const xmlChar *orig,
81 const xmlChar *replace);
82 XMLPUBFUN int
83 xmlACatalogRemove (xmlCatalogPtr catal,
84 const xmlChar *value);
85 XMLPUBFUN xmlChar *
86 xmlACatalogResolve (xmlCatalogPtr catal,
87 const xmlChar *pubID,
88 const xmlChar *sysID);
89 XMLPUBFUN xmlChar *
90 xmlACatalogResolveSystem(xmlCatalogPtr catal,
91 const xmlChar *sysID);
92 XMLPUBFUN xmlChar *
93 xmlACatalogResolvePublic(xmlCatalogPtr catal,
94 const xmlChar *pubID);
95 XMLPUBFUN xmlChar *
96 xmlACatalogResolveURI (xmlCatalogPtr catal,
97 const xmlChar *URI);
98 #ifdef LIBXML_OUTPUT_ENABLED
99 XMLPUBFUN void
100 xmlACatalogDump (xmlCatalogPtr catal,
101 FILE *out);
102 #endif /* LIBXML_OUTPUT_ENABLED */
103 XMLPUBFUN void
104 xmlFreeCatalog (xmlCatalogPtr catal);
105 XMLPUBFUN int
106 xmlCatalogIsEmpty (xmlCatalogPtr catal);
107
108 /*
109 * Global operations.
110 */
111 XMLPUBFUN void
112 xmlInitializeCatalog (void);
113 XMLPUBFUN int
114 xmlLoadCatalog (const char *filename);
115 XMLPUBFUN void
116 xmlLoadCatalogs (const char *paths);
117 XMLPUBFUN void
118 xmlCatalogCleanup (void);
119 #ifdef LIBXML_OUTPUT_ENABLED
120 XMLPUBFUN void
121 xmlCatalogDump (FILE *out);
122 #endif /* LIBXML_OUTPUT_ENABLED */
123 XMLPUBFUN xmlChar *
124 xmlCatalogResolve (const xmlChar *pubID,
125 const xmlChar *sysID);
126 XMLPUBFUN xmlChar *
127 xmlCatalogResolveSystem (const xmlChar *sysID);
128 XMLPUBFUN xmlChar *
129 xmlCatalogResolvePublic (const xmlChar *pubID);
130 XMLPUBFUN xmlChar *
131 xmlCatalogResolveURI (const xmlChar *URI);
132 XMLPUBFUN int
133 xmlCatalogAdd (const xmlChar *type,
134 const xmlChar *orig,
135 const xmlChar *replace);
136 XMLPUBFUN int
137 xmlCatalogRemove (const xmlChar *value);
138 XMLPUBFUN xmlDocPtr
139 xmlParseCatalogFile (const char *filename);
140 XMLPUBFUN int
141 xmlCatalogConvert (void);
142
143 /*
144 * Strictly minimal interfaces for per-document catalogs used
145 * by the parser.
146 */
147 XMLPUBFUN void
148 xmlCatalogFreeLocal (void *catalogs);
149 XMLPUBFUN void *
150 xmlCatalogAddLocal (void *catalogs,
151 const xmlChar *URL);
152 XMLPUBFUN xmlChar *
153 xmlCatalogLocalResolve (void *catalogs,
154 const xmlChar *pubID,
155 const xmlChar *sysID);
156 XMLPUBFUN xmlChar *
157 xmlCatalogLocalResolveURI(void *catalogs,
158 const xmlChar *URI);
159 /*
160 * Preference settings.
161 */
162 XMLPUBFUN int
163 xmlCatalogSetDebug (int level);
164 XMLPUBFUN xmlCatalogPrefer
165 xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
166 XMLPUBFUN void
167 xmlCatalogSetDefaults (xmlCatalogAllow allow);
168 XMLPUBFUN xmlCatalogAllow
169 xmlCatalogGetDefaults (void);
170
171
172 /* DEPRECATED interfaces */
173 XMLPUBFUN const xmlChar *
174 xmlCatalogGetSystem (const xmlChar *sysID);
175 XMLPUBFUN const xmlChar *
176 xmlCatalogGetPublic (const xmlChar *pubID);
177
178 #ifdef __cplusplus
179 }
180 #endif
181 #endif /* LIBXML_CATALOG_ENABLED */
182 #endif /* __XML_CATALOG_H__ */