## catalog

catalog —

## Synopsis

    #define     XML_CATALOGS_NAMESPACE
    #define     XML_CATALOG_PI
    enum        xmlCatalogPrefer;
    enum        xmlCatalogAllow;
    struct      xmlCatalog;
    typedef     xmlCatalogPtr;
    xmlCatalogPtr xmlNewCatalog                 (int sgml);
    xmlCatalogPtr xmlLoadACatalog               (const char *filename);
    xmlCatalogPtr xmlLoadSGMLSuperCatalog       (const char *filename);
    int         xmlConvertSGMLCatalog           (xmlCatalogPtr catal);
    int         xmlACatalogAdd                  (xmlCatalogPtr catal,
                                                 const xmlChar *type,
                                                 const xmlChar *orig,
                                                 const xmlChar *replace);
    int         xmlACatalogRemove               (xmlCatalogPtr catal,
                                                 const xmlChar *value);
    xmlChar*    xmlACatalogResolve              (xmlCatalogPtr catal,
                                                 const xmlChar *pubID,
                                                 const xmlChar *sysID);
    xmlChar*    xmlACatalogResolveSystem        (xmlCatalogPtr catal,
                                                 const xmlChar *sysID);
    xmlChar*    xmlACatalogResolvePublic        (xmlCatalogPtr catal,
                                                 const xmlChar *pubID);
    xmlChar*    xmlACatalogResolveURI           (xmlCatalogPtr catal,
                                                 const xmlChar *URI);
    void        xmlACatalogDump                 (xmlCatalogPtr catal,
                                                 FILE *out);
    void        xmlFreeCatalog                  (xmlCatalogPtr catal);
    int         xmlCatalogIsEmpty               (xmlCatalogPtr catal);
    void        xmlInitializeCatalog            (void);
    int         xmlLoadCatalog                  (const char *filename);
    void        xmlLoadCatalogs                 (const char *paths);
    void        xmlCatalogCleanup               (void);
    void        xmlCatalogDump                  (FILE *out);
    xmlChar*    xmlCatalogResolve               (const xmlChar *pubID,
                                                 const xmlChar *sysID);
    xmlChar*    xmlCatalogResolveSystem         (const xmlChar *sysID);
    xmlChar*    xmlCatalogResolvePublic         (const xmlChar *pubID);
    xmlChar*    xmlCatalogResolveURI            (const xmlChar *URI);
    int         xmlCatalogAdd                   (const xmlChar *type,
                                                 const xmlChar *orig,
                                                 const xmlChar *replace);
    int         xmlCatalogRemove                (const xmlChar *value);
    xmlDocPtr   xmlParseCatalogFile             (const char *filename);
    int         xmlCatalogConvert               (void);
    void        xmlCatalogFreeLocal             (void *catalogs);
    void*       xmlCatalogAddLocal              (void *catalogs,
                                                 const xmlChar *URL);
    xmlChar*    xmlCatalogLocalResolve          (void *catalogs,
                                                 const xmlChar *pubID,
                                                 const xmlChar *sysID);
    xmlChar*    xmlCatalogLocalResolveURI       (void *catalogs,
                                                 const xmlChar *URI);
    int         xmlCatalogSetDebug              (int level);
    xmlCatalogPrefer xmlCatalogSetDefaultPrefer (xmlCatalogPrefer prefer);
    void        xmlCatalogSetDefaults           (xmlCatalogAllow allow);
    xmlCatalogAllow xmlCatalogGetDefaults       (void);
    const xmlChar* xmlCatalogGetSystem          (const xmlChar *sysID);
    const xmlChar* xmlCatalogGetPublic          (const xmlChar *pubID);

## Description

## Details

### XML_CATALOGS_NAMESPACE

    #define     XML_CATALOGS_NAMESPACE

The namespace for the XML Catalogs elements.

### XML_CATALOG_PI

    #define     XML_CATALOG_PI

The specific XML Catalog Processing Instuction name.

### enum xmlCatalogPrefer

    typedef enum {
        XML_CATA_PREFER_NONE = 0,
        XML_CATA_PREFER_PUBLIC = 1,
        XML_CATA_PREFER_SYSTEM
    } xmlCatalogPrefer;

### enum xmlCatalogAllow

    typedef enum {
        XML_CATA_ALLOW_NONE = 0,
        XML_CATA_ALLOW_GLOBAL = 1,
        XML_CATA_ALLOW_DOCUMENT = 2,
        XML_CATA_ALLOW_ALL = 3
    } xmlCatalogAllow;

### struct xmlCatalog

    struct xmlCatalog;

### xmlCatalogPtr

    typedef xmlCatalog *xmlCatalogPtr;

### xmlNewCatalog ()

    xmlCatalogPtr xmlNewCatalog                 (int sgml);

create a new Catalog.

`sgml` : | should this create an SGML catalog
Returns : | the xmlCatalogPtr or NULL in case of error

### xmlLoadACatalog ()

    xmlCatalogPtr xmlLoadACatalog               (const char *filename);

Load the catalog and build the associated data structures. This can be either an XML Catalog or an SGML Catalog It will recurse in SGML CATALOG entries. On the other hand XML Catalogs are not handled recursively.

`filename` : | a file path
Returns : | the catalog parsed or NULL in case of error

### xmlLoadSGMLSuperCatalog ()

    xmlCatalogPtr xmlLoadSGMLSuperCatalog       (const char *filename);

Load an SGML super catalog. It won't expand CATALOG or DELEGATE references. This is only needed for manipulating SGML Super Catalogs like adding and removing CATALOG or DELEGATE entries.

`filename` : | a file path
Returns : | the catalog parsed or NULL in case of error

### xmlConvertSGMLCatalog ()

    int         xmlConvertSGMLCatalog           (xmlCatalogPtr catal);

Convert all the SGML catalog entries as XML ones

`catal` : | the catalog
Returns : | the number of entries converted if successful, -1 otherwise

### xmlACatalogAdd ()

    int         xmlACatalogAdd                  (xmlCatalogPtr catal,
                                                 const xmlChar *type,
                                                 const xmlChar *orig,
                                                 const xmlChar *replace);

Add an entry in the catalog, it may overwrite existing but different entries.

`catal` : | a Catalog
`type` : | the type of record to add to the catalog
`orig` : | the system, public or prefix to match
`replace` : | the replacement value for the match
Returns : | 0 if successful, -1 otherwise

### xmlACatalogRemove ()

    int         xmlACatalogRemove               (xmlCatalogPtr catal,
                                                 const xmlChar *value);

Remove an entry from the catalog

`catal` : | a Catalog
`value` : | the value to remove
Returns : | the number of entries removed if successful, -1 otherwise

### xmlACatalogResolve ()

    xmlChar*    xmlACatalogResolve              (xmlCatalogPtr catal,
                                                 const xmlChar *pubID,
                                                 const xmlChar *sysID);

Do a complete resolution lookup of an External Identifier

`catal` : | a Catalog
`pubID` : | the public ID string
`sysID` : | the system ID string
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlACatalogResolveSystem ()

    xmlChar*    xmlACatalogResolveSystem        (xmlCatalogPtr catal,
                                                 const xmlChar *sysID);

Try to lookup the catalog resource for a system ID

`catal` : | a Catalog
`sysID` : | the public ID string
Returns : | the system ID if found or NULL otherwise, the value returned must be freed by the caller.

### xmlACatalogResolvePublic ()

    xmlChar*    xmlACatalogResolvePublic        (xmlCatalogPtr catal,
                                                 const xmlChar *pubID);

Try to lookup the system ID associated to a public ID in that catalog

`catal` : | a Catalog
`pubID` : | the public ID string
Returns : | the system ID if found or NULL otherwise, the value returned must be freed by the caller.

### xmlACatalogResolveURI ()

    xmlChar*    xmlACatalogResolveURI           (xmlCatalogPtr catal,
                                                 const xmlChar *URI);

Do a complete resolution lookup of an URI

`catal` : | a Catalog
`URI` : | the URI
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlACatalogDump ()

    void        xmlACatalogDump                 (xmlCatalogPtr catal,
                                                 FILE *out);

Free up all the memory associated with catalogs

`catal` : | a Catalog
`out` : | the file.

### xmlFreeCatalog ()

    void        xmlFreeCatalog                  (xmlCatalogPtr catal);

Free the memory allocated to a Catalog

`catal` : | a Catalog entry

### xmlCatalogIsEmpty ()

    int         xmlCatalogIsEmpty               (xmlCatalogPtr catal);

Check is a catalog is empty

`catal` : | should this create an SGML catalog
Returns : | 1 if the catalog is empty, 0 if not, amd -1 in case of error.

### xmlInitializeCatalog ()

    void        xmlInitializeCatalog            (void);

Do the catalog initialization. this function is not thread safe, catalog initialization should preferably be done once at startup

### xmlLoadCatalog ()

    int         xmlLoadCatalog                  (const char *filename);

Load the catalog and makes its definitions effective for the default external entity loader. It will recurse in SGML CATALOG entries. this function is not thread safe, catalog initialization should preferably be done once at startup

`filename` : | a file path
Returns : | 0 in case of success -1 in case of error

### xmlLoadCatalogs ()

    void        xmlLoadCatalogs                 (const char *paths);

Load the catalogs and makes their definitions effective for the default external entity loader. this function is not thread safe, catalog initialization should preferably be done once at startup

`paths` : |

### xmlCatalogCleanup ()

    void        xmlCatalogCleanup               (void);

Free up all the memory associated with catalogs

### xmlCatalogDump ()

    void        xmlCatalogDump                  (FILE *out);

Free up all the memory associated with catalogs

`out` : | the file.

### xmlCatalogResolve ()

    xmlChar*    xmlCatalogResolve               (const xmlChar *pubID,
                                                 const xmlChar *sysID);

Do a complete resolution lookup of an External Identifier

`pubID` : | the public ID string
`sysID` : | the system ID string
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlCatalogResolveSystem ()

    xmlChar*    xmlCatalogResolveSystem         (const xmlChar *sysID);

Try to lookup the catalog resource for a system ID

`sysID` : | the public ID string
Returns : | the system ID if found or NULL otherwise, the value returned must be freed by the caller.

### xmlCatalogResolvePublic ()

    xmlChar*    xmlCatalogResolvePublic         (const xmlChar *pubID);

Try to lookup the system ID associated to a public ID

`pubID` : | the public ID string
Returns : | the system ID if found or NULL otherwise, the value returned must be freed by the caller.

### xmlCatalogResolveURI ()

    xmlChar*    xmlCatalogResolveURI            (const xmlChar *URI);

Do a complete resolution lookup of an URI

`URI` : | the URI
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlCatalogAdd ()

    int         xmlCatalogAdd                   (const xmlChar *type,
                                                 const xmlChar *orig,
                                                 const xmlChar *replace);

Add an entry in the catalog, it may overwrite existing but different entries. If called before any other catalog routine, allows to override the default shared catalog put in place by xmlInitializeCatalog();

`type` : | the type of record to add to the catalog
`orig` : | the system, public or prefix to match
`replace` : | the replacement value for the match
Returns : | 0 if successful, -1 otherwise

### xmlCatalogRemove ()

    int         xmlCatalogRemove                (const xmlChar *value);

Remove an entry from the catalog

`value` : | the value to remove
Returns : | the number of entries removed if successful, -1 otherwise

### xmlParseCatalogFile ()

    xmlDocPtr   xmlParseCatalogFile             (const char *filename);

parse an XML file and build a tree. It's like xmlParseFile() except it bypass all catalog lookups.

`filename` : | the filename
Returns : | the resulting document tree or NULL in case of error

### xmlCatalogConvert ()

    int         xmlCatalogConvert               (void);

Convert all the SGML catalog entries as XML ones

Returns : | the number of entries converted if successful, -1 otherwise

### xmlCatalogFreeLocal ()

    void        xmlCatalogFreeLocal             (void *catalogs);

Free up the memory associated to the catalog list

`catalogs` : | a document's list of catalogs

### xmlCatalogAddLocal ()

    void*       xmlCatalogAddLocal              (void *catalogs,
                                                 const xmlChar *URL);

Add the new entry to the catalog list

`catalogs` : | a document's list of catalogs
`URL` : | the URL to a new local catalog

### xmlCatalogLocalResolve ()

    xmlChar*    xmlCatalogLocalResolve          (void *catalogs,
                                                 const xmlChar *pubID,
                                                 const xmlChar *sysID);

Do a complete resolution lookup of an External Identifier using a document's private catalog list

`catalogs` : | a document's list of catalogs
`pubID` : | the public ID string
`sysID` : | the system ID string
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlCatalogLocalResolveURI ()

    xmlChar*    xmlCatalogLocalResolveURI       (void *catalogs,
                                                 const xmlChar *URI);

Do a complete resolution lookup of an URI using a document's private catalog list

`catalogs` : | a document's list of catalogs
`URI` : | the URI
Returns : | the URI of the resource or NULL if not found, it must be freed by the caller.

### xmlCatalogSetDebug ()

    int         xmlCatalogSetDebug              (int level);

Used to set the debug level for catalog operation, 0 disable debugging, 1 enable it

`level` : | the debug level of catalogs required
Returns : | the previous value of the catalog debugging level

### xmlCatalogSetDefaultPrefer ()

    xmlCatalogPrefer xmlCatalogSetDefaultPrefer (xmlCatalogPrefer prefer);

Allows to set the preference between public and system for deletion in XML Catalog resolution. C.f. section 4.1.1 of the spec Values accepted are XML_CATA_PREFER_PUBLIC or XML_CATA_PREFER_SYSTEM

`prefer` : | the default preference for delegation
Returns : | the previous value of the default preference for delegation

### xmlCatalogSetDefaults ()

    void        xmlCatalogSetDefaults           (xmlCatalogAllow allow);

Used to set the user preference w.r.t. to what catalogs should be accepted

`allow` : | what catalogs should be accepted

### xmlCatalogGetDefaults ()

    xmlCatalogAllow xmlCatalogGetDefaults       (void);

Used to get the user preference w.r.t. to what catalogs should be accepted

Returns : | the current xmlCatalogAllow value

### xmlCatalogGetSystem ()

    const xmlChar* xmlCatalogGetSystem          (const xmlChar *sysID);

Try to lookup the system ID associated to a public ID DEPRECATED, use xmlCatalogResolveSystem()

`sysID` : | the system ID string
Returns : | the system ID if found or NULL otherwise.

### xmlCatalogGetPublic ()

    const xmlChar* xmlCatalogGetPublic          (const xmlChar *pubID);

Try to lookup the system ID associated to a public ID DEPRECATED, use xmlCatalogResolvePublic()

`pubID` : | the public ID string
Returns : | the system ID if found or NULL otherwise.