Configuring XML Catalogs

In the XML sample file for SDF you did not use a xsi:schemaLocation attribute, but instead you let the editor use the schema from the association. However, there are cases in which you must reference the location of a schema file from a remote web location and an Internet connection may not be available. In such cases an XML catalog may be used to map the web location to a local file system entry. The following procedure presents an example of using an XML catalogs, by modifying our sdf.xsd XML Schema file from the Example Files Listings.

  1. Create a catalog file that will help the parser locate the schema for validating the XML document. The file must map the location of the schema to a local version of the schema.

    Create a new XML file called catalog.xml and save it into the [OXYGEN_INSTALL_DIR]/frameworks/sdf directory. The content of the file should be:

    <?xml version="1.0"?> 
    <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
        <uri name="http://www.oxygenxml.com/SDF/abs.xsd"
                uri="schema/abs.xsd"/>
        <uri name="http://www.oxygenxml.com/SDF/abs.xsd" 
                   uri="schema/abs.xsd"/>
    </catalog>
  2. Add catalog files to your Document Type Association using the Catalogs tab from the Document Type configuration dialog box.

To test the catalog settings, restart Oxygen XML Editor and try to validate a new sample custom framework document. There should be no errors.

The sdf.xsd schema that validates the document refers the other file abs.xsd through an import element:

<xs:import namespace=
 "http://www.oxygenxml.com/sample/documentation/abstracts" 
 schemaLocation="http://www.oxygenxml.com/SDF/abs.xsd"/>

The schemaLocation attribute references the abs.xsd file:

xsi:schemaLocation="http://www.oxygenxml.com/sample/documentation/abstracts"
    http://www.oxygenxml.com/SDF/abs.xsd"/>

The catalog mapping is:

http://www.oxygenxml.com/SDF/abs.xsd -> schema/abs.xsd

This means that all the references to http://www.oxygenxml.com/SDF/abs.xsd must be resolved to the abs.xsd file located in the schema directory. The URI element is used by URI resolvers (for example, to resolve a URI reference used in an XSLT stylesheet).

Was this helpful?