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.
- 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>
- 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).