blob: 5a13f51b6c618944cad442833b895fb41fa869ee [file] [log] [blame]
Daniel Veillarda7374592001-05-10 14:17:55 +00001/**
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: interfaces to the Catalog handling system
3 * Description: the catalog module implements the support for
4 * XML Catalogs and SGML catalogs
Daniel Veillarda7374592001-05-10 14:17:55 +00005 *
Daniel Veillardbe586972003-11-18 20:56:51 +00006 * SGML Open Technical Resolution TR9401:1997.
7 * http://www.jclark.com/sp/catalog.htm
Daniel Veillarda7374592001-05-10 14:17:55 +00008 *
Daniel Veillardbe586972003-11-18 20:56:51 +00009 * XML Catalogs Working Draft 06 August 2001
10 * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
Daniel Veillard017b1082001-06-21 11:20:21 +000011 *
Daniel Veillardbe586972003-11-18 20:56:51 +000012 * Copy: See Copyright for the status of this software.
Daniel Veillarda7374592001-05-10 14:17:55 +000013 *
Daniel Veillardbe586972003-11-18 20:56:51 +000014 * Author: Daniel Veillard
Daniel Veillarda7374592001-05-10 14:17:55 +000015 */
16
17#ifndef __XML_CATALOG_H__
18#define __XML_CATALOG_H__
19
20#include <stdio.h>
21
22#include <libxml/xmlversion.h>
William M. Bracka2e844a2004-01-06 11:52:13 +000023#include <libxml/xmlstring.h>
Daniel Veillardd0cf7f62004-11-09 16:17:02 +000024#include <libxml/tree.h>
Igor Zlatkovic7ae91bc2002-11-08 17:18:52 +000025
Daniel Veillarda7374592001-05-10 14:17:55 +000026#ifdef LIBXML_CATALOG_ENABLED
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
Daniel Veillard017b1082001-06-21 11:20:21 +000032/**
33 * XML_CATALOGS_NAMESPACE:
34 *
Daniel Veillard61f26172002-03-12 18:46:39 +000035 * The namespace for the XML Catalogs elements.
Daniel Veillard017b1082001-06-21 11:20:21 +000036 */
Daniel Veillard5d90b6c2001-08-22 14:29:45 +000037#define XML_CATALOGS_NAMESPACE \
Daniel Veillard017b1082001-06-21 11:20:21 +000038 (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog"
Daniel Veillard9d06d302002-01-22 18:15:52 +000039/**
40 * XML_CATALOG_PI:
41 *
Daniel Veillard61f26172002-03-12 18:46:39 +000042 * The specific XML Catalog Processing Instuction name.
Daniel Veillard9d06d302002-01-22 18:15:52 +000043 */
Daniel Veillard5d90b6c2001-08-22 14:29:45 +000044#define XML_CATALOG_PI \
45 (const xmlChar *) "oasis-xml-catalog"
Daniel Veillard017b1082001-06-21 11:20:21 +000046
Daniel Veillarde2940dd2001-08-22 00:06:49 +000047/*
Daniel Veillard61f26172002-03-12 18:46:39 +000048 * The API is voluntarily limited to general cataloging.
Daniel Veillarde2940dd2001-08-22 00:06:49 +000049 */
50typedef enum {
51 XML_CATA_PREFER_NONE = 0,
52 XML_CATA_PREFER_PUBLIC = 1,
53 XML_CATA_PREFER_SYSTEM
54} xmlCatalogPrefer;
55
Daniel Veillard5d90b6c2001-08-22 14:29:45 +000056typedef 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
Daniel Veillard75b96822001-10-11 18:59:45 +000063typedef struct _xmlCatalog xmlCatalog;
64typedef xmlCatalog *xmlCatalogPtr;
65
66/*
Daniel Veillard61f26172002-03-12 18:46:39 +000067 * Operations on a given catalog.
Daniel Veillard75b96822001-10-11 18:59:45 +000068 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000069XMLPUBFUN xmlCatalogPtr XMLCALL
70 xmlNewCatalog (int sgml);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080071XMLPUBFUN xmlCatalogPtr XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000072 xmlLoadACatalog (const char *filename);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080073XMLPUBFUN xmlCatalogPtr XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000074 xmlLoadSGMLSuperCatalog (const char *filename);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080075XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000076 xmlConvertSGMLCatalog (xmlCatalogPtr catal);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080077XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000078 xmlACatalogAdd (xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000079 const xmlChar *type,
80 const xmlChar *orig,
81 const xmlChar *replace);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080082XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000083 xmlACatalogRemove (xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000084 const xmlChar *value);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080085XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000086 xmlACatalogResolve (xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000087 const xmlChar *pubID,
88 const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080089XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000090 xmlACatalogResolveSystem(xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000091 const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080092XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000093 xmlACatalogResolvePublic(xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000094 const xmlChar *pubID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +080095XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +000096 xmlACatalogResolveURI (xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +000097 const xmlChar *URI);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +000098#ifdef LIBXML_OUTPUT_ENABLED
Daniel Veillardf8e3db02012-09-11 13:26:36 +080099XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000100 xmlACatalogDump (xmlCatalogPtr catal,
Daniel Veillard75b96822001-10-11 18:59:45 +0000101 FILE *out);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000102#endif /* LIBXML_OUTPUT_ENABLED */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800103XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000104 xmlFreeCatalog (xmlCatalogPtr catal);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800105XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000106 xmlCatalogIsEmpty (xmlCatalogPtr catal);
Daniel Veillard75b96822001-10-11 18:59:45 +0000107
108/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000109 * Global operations.
Daniel Veillard75b96822001-10-11 18:59:45 +0000110 */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800111XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000112 xmlInitializeCatalog (void);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800113XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000114 xmlLoadCatalog (const char *filename);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800115XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000116 xmlLoadCatalogs (const char *paths);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800117XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000118 xmlCatalogCleanup (void);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000119#ifdef LIBXML_OUTPUT_ENABLED
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800120XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000121 xmlCatalogDump (FILE *out);
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000122#endif /* LIBXML_OUTPUT_ENABLED */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800123XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000124 xmlCatalogResolve (const xmlChar *pubID,
Daniel Veillard344cee72001-08-20 00:08:40 +0000125 const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800126XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000127 xmlCatalogResolveSystem (const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800128XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000129 xmlCatalogResolvePublic (const xmlChar *pubID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800130XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000131 xmlCatalogResolveURI (const xmlChar *URI);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800132XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000133 xmlCatalogAdd (const xmlChar *type,
Daniel Veillard344cee72001-08-20 00:08:40 +0000134 const xmlChar *orig,
135 const xmlChar *replace);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800136XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000137 xmlCatalogRemove (const xmlChar *value);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800138XMLPUBFUN xmlDocPtr XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000139 xmlParseCatalogFile (const char *filename);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800140XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000141 xmlCatalogConvert (void);
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000142
143/*
144 * Strictly minimal interfaces for per-document catalogs used
145 * by the parser.
146 */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800147XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000148 xmlCatalogFreeLocal (void *catalogs);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800149XMLPUBFUN void * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000150 xmlCatalogAddLocal (void *catalogs,
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000151 const xmlChar *URL);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800152XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000153 xmlCatalogLocalResolve (void *catalogs,
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000154 const xmlChar *pubID,
155 const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800156XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000157 xmlCatalogLocalResolveURI(void *catalogs,
Daniel Veillarddc2cee22001-08-22 16:30:37 +0000158 const xmlChar *URI);
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000159/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000160 * Preference settings.
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000161 */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800162XMLPUBFUN int XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000163 xmlCatalogSetDebug (int level);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800164XMLPUBFUN xmlCatalogPrefer XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000165 xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800166XMLPUBFUN void XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000167 xmlCatalogSetDefaults (xmlCatalogAllow allow);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800168XMLPUBFUN xmlCatalogAllow XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000169 xmlCatalogGetDefaults (void);
Daniel Veillarde2940dd2001-08-22 00:06:49 +0000170
Daniel Veillard75b96822001-10-11 18:59:45 +0000171
Daniel Veillarde2940dd2001-08-22 00:06:49 +0000172/* DEPRECATED interfaces */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800173XMLPUBFUN const xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000174 xmlCatalogGetSystem (const xmlChar *sysID);
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800175XMLPUBFUN const xmlChar * XMLCALL
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000176 xmlCatalogGetPublic (const xmlChar *pubID);
Daniel Veillarda7374592001-05-10 14:17:55 +0000177
178#ifdef __cplusplus
179}
180#endif
181#endif /* LIBXML_CATALOG_ENABLED */
182#endif /* __XML_CATALOG_H__ */