XML Catalogs

This is the home/a launching page for the XML Catalogs specification. XML Catalogs were developed to address an interoperability requirement:

The requirement that all external identifiers in XML documents must provide a system identifier has unquestionably been of tremendous short-term benefit to the XML community. It has allowed a whole generation of tools to be developed without the added complexity of explicit entity management.

However, the interoperability of XML documents has been impeded in several ways by the lack of entity management facilities:

  1. External identifiers may require resources that are not always available. For example, a system identifier that points to a resource on another machine may be inaccessible if a network connection is not available.

  2. External identifiers may require protocols that are not accessible to all of the vendors' tools on a single computer system. An external identifier that is addressed with the ftp: protocol, for example, is not accessible to a tool that does not support that protocol.

  3. It is often convenient to access resources using system identifiers that point to local resources. Exchanging documents that refer to local resources with other systems is problematic at best and impossible at worst.

The problems involved with sharing documents, or packages of documents, across multiple systems are large and complex. While there are many important issues involved and a complete solution is beyond the current scope, the OASIS membership agrees upon the enclosed set of conventions to address a useful subset of the complete problem. To address these issues, this OASIS Standard defines an entity catalog that maps both external identifiers and arbitrary URI references to URI references.

XML Catalogs were developed at OASIS by the OASIS Entity Resolution Technical Committee. They are based on earlier work on SGML Catalogs.

This site exists in part because OASIS have disbanded the comments mailing list and the useful, stand-alone versions of the schemas now return 404.

1 The Catalog Schemas

The OASIS Standard, version 1.1 schemas are available here:

  1. http://xmlcatalogs.org/schema/1.1/catalog.xsd (W3C XML Schema)

  2. http://xmlcatalogs.org/schema/1.1/catalog.rng (RELAX NG)

  3. http://xmlcatalogs.org/schema/1.1/catalog.rnc (RELAX NG Compact Syntax)

  4. http://xmlcatalogs.org/schema/1.1/catalog.dtd (XML DTD)

Non-normative, experimental version 1.2 schemas are availble here:

  1. http://xmlcatalogs.org/schema/1.2beta/catalog.xsd (W3C XML Schema)

  2. http://xmlcatalogs.org/schema/1.2beta/catalog.rng (RELAX NG)

  3. http://xmlcatalogs.org/schema/1.2beta/catalog.rnc (RELAX NG Compact Syntax)

  4. http://xmlcatalogs.org/schema/1.2beta/catalog.dtd (XML DTD)

The 1.2beta schemas are identical to the standard 1.1 schemas with one small exception: a bug in the definition of pubIdChars simple type in the W3C XML Schema has been corrected. In the standard 1.1 schemas, pubIdChars incorrectly excludes the space character.

2 Implementations

Many XML products come with catalog support built in. If you want to add it to your applications, these libraries may help:

  1. XML Resolver is a Java implementation.

  2. XML Resolver CS is a C# implementation.

  3. XML Commons at Apache is a much older Java implementation.

  4. XML Catalog Resolver in XQuery runs on BaseX.

  5. XSLT-based catalog resolver is an XSLT implementation.