Moving these documents into separate directories for each component.
git-svn-id: https://svn.apache.org/repos/asf/xml/commons/trunk@226040 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8c274f41e3
commit
deec0bf0a1
@ -1,49 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
|
||||
<document>
|
||||
<header>
|
||||
<title>External Components</title>
|
||||
<authors>
|
||||
<person name="Shane Curcuru" email="curcuru@apache.org"/>
|
||||
</authors>
|
||||
</header>
|
||||
<body>
|
||||
<anchor id="overview"/>
|
||||
<section>
|
||||
<title>Overview</title>
|
||||
<p>xml-commons provides an Apache-hosted set of DOM, SAX, and JAXP interfaces for use in
|
||||
other xml-based projects. Our hope is that we can standardize on both a common version and
|
||||
packaging scheme for these critical XML standards interfaces to make the lives of both
|
||||
our developers and users easier.
|
||||
</p>
|
||||
<p>The External Components portion of xml-commons contains interfaces that
|
||||
are defined by external standards organizations. For DOM, that's the W3c; for SAX it's
|
||||
David Megginson and sax.sourceforge.net; for JAXP it's Sun. While we could send users to
|
||||
each of the primary sources for these deliverables, keeping our own versions of these in
|
||||
the xml-commons repository gives us a number of advantages:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Simplicity of downloads: users get the whole product from one place.
|
||||
</li>
|
||||
<li>Better version control: we can only take fixes we want, and add Apache-specific changes.
|
||||
</li>
|
||||
<li>Better overview documentation of how these interfaces fit into the XML processing world.
|
||||
</li>
|
||||
<li>More chance for cross-project community building within Apache projects.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<fixme author="curcuru">In progress. See the commons-dev-at-xml.apache.org mailing list
|
||||
for our current progress at updating the structure of the xml-commons project. Volunteers
|
||||
to help with the documentation set appreciated as well!
|
||||
</fixme>
|
||||
<p>Currently, we provide just the native sets of javadoc from each of these external
|
||||
sets of code, plus whatever native documentation provided.
|
||||
We also include LICENSE and README files for each set of code from
|
||||
an external source.
|
||||
</p>
|
||||
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</document>
|
||||
@ -1,910 +0,0 @@
|
||||
<!DOCTYPE article
|
||||
PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
||||
<article>
|
||||
<articleinfo>
|
||||
<title>XML Entity and URI Resolvers</title>
|
||||
<subtitle>Version 1.3</subtitle>
|
||||
<pubdate>13 Nov 2002</pubdate>
|
||||
<releaseinfo role="meta">$Id$
|
||||
</releaseinfo>
|
||||
|
||||
<!--
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>1.3</revnumber>
|
||||
<date>13 Nov 2002</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>New notes.
|
||||
</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revision>
|
||||
<revnumber>1.2</revnumber>
|
||||
<date>14 Jun 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Updated for the move to Apache. Added to the xml-commons project.
|
||||
</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.1</revnumber>
|
||||
<date>05 Nov 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Updated with a few bug fixes, support for system properties, and a new
|
||||
source code license.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.5</revnumber>
|
||||
<date>01 Aug 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Updated to reflect more changes to the ER draft.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.4</revnumber>
|
||||
<date>16 Jul 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Updated to reflect more changes to the ER draft.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.3</revnumber>
|
||||
<date>12 Jun 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Updated to reflect recent changes to the ER draft.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.2</revnumber>
|
||||
<date>27 Apr 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>First public draft.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.1</revnumber>
|
||||
<date>20 Feb 2001</date>
|
||||
<authorinitials>ndw</authorinitials>
|
||||
<revremark>Initial draft.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
-->
|
||||
|
||||
<author><firstname>Norman</firstname><surname>Walsh</surname>
|
||||
<affiliation>
|
||||
<jobtitle>Staff Engineer</jobtitle>
|
||||
<orgname>Sun Microsystems, XML Technology Center</orgname>
|
||||
</affiliation>
|
||||
<authorblurb>
|
||||
<para>Sun Microsystems supports Norm's active participation in a
|
||||
number of standards efforts worldwide, including the Technical
|
||||
Architecture Group, XML Core, and XSL Working Groups of the World Wide
|
||||
Web Consortium, the OASIS RELAX NG Committee,
|
||||
the Entity Resolution Committee, for which he is the editor, and
|
||||
the DocBook Technical Committee, which he chairs.</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2001</year><year>2002</year>
|
||||
<holder>Sun Microsystems, Inc.</holder>
|
||||
</copyright>
|
||||
<copyright><year>2000</year><holder>Arbortext, Inc.</holder></copyright>
|
||||
</articleinfo>
|
||||
|
||||
<section><title>Finding Resources on the Net</title>
|
||||
|
||||
<para>It's very common for web resources to be related to other
|
||||
resources: documents rely on DTDs and schemas, schemas are derived from
|
||||
other schemas, stylesheets are often customizations of other
|
||||
stylesheets, documents refer to the schemas and stylesheets with which
|
||||
the expect to be processed, etc. These relationships are expressed
|
||||
using URIs, most often URLs.</para>
|
||||
|
||||
<para>Relying on URLs to directly identify resources to be retrieved
|
||||
often causes problems for end users:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>If they're absolute URLs, they only work when you can reach
|
||||
them<footnote><para>It is technically possible to use a proxy
|
||||
to transparently cache remote resources, thus making the cached resources
|
||||
available even when the real hosts are unreachable. In practice, this
|
||||
requires more technical skill (and system administration access) than
|
||||
many users have available. And I don't know of any such proxies that
|
||||
can be configured to provide preferential caching to the specific resources
|
||||
that are needed. Without such preferential treatment, its difficult to
|
||||
be sure that the resources you need are actually in the cache.</para>
|
||||
</footnote>. Relying on remote resources makes XML processing susceptible
|
||||
to both planned and unplanned network downtime.
|
||||
</para>
|
||||
<para>The URL
|
||||
<quote>http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd</quote>
|
||||
isn't very useful if I'm on an airplane at 35,000 feet.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>If they're relative URLs, they're only useful in the context where
|
||||
the were initially created.
|
||||
</para>
|
||||
<para>The URL <quote>../../xml/dtd/docbookx.xml</quote> isn't useful
|
||||
<emphasis>anywhere</emphasis> on my system. Neither, for that matter,
|
||||
is <quote>/export/home/fred/docbook412/docbookx.xml</quote>.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>One way to avoid these problems is to use an entity resolver
|
||||
(a standard part of SAX) or a URI Resolver (a standard part of JAXP).
|
||||
A resolver can examine the URIs of the resources being requested and
|
||||
determine how best to satisfy those requests.</para>
|
||||
|
||||
<para>The best way to make this function in an interoperable way is to
|
||||
define a standard format for mapping system identifiers and URIs. The
|
||||
<ulink url="http://www.oasis-open.org/committees/entity/">OASIS Entity
|
||||
Resolution Technical Committee</ulink> is defining an XML
|
||||
representation for just such a mapping. These <quote>catalog files</quote>
|
||||
can be used to map public and system identifiers and other URIs to
|
||||
local files (or just other URIs).</para>
|
||||
|
||||
<section><title>Resolver Classes Version 1.1</title>
|
||||
|
||||
<para>The <ulink url="resolver-1.1.zip" role="linktable" xreflabel="Resolver
|
||||
Classes">Resolver classes</ulink> that are described
|
||||
in this article greatly simplify the task of using Catalog files
|
||||
to perform entity resolution. Many users will want to simply use
|
||||
these classes directly <quote>out of the box</quote> with their applications
|
||||
(such as Xalan and Saxon), but developers may also be interested in
|
||||
the
|
||||
<ulink url="apidocs/index.html" role="linktable" xreflabel="JavaDoc API Documentation">JavaDoc
|
||||
API Documentation</ulink>.
|
||||
</para>
|
||||
|
||||
<section><title>Changes from Version 1.0</title>
|
||||
|
||||
<para>The most important change in this release is the availability of
|
||||
both source and binary forms under a <ulink
|
||||
url="copyright.html">generous license agreement</ulink>.</para>
|
||||
|
||||
<para>Other than that, there have been a number of minor bug fixes and the introduction
|
||||
of system properties in addition to the <filename>CatalogManager.properties</filename>
|
||||
file to <link linkend="ctrlresolver">control the resolver</link>.</para>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>What's Wrong with System Identifiers?</title>
|
||||
|
||||
<para>The problems associated with system identifiers (and URIs in general)
|
||||
arise in several ways:</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem><para>I have an XML document that I want to publish on the web or
|
||||
include in the distribution of some piece of software. On my system, I keep
|
||||
the doctype of the document in some local directory, so my doctype declaration
|
||||
reads:</para>
|
||||
<programlisting><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"file:///n:/share/doctypes/docbook/xml/docbookx.dtd"></programlisting>
|
||||
<para>As soon as I distribute this document, I immediately begin getting error
|
||||
reports from customers who can't read the document because they don't have
|
||||
DocBook installed at the location identified by the URI in my document.</para>
|
||||
</listitem>
|
||||
<listitem><para>Or I remember to change the URI before I publish the document:</para>
|
||||
<programlisting><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"></programlisting>
|
||||
<para>And the next time I try to edit the document, <emphasis>I get errors</emphasis>
|
||||
because I happen to be working on my laptop on a plane somewhere and can't
|
||||
get to the net.</para>
|
||||
</listitem>
|
||||
<listitem><para>Just as often, I get tripped up this way: I'm working collaboratively
|
||||
with a colleague. She's created initial drafts of some documents that I'm
|
||||
supposed to review and edit. So I grab them and find that I can't open or
|
||||
publish them because I don't have the same network connections she has or
|
||||
I don't have my applications installed in the same place. And if I change the system
|
||||
identifiers so they work on my system, she has the same problems when I send
|
||||
them back to her.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>These problems aren't limited to editing applications. If I write
|
||||
a special stylesheet for formatting our collaborative document, it will
|
||||
include some reference to the <quote>main</quote> stylesheet:</para>
|
||||
|
||||
<programlisting><![CDATA[<xsl:import href="/path/to/real/stylesheet.xsl"/>]]>
|
||||
</programlisting>
|
||||
|
||||
<para>But this won't work on my colleague's machine because she has
|
||||
the main stylesheet installed somewhere else.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>Public identifiers offer an effective solution to this problem,
|
||||
at least for documents. They provide global, unique names for entities
|
||||
independent of their storage location. Unfortunately, public
|
||||
identifiers aren't used very often because many users find that they
|
||||
cannot rely on applications resolving them in an interoperable
|
||||
manner.</para>
|
||||
|
||||
<para>For XSLT, XML Schemas, and other applications that rely on URIs
|
||||
without providing a mechanism for associating public identifiers with
|
||||
them, the situation is a little more irksome, but it can still be
|
||||
addressed using a URI Resolver.</para>
|
||||
</section>
|
||||
<section>
|
||||
<title>Naming Resources</title>
|
||||
|
||||
<para>In some contexts, it's more useful to refer to a resource by
|
||||
name than by address. If I want the version 3.1 of the DocBook DTD,
|
||||
or the 1911 edition of Webster's dictionary, or <citetitle>The
|
||||
Declaration of Independence</citetitle>, that's what I want,
|
||||
irrespective of its location on the net (or even if it's available on
|
||||
the net). While it is possible to view a URL as an address, I don't
|
||||
think that's the natural interpretation.</para>
|
||||
|
||||
<para>There are currently two ways that I might reasonably assign an
|
||||
address-independent name to an object: public identifiers or <ulink
|
||||
url="http://www.ietf.org/rfc/rfc2141.txt">Uniform Resource
|
||||
Names</ulink> (URNs)<footnote><para>URIs that rely on the domain name
|
||||
system to identify objects (in other words, all URLs) are addresses,
|
||||
not names, even though the domain name provides a level of indirection
|
||||
and the illusion of a stable name.</para>
|
||||
</footnote>.</para>
|
||||
|
||||
<section>
|
||||
<title>Public Identifiers</title>
|
||||
<para>Public identifiers are part of <ulink url="http://www.w3.org/TR/REC-xml">XML
|
||||
1.0</ulink>. They can occur in any form of external entity declaration. They
|
||||
allow you to give a globally unique name to any entity. For example, the XML
|
||||
version of DocBook V4.1.2 is identified with the following public identifier:</para>
|
||||
<programlisting>-//OASIS//DTD DocBook XML V4.1.2//EN</programlisting>
|
||||
<para>You'll see this identifier in the two doctype declarations I used earlier.
|
||||
This identifier gives no indication of where the resource (the DTD) may be
|
||||
found, but it does uniquely name the resource. That public identifier, now
|
||||
and forever refers to the XML version of DocBook V4.1.2.</para>
|
||||
</section>
|
||||
<section>
|
||||
<title>Uniform Resource Names</title>
|
||||
<para>URNs are a form of URI. Like public identifiers, they give a location-neutral,
|
||||
globally unique name to an entity. For example, OASIS might choose to identify
|
||||
the XML version of DocBook V4.1.2 with the following URN:</para>
|
||||
|
||||
<programlisting>urn:oasis:names:specification:docbook:dtd:xml:4.1.2</programlisting>
|
||||
|
||||
<para>Like a public identifier, a URN can now and forever refer to a specific
|
||||
entity in a location-independent manner.</para>
|
||||
|
||||
<section><title>The publicid URN Namespace</title>
|
||||
|
||||
<para>Public identifiers don't fit very well into the web architecture
|
||||
(they are not, for example, always valid URIs). This problem can be
|
||||
addressed by the <literal>publicid</literal> URN namespace defined by
|
||||
<ulink url="http://www.ietf.org/rfc/rfc3151.txt">RFC 3151</ulink>.</para>
|
||||
|
||||
<para>This namespace allows public identifiers to be easily
|
||||
represented as URNs. The OASIS XML Catalog specification accords
|
||||
special status to URNs of this form so that catalog resolution occurs
|
||||
in the expected way.</para>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section>
|
||||
<title>Resolving Names</title>
|
||||
<para>Having extolled the virtues of location-independent names, it must be
|
||||
said that a name isn't very useful if you can't find the thing it refers to.
|
||||
In order to do that, you must have a name resolution mechanism that allows
|
||||
you to determine what resource is referred to by a given name.</para>
|
||||
<para>One important feature of this mechanism is that it can allow resources
|
||||
to be distributed, so you don't have to go to <ulink url="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd</ulink
|
||||
> to get the XML version of DocBook V4.1.2, if you have a local copy.</para>
|
||||
<para>There are a few possible resolution mechanisms:</para>
|
||||
<itemizedlist>
|
||||
<listitem><para>The application just <quote>knows</quote>. Sure, it sounds
|
||||
a little silly, but this is currently the mechanism being used for namespaces.
|
||||
Applications know what the semantics of namespaced elements are because they
|
||||
recognize the namespace URI.</para>
|
||||
</listitem>
|
||||
<listitem><para>OASIS Catalog files provide a mechanism for mapping public
|
||||
and system identifiers, allowing resolution to both local and distributed
|
||||
resources. This is the resolution scheme we're going to consider for the balance
|
||||
of this column.</para>
|
||||
</listitem>
|
||||
<listitem><para>Many other mechanisms are possible. There are already a few
|
||||
for URNs, including at least one built on top of DNS, but they aren't widely
|
||||
deployed.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section>
|
||||
<title>Catalog Files</title>
|
||||
<para>Catalog files are straightforward text files that describe a mapping
|
||||
from names to addresses. Here's a simple one:</para>
|
||||
|
||||
<example><title>An Example Catalog File</title>
|
||||
<programlisting><![CDATA[<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
|
||||
|
||||
<public publicId="-//OASIS//DTD XML DocBook V4.1.2//EN"
|
||||
uri="docbook/xml/docbookx.dtd"/>
|
||||
|
||||
<system systemId="urn:x-oasis:docbook-xml-v4.1.2"
|
||||
uri="docbook/xml/docbookx.dtd"/>
|
||||
|
||||
<delegatePublic publicIdStartString="-//Example//"
|
||||
catalog="http://www.example.com/catalog"/>
|
||||
</catalog>]]></programlisting>
|
||||
</example>
|
||||
|
||||
<para>This file maps both the public identifier and the URN I mentioned earlier
|
||||
to a local copy of DocBook on my system. If the doctype declaration uses the
|
||||
public identifier for DocBook, <emphasis>I'll get DocBook</emphasis> regardless
|
||||
of the (possibly bogus) system identifier! Likewise, my local copy of DocBook
|
||||
will be used if the system identifier contains the DocBook URN.</para>
|
||||
<para>The delegate entry instructs the resolver to use the catalog <quote><filename>http://www.example.com/catalog</filename></quote>
|
||||
for any public identifier that begins with <quote>-//Example//</quote>.
|
||||
The advantage of delegate in this case is that I don't have to parse that
|
||||
catalog file unless I encounter a public identifier that I reasonably expect
|
||||
to find there.</para>
|
||||
</section>
|
||||
<section>
|
||||
<title>Understanding Catalog Files</title>
|
||||
|
||||
<para>The OASIS <ulink
|
||||
url="http://www.oasis-open.org/committees/entity/">Entity Resolution
|
||||
Technical Committee</ulink> is actively defining the next generation
|
||||
XML-based catalog file format. When this work is finished, it is
|
||||
expected to become the official XML Catalog format. In the meantime,
|
||||
the existing OASIS <ulink
|
||||
url="http://www.oasis-open.org/html/a401.htm">Technical Resolution
|
||||
TR9401</ulink> format is the standard.</para>
|
||||
|
||||
<section id="xmlcatalogs"><title>OASIS XML Catalogs</title>
|
||||
|
||||
<para>OASIS XML Catalogs are being defined by the <ulink
|
||||
url="http://www.oasis-open.org/committees/entity/">Entity Resolution
|
||||
Technical Committee</ulink>. This article describes the 01 Aug 2001
|
||||
draft. Note that this draft is labelled to reflect that it is
|
||||
<quote>not an official committee work product and may not reflect the
|
||||
consensus opinion of the committee.</quote></para>
|
||||
|
||||
<para>The document element for OASIS XML Catalogs is
|
||||
<sgmltag>catalog</sgmltag>. The official namespace name for OASIS XML
|
||||
Catalogs is
|
||||
<quote><literal>urn:oasis:names:tc:entity:xmlns:xml:catalog</literal></quote>.</para>
|
||||
|
||||
<para>There are eight elements that can occur in an XML Catalog:
|
||||
<sgmltag>group</sgmltag>,
|
||||
<sgmltag>public</sgmltag>,
|
||||
<sgmltag>system</sgmltag>,
|
||||
<sgmltag>uri</sgmltag>,
|
||||
<sgmltag>delegatePublic</sgmltag>,
|
||||
<sgmltag>delegateSystem</sgmltag>,
|
||||
<sgmltag>delegateURI</sgmltag>, and
|
||||
<sgmltag>nextCatalog</sgmltag>:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry id="catalog"><term><literal><catalog <replaceable>prefer="public|system"</replaceable> <replaceable>xml:base="uri-reference"</replaceable>></literal></term>
|
||||
<listitem><para>The <sgmltag>catalog</sgmltag> element is the root of
|
||||
an XML Catalog.</para>
|
||||
<para>The <sgmltag class="attribute">prefer</sgmltag> setting
|
||||
determines whether or not public identifiers specified in the catalog
|
||||
are to be used in favor of system identifiers supplied in the
|
||||
document. Suppose you have an entity in your document for which both a
|
||||
public identifier and a system identifier has been specified, and the
|
||||
catalog only contains a mapping for the public identifier (e.g., a
|
||||
matching <sgmltag>public</sgmltag> catalog entry). If the current
|
||||
value of <sgmltag class="attribute">prefer</sgmltag> is
|
||||
<quote>public</quote>, the URI supplied in the matching
|
||||
<sgmltag>public</sgmltag> catalog entry will be used. If it is
|
||||
<quote>system</quote>, the system identifier in the document will be
|
||||
used. (If the catalog contained a matching <sgmltag>system</sgmltag>
|
||||
catalog entry giving a mapping for the system identifier, that mapping
|
||||
would have been used, the public identifier would never have been
|
||||
considered, and the setting of override would have been
|
||||
irrelevant.)</para>
|
||||
<para>Generally, the purpose of catalogs is to
|
||||
override the system identifiers in XML documents, so
|
||||
<sgmltag class="attribute">prefer</sgmltag> should
|
||||
usually be <quote>public</quote> in your catalogs.</para>
|
||||
<para>The <sgmltag class="attribute">xml:base</sgmltag> URI is used to
|
||||
resolve relative URIs in the catalog as described in the
|
||||
<ulink url="http://www.w3.org/TR/xmlbase">XML Base</ulink> specification.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="group"><term><literal><group <replaceable>prefer="public|system"</replaceable> <replaceable>xml:base="uri-reference"</replaceable>></literal></term>
|
||||
<listitem><para>The <sgmltag>group</sgmltag> element serves merely as
|
||||
a wrapper around one or more other entries for the purpose of
|
||||
establishing the preference and base URI settings for those
|
||||
entries.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="public"><term><literal><public publicId="<replaceable>pubid</replaceable>" uri="<replaceable>systemuri</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>Maps the public identifier <replaceable>pubid</replaceable> to the
|
||||
system identifier <replaceable>systemuri</replaceable>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="system"><term><literal><system systemId="<replaceable>sysid</replaceable>" uri="<replaceable>systemuri</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>Maps the system identifier <replaceable>sysid</replaceable> to the
|
||||
alternate system identifier <replaceable>systemuri</replaceable>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="uri"><term><literal><uri name="<replaceable>uri</replaceable>" uri="<replaceable>alternateuri</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>The <sgmltag>uri</sgmltag> entry maps a
|
||||
<replaceable>uri</replaceable> to an
|
||||
<replaceable>alternateuri</replaceable>. This mapping, as might be performed
|
||||
by a JAXP URIResolver, for example, is independent of system and public
|
||||
identifier resolution.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="delegate">
|
||||
<term><literal><delegatePublic publicIdStartString="<replaceable>pubid-prefix</replaceable>" catalog="<replaceable>cataloguri</replaceable>"/></literal></term>
|
||||
<term><literal><delegateSystem systemIdStartString="<replaceable>sysid-prefix</replaceable>" catalog="<replaceable>cataloguri</replaceable>"/></literal></term>
|
||||
<term><literal><delegateURI uriStartString="<replaceable>uri-prefix</replaceable>" catalog="<replaceable>cataloguri</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>The delegate entries specify that identifiers beginning with the
|
||||
matching prefix should be resolved using the catalog specified by the
|
||||
<replaceable>cataloguri</replaceable>. If multiple delegate entries
|
||||
of the same kind match, they will each be searched, starting with the
|
||||
longest prefix and continuing with the next longest to the
|
||||
shortest.</para>
|
||||
|
||||
<para>The delegate entries differs from the
|
||||
<sgmltag>nextCatalog</sgmltag> entry in the following way: alternate
|
||||
catalogs referenced with a <sgmltag>nextCatalog</sgmltag> entry are parsed
|
||||
and included in the current catalog. Delegated catalogs are only
|
||||
considered, and consequently only loaded and parsed, if
|
||||
necessary. Delegated catalogs are also used <emphasis>instead
|
||||
of</emphasis> the current catalog, not as part of the current
|
||||
catalog.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="rewrite"><term><literal><rewriteSystem systemIdStartString="<replaceable>sysid-prefix</replaceable>" rewritePrefix="<replaceable>new-prefix</replaceable>"/></literal></term>
|
||||
<term><literal><rewriteURI uriStartString="<replaceable>uri-prefix</replaceable>" rewritePrefix="<replaceable>new-prefix</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>Supports generalized rewriting of system identifiers and URIs. This
|
||||
allows all of the URI references to a particular document (which might include
|
||||
many different fragment identifiers) to be remapped to a different resource).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry id="nextCatalog"><term><literal><nextCatalog catalog="<replaceable>cataloguri</replaceable>"/></literal></term>
|
||||
<listitem>
|
||||
<para>Adds the catalog file specified by the <replaceable>cataloguri</replaceable>
|
||||
to the end of the current catalog. This allows one catalog to refer to another.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</section>
|
||||
|
||||
<section id="tr9401catalogs"><title>OASIS TR9401 Catalogs</title>
|
||||
|
||||
<para>These catalogs are officially defined
|
||||
by <ulink url="http://www.oasis-open.org/html/a401.htm">OASIS
|
||||
Technical Resolution TR9401</ulink>.
|
||||
</para>
|
||||
|
||||
<para>A Catalog is a text file that contains a sequence of entries. Of the
|
||||
13 types of entries that are possible, only six are commonly applicable
|
||||
in XML systems: BASE, CATALOG, OVERRIDE, DELEGATE, PUBLIC, and SYSTEM:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term>BASE <replaceable>uri</replaceable></term>
|
||||
<listitem>
|
||||
<para>Catalog entries can contain relative URIs. The BASE entry changes the
|
||||
base URI for subsequent relative URIs. The initial base URI is the URI of
|
||||
the <emphasis>catalog</emphasis> file.</para>
|
||||
<para>In <link linkend="xmlcatalogs">XML Catalogs</link>, this
|
||||
functionality is provided by the closest applicable <sgmltag
|
||||
class="attribute">xml:base</sgmltag> attribute, usually on the
|
||||
surrounding <link linkend="catalog"><sgmltag>catalog</sgmltag></link>
|
||||
or <link linkend="group"><sgmltag>group</sgmltag></link>
|
||||
element.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>CATALOG <replaceable>cataloguri</replaceable></term>
|
||||
<listitem>
|
||||
<para>This entry serves the same purpose as the
|
||||
<link linkend="nextCatalog"><sgmltag>nextCatalog</sgmltag></link> entry
|
||||
in <link linkend="xmlcatalogs">XML Catalogs</link>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>OVERRIDE <replaceable>YES|NO</replaceable></term>
|
||||
<listitem>
|
||||
|
||||
<para>This entry enables or disables overriding of system identifiers
|
||||
for subsequent entries in the catalog file.</para>
|
||||
|
||||
<para>In <link linkend="xmlcatalogs">XML Catalogs</link>, this
|
||||
functionality is provided by the closest applicable <sgmltag
|
||||
class="attribute">prefer</sgmltag> attribute on the
|
||||
surrounding <link linkend="catalog"><sgmltag>catalog</sgmltag></link>
|
||||
or <link linkend="group"><sgmltag>group</sgmltag></link>
|
||||
element.</para>
|
||||
|
||||
<para>An override value of <quote>yes</quote> is equivalent to
|
||||
<quote>prefer="public"</quote>.</para>
|
||||
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>DELEGATE <replaceable>pubid-prefix</replaceable> <replaceable>cataloguri</replaceable></term>
|
||||
<listitem>
|
||||
<para>This entry serves the same purpose as the
|
||||
<link linkend="delegate"><sgmltag>delegate</sgmltag></link> entry
|
||||
in <link linkend="xmlcatalogs">XML Catalogs</link>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>PUBLIC <replaceable>pubid</replaceable> <replaceable>systemuri</replaceable></term>
|
||||
<listitem>
|
||||
<para>This entry serves the same purpose as the
|
||||
<link linkend="public"><sgmltag>public</sgmltag></link> entry
|
||||
in <link linkend="xmlcatalogs">XML Catalogs</link>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>SYSTEM <replaceable>sysid</replaceable> <replaceable>systemuri</replaceable></term>
|
||||
<listitem>
|
||||
<para>This entry serves the same purpose as the
|
||||
<link linkend="system"><sgmltag>system</sgmltag></link> entry
|
||||
in <link linkend="xmlcatalogs">XML Catalogs</link>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</section>
|
||||
|
||||
<section><title>XCatalogs</title>
|
||||
<para>The Resolver classes also understand the XCatalog format supported
|
||||
by Apache.</para>
|
||||
</section>
|
||||
|
||||
<section><title>Resolution Semantics</title>
|
||||
|
||||
<para>Resolution is performed in roughly the following way:
|
||||
</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem><para>If a system entry matches the specified system identifier,
|
||||
it is used.</para>
|
||||
</listitem>
|
||||
<listitem><para>If no system entry matches the specified system
|
||||
identifier, but a rewrite entry matches, it is used.</para>
|
||||
</listitem>
|
||||
<listitem><para>If a public entry matches the specified public identifier
|
||||
and either <sgmltag class="attribute">prefer</sgmltag>
|
||||
is public or no system identifier is provided,
|
||||
it is used.</para>
|
||||
</listitem>
|
||||
<listitem><para>If no exact match was found, but
|
||||
it matches one or more of the partial identifiers specified in delegate
|
||||
entries, the delegated catalogs are searched for a matching identifier.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>For a more detailed description of resolution semantics, including
|
||||
the treatment of multiple catalog files and the complete rules for
|
||||
delegation, consult the
|
||||
<ulink url="http://www.oasis-open.org/committees/entity/spec.html">XML
|
||||
Catalog standard</ulink>.</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id='ctrlresolver'>
|
||||
<title>Controlling the Catalog Resolver</title>
|
||||
|
||||
<para>The Resolver classes uses either Java system properties or a
|
||||
standard Java properties file to establish an initial environment. The
|
||||
property file, if it is used, must be called
|
||||
<filename>CatalogManager.properties</filename> and must be
|
||||
somewhere on your <envar>CLASSPATH</envar>. The following properties
|
||||
are supported:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term>System property <literal>xml.catalog.files</literal>;
|
||||
CatalogManager property <literal>catalogs</literal></term>
|
||||
<listitem><para>A semicolon-delimited list of catalog files. These are the
|
||||
catalog files that are initially consulted for resolution.</para>
|
||||
<para>Unless you are incorporating the resolver classes into your own
|
||||
applications, and subsequently establishing an initial set of catalog
|
||||
files through some other means, at least one file must be specified,
|
||||
or all resolution will fail.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.prefer</literal>;
|
||||
CatalogManager property <literal>prefer</literal></term>
|
||||
<listitem><para>The initial prefer setting, either <literal>public</literal>
|
||||
or <literal>system</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.verbosity</literal>;
|
||||
CatalogManager property <literal>verbosity</literal></term>
|
||||
<listitem><para>An indication of how much status/debugging information
|
||||
you want to receive. The value is a number; the larger the number, the more
|
||||
information you will receive. A setting of 0 turns off all status information.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.staticCatalog</literal>;
|
||||
CatalogManager property <literal>static-catalog</literal></term>
|
||||
<listitem><para>In the course of processing, an application may parse
|
||||
several XML documents. If you are using the built-in
|
||||
<classname>CatalogResolver</classname>, this option controls whether or
|
||||
not a new instance of the resolver is constructed for each parse.
|
||||
For performance reasons, using a value of <literal>yes</literal>, indicating
|
||||
that a static catalog should be used for all parsing, is probably best.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.allowPI</literal>;
|
||||
CatalogManager property <literal>allow-oasis-xml-catalog-pi</literal></term>
|
||||
<listitem><para>This setting allows you to toggle whether or not the
|
||||
resolver classes obey the <sgmltag class="xmlpi">oasis-xml-catalog</sgmltag>
|
||||
processing instruction.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.className</literal>;
|
||||
CatalogManager property <literal>catalog-class-name</literal></term>
|
||||
<listitem><para>If you're using the convenience classes
|
||||
<literal>org.apache.xml.resolver.tools.*</literal>), this setting
|
||||
allows you to specify an alternate class name to use for the underlying
|
||||
catalog.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>CatalogManager property <literal>relative-catalogs</literal></term>
|
||||
<listitem><para>If <literal>relative-catalogs</literal> is <literal>yes</literal>,
|
||||
relative catalogs in the <literal>catalogs</literal> property will be left relative;
|
||||
otherwise they will be made absolute
|
||||
with respect to the base URI of the <filename>CatalogManager.properties</filename>
|
||||
file. This setting has no effect on catalogs loaded from the
|
||||
<literal>xml.catalogs.files</literal> system property (which are always returned
|
||||
unchanged).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>System property <literal>xml.catalog.ignoreMissing</literal></term>
|
||||
<listitem><para>By default, the resolver will issue warning messages if it
|
||||
cannot find a <filename>CatalogManager.properties</filename> file, or if resources
|
||||
are missing in that file. However if <emphasis>either</emphasis>
|
||||
<literal>xml.catalog.ignoreMissing</literal> is <literal>yes</literal>, or
|
||||
catalog files are specified with the
|
||||
<literal>xml.catalog.catalogs</literal> system property, this warning will
|
||||
be suppressed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>My <filename>CatalogManager.properties</filename> file looks like
|
||||
this:</para>
|
||||
|
||||
<example><title>Example CatalogManager.properties File</title>
|
||||
<programlisting>#CatalogManager.properties
|
||||
|
||||
verbosity=1
|
||||
|
||||
relative-catalogs=yes
|
||||
|
||||
# Always use semicolons in this list
|
||||
catalogs=./xcatalog;/share/doctypes/catalog;/share/doctypes/xcatalog
|
||||
|
||||
prefer=public
|
||||
|
||||
static-catalog=yes
|
||||
|
||||
allow-oasis-xml-catalog-pi=yes
|
||||
|
||||
catalog-class-name=org.apache.xml.resolver.Resolver
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Using Catalogs with Popular Applications</title>
|
||||
|
||||
<para>A number of popular applications provide easy access to catalog
|
||||
resolution:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term>Xalan</term>
|
||||
<listitem><para>Recent development versions of Xalan include new command-line
|
||||
switches for setting the resolvers. You can use them directly with
|
||||
the <literal>org.apache.xml.resolver.tools</literal> classes:</para>
|
||||
<screen>
|
||||
-URIRESOLVER org.apache.xml.resolver.tools.CatalogResolver
|
||||
-ENTITYRESOLVER org.apache.xml.resolver.tools.CatalogResolver
|
||||
</screen>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>Saxon</term>
|
||||
<listitem><para>Similarly, Saxon supports command-line access to the
|
||||
resolvers:</para>
|
||||
<screen>
|
||||
-x org.apache.xml.resolver.tools.ResolvingXMLReader
|
||||
-y org.apache.xml.resolver.tools.ResolvingXMLReader
|
||||
-r org.apache.xml.resolver.tools.CatalogResolver
|
||||
</screen>
|
||||
<para>The <parameter>-x</parameter> class is used to read source documents,
|
||||
the <parameter>-y</parameter> class is used to read stylesheets.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>XP</term>
|
||||
<listitem><para>To use XP, simply use the included
|
||||
<literal>org.apache.xml.xp.xml.sax.Driver</literal> class instead of
|
||||
the default XP driver.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>XT</term>
|
||||
<listitem><para>Similarly, for XT, use the
|
||||
<literal>org.apache.xml.xt.xsl.sax.Driver</literal> class.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Adding Catalog Support to Your Applications</title>
|
||||
|
||||
<para>If you work with Java applications using a parser that supports
|
||||
the SAX1 <literal>Parser</literal> interface or the SAX2
|
||||
<literal>XMLReader</literal> interface, adding Catalog support to your
|
||||
applications is a snap. The SAX interfaces
|
||||
include an <literal>entityResolver</literal> hook designed to provide
|
||||
an application with an opportunity to do this sort of indirection. The
|
||||
Resolver classes implements the full
|
||||
OASIS Catalog semantics and provide an appropriate class that
|
||||
implements the SAX <literal>entityResolver</literal> interface.</para>
|
||||
|
||||
<para>All you have to do is setup a
|
||||
<literal>org.apache.xml.resolver.tools.CatalogResolver</literal>
|
||||
on your parser's <literal>entityResolver</literal> hook. The code listing
|
||||
in <xref linkend="ex1"/> demonstrates how straightforward this is:</para>
|
||||
|
||||
<example id="ex1">
|
||||
<title>Adding a CatalogResolver to Your Parser</title>
|
||||
<programlisting>import org.apache.xml.resolver.tools.CatalogResolver;
|
||||
...
|
||||
CatalogResolver cr = new CatalogResolver();
|
||||
...
|
||||
yourParser.setEntityResolver(cr)
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<para>The system catalogs are loaded from the
|
||||
<filename>CatalogManager.properties</filename> file on your
|
||||
<envar>CLASSPATH</envar>.
|
||||
(For all the
|
||||
gory details about these classes, consult <ulink url="apidocs/index.html">the
|
||||
API documentation</ulink>.) You can explicitly parse your own catalogs (perhaps
|
||||
taken from command line arguments or a Preferences dialog) instead of or in
|
||||
addition to the system catalogs.</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Catalogs In Action</title>
|
||||
|
||||
<para>The Resolver distribution includes a couple of test programs,
|
||||
<command>resolver</command> and <command>xparse</command>,
|
||||
that you can use to see how this all works.</para>
|
||||
|
||||
<section>
|
||||
<title>Using <command>resolver</command></title>
|
||||
|
||||
<para>The <command>resolver</command> application simply performs a
|
||||
catalog lookup and returns the result. Given the following catalog:</para>
|
||||
|
||||
<example id="ex.catalog.xml"><title>An Example XML Catalog File</title>
|
||||
<programlisting><![CDATA[<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
|
||||
|
||||
<public publicId="-//Example//DTD Example V1.0//EN"
|
||||
uri="example.dtd"/>
|
||||
|
||||
</catalog>]]></programlisting>
|
||||
</example>
|
||||
|
||||
<para>A demonstration of public identifier resolution can be achieved
|
||||
like this:</para>
|
||||
|
||||
<example id="ex.resolver"><title>Resolving Identifiers</title>
|
||||
<screen>$ java org.apache.xml.resolver.apps.resolver -d 2 -c example/catalog.xml \
|
||||
-p "-//Example//DTD Example V1.0//EN" public
|
||||
Loading catalog: ./catalog
|
||||
Loading catalog: /share/doctypes/catalog
|
||||
Resolve PUBLIC (publicid, systemid):
|
||||
public id: -//Example//DTD Example V1.0//EN
|
||||
Loading catalog: file:/share/doctypes/entities.cat
|
||||
Loading catalog: /share/doctypes/xcatalog
|
||||
Loading catalog: example/catalog.xml
|
||||
Result: file:/share/documents/articles/sun/2001/01-resolver/example/example.dtd
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
</section>
|
||||
<section>
|
||||
<title>Using <command>xparse</command></title>
|
||||
|
||||
<para>The
|
||||
<command>xparse</command> command simply sets up a catalog resolver
|
||||
and then parses a document. Any external entities encountered during
|
||||
the parse are resolved appropriately using the catalogs
|
||||
provided.</para>
|
||||
|
||||
<para>In order to use the program, you must have the
|
||||
<filename>resolver.jar</filename> file on your
|
||||
<envar>CLASSPATH</envar> and you must be using <ulink
|
||||
url="http://java.sun.com/xml/">JAXP</ulink>. In the examples that
|
||||
follow, I've already got these files on my
|
||||
<envar>CLASSPATH</envar>.</para>
|
||||
|
||||
<para>The file we'll be parsing is shown in <xref linkend="ex.example.xml"/>.
|
||||
</para>
|
||||
|
||||
<example id="ex.example.xml"><title>An xparse Example File</title>
|
||||
<programlisting><![CDATA[<!DOCTYPE example PUBLIC "-//Example//DTD Example V1.0//EN"
|
||||
"file:///dev/this/does/not/exist/example.dtd">
|
||||
<example>
|
||||
<p>This is just a trivial example.</p>
|
||||
</example>]]></programlisting>
|
||||
</example>
|
||||
|
||||
<para>First let's look at what happens if you try to parse this
|
||||
document without any catalogs. For this example, I deleted the
|
||||
<literal>catalogs</literal> entry on my
|
||||
<filename>CatalogManager.properties</filename> file. As expected,
|
||||
the parse fails:</para>
|
||||
|
||||
<example id="ex.nocat.sh"><title>Parsing Without a Catalog</title>
|
||||
<screen>$ java org.apache.xml.resolver.apps.xparse -d 2 example.xml
|
||||
Attempting validating, namespace-aware parse
|
||||
Fatal error:example.xml:2:External entity not found:
|
||||
"file:///dev/this/does/not/exist/example.dtd".
|
||||
Parse failed with 1 error and no warnings.</screen>
|
||||
</example>
|
||||
|
||||
<para>With an appropriate catalog file, we can map the public identifier
|
||||
to a local copy of the DTD. We could have mapped the system identifier
|
||||
instead (or as well), but the public identifier is probably more stable.
|
||||
</para>
|
||||
|
||||
<para>Using a command-line option to specify the catalog, I can now
|
||||
successfully parse the document:</para>
|
||||
|
||||
<example id="ex.withcat.sh"><title>Parsing With a Catalog</title>
|
||||
<screen>$ java org.apache.xml.resolver.apps.xparse -d 2 -c catalog.xml example.xml
|
||||
Loading catalog: catalog.xml
|
||||
Attempting validating, namespace-aware parse
|
||||
Resolved public: -//Example//DTD Example V1.0//EN
|
||||
file:/share/documents/articles/sun/2001/01-resolver/example/example.dtd
|
||||
Parse succeeded (0.32) with no errors and no warnings.
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<para>The additional messages in each of these examples arise as a
|
||||
consequence of the debugging option, <replaceable>-d 2</replaceable>.
|
||||
In practice, you can make resolution silent.</para>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>May All Your Names Resolve Successfully!</title>
|
||||
|
||||
<para>We hope that these classes become a standard part of your
|
||||
toolkit. Incorporating this code allows you to utilize public
|
||||
identifiers in XML documents with the confidence that you will be
|
||||
able to move those documents from one system to another and around the
|
||||
Web.</para>
|
||||
</section>
|
||||
</article>
|
||||
@ -1,74 +0,0 @@
|
||||
<!DOCTYPE article
|
||||
PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
<article>
|
||||
<articleinfo>
|
||||
<title>org.apache.xml.resolver Release Notes</title>
|
||||
<subtitle>Version 1.1 CVS</subtitle>
|
||||
<pubdate>13 Nov 2002</pubdate>
|
||||
<releaseinfo role="meta">$Id$
|
||||
</releaseinfo>
|
||||
|
||||
<author><firstname>Norman</firstname><surname>Walsh</surname>
|
||||
<affiliation>
|
||||
<jobtitle>Staff Engineer</jobtitle>
|
||||
<orgname>Sun Microsystems, XML Technology Center</orgname>
|
||||
</affiliation>
|
||||
<authorblurb>
|
||||
<para>Sun Microsystems supports Norm's active participation in a
|
||||
number of standards efforts worldwide, including the Technical
|
||||
Architecture Group, XML Core, and XSL Working Groups of the World Wide
|
||||
Web Consortium, the OASIS RELAX NG Committee,
|
||||
the Entity Resolution Committee, for which he is the editor, and
|
||||
the DocBook Technical Committee, which he chairs.</para>
|
||||
</authorblurb>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder>Sun Microsystems, Inc.</holder>
|
||||
</copyright>
|
||||
</articleinfo>
|
||||
|
||||
<para>This document offers a brief summary of what has changed in the
|
||||
Resolver package since the 1.0 release. I expect it'll be updated a few times
|
||||
before the next release.</para>
|
||||
|
||||
<section>
|
||||
<title>The <classname>CatalogManager</classname> Is No Longer Static</title>
|
||||
|
||||
<para>The most pervasive change is that the <classname>CatalogManager</classname>
|
||||
class is no longer static. It's now possible to instantiate several catalog
|
||||
managers and each manager can manage several catalogs.</para>
|
||||
|
||||
<para>There is still a single static instance of the
|
||||
<classname>CatalogManager</classname>, available via
|
||||
<methodname>getStaticManager()</methodname>. This is used by default
|
||||
if no other catalog manager is instantiated and used. It behaves as
|
||||
the old static one used to.</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>System Catalogs Are Always Loaded</title>
|
||||
|
||||
<para>In the previous version, the system catalogs were not loaded if
|
||||
a private catalog was requested. That has changed; the system catalogs are now
|
||||
always loaded.</para>
|
||||
|
||||
<para>If you want to avoid loading any system catalogs, establish your own
|
||||
<classname>CatalogManager</classname> and use the
|
||||
<methodname>setCatalogsFiles()</methodname> method to assure that no system
|
||||
catalogs are available.</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Tests/Examples Available</title>
|
||||
|
||||
<para>There are several tests in the <filename>tests/resolver</filename> directory
|
||||
that demonstrate how different instantiations can be used.</para>
|
||||
|
||||
</section>
|
||||
|
||||
</article>
|
||||
@ -1,34 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
|
||||
<document>
|
||||
<header>
|
||||
<title>Resolver</title>
|
||||
<authors>
|
||||
<person name="Norman Walsh" email="ndw@apache.org"/>
|
||||
</authors>
|
||||
</header>
|
||||
<body>
|
||||
<anchor id="overview"/>
|
||||
<section>
|
||||
<title>Overview</title>
|
||||
<p>See the current set of resolver docs ...
|
||||
<code>xml-commons/java/docs/resolver.xml</code>
|
||||
and <code>xml-commons/java/docs/release-notes.xml</code>
|
||||
</p>
|
||||
<fixme author="curcuru">Need to either update existing resolver docs to
|
||||
use forrest or provide a stylesheet to translate it (it uses Docbook since
|
||||
ndw used that). Also need to either move docs or provide correct links
|
||||
to the resolver-specific docs.
|
||||
</fixme>
|
||||
<p>
|
||||
Here is experimental (2002-12-20) rendering of those docs with Forrest and DocBook XSL ...
|
||||
</p>
|
||||
<ul>
|
||||
<li><link href="resolver-article.html">resolver-article.html</link></li>
|
||||
<li><link href="resolver-release-notes.html">resolver-release-notes.html</link></li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</document>
|
||||
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
|
||||
<document>
|
||||
<header>
|
||||
<title>Which</title>
|
||||
<authors>
|
||||
<person name="Shane Curcuru" email="curcuru@apache.org"/>
|
||||
</authors>
|
||||
</header>
|
||||
<body>
|
||||
<anchor id="overview"/>
|
||||
<section>
|
||||
<title>Overview</title>
|
||||
<p>
|
||||
Which is a simple environment checking utility that focuses on reporting the versions of
|
||||
various XML interfaces and some common Apache projects.
|
||||
</p>
|
||||
<p>Currently, most of the documentation about Which is in it's Javadoc, which you can
|
||||
build via <code>build docs</code>.</p>
|
||||
<fixme author="curcuru">Still need to write overview and user guide docs, as well
|
||||
as guidelines for creating WhichProject implementations and best practices about
|
||||
how to use Which for customer support or automated tools.
|
||||
</fixme>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</document>
|
||||
Loading…
x
Reference in New Issue
Block a user