<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html">
  <style type="text/css"></style>
<!--
TD {font-family: Verdana,Arial,Helvetica}
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
H1 {font-family: Verdana,Arial,Helvetica}
H2 {font-family: Verdana,Arial,Helvetica}
H3 {font-family: Verdana,Arial,Helvetica}
A:link, A:visited, A:active { text-decoration: underline }
  </style>
-->
  <title>XML resources publication guidelines</title>
</head>

<body bgcolor="#fffacd" text="#000000">
<h1 align="center">XML resources publication guidelines</h1>

<p></p>

<p>The goal of this document is to provide a set of guidelines and tips
helping the publication and deployment of <a
href="http://www.w3.org/XML/">XML</a> resources for the <a
href="http://www.gnome.org/">GNOME project</a>. However it is not tied to
GNOME and might be helpful more generally. I welcome <a
href="mailto:veillard@redhat.com">feedback</a> on this document.</p>

<p>The intended audience is the software developers who started using XML
for some of the resources of their project, as a storage format, for data
exchange, checking or transformations. There have been an increasing number
of new XML formats defined, but not all steps have been taken, possibly because of
lack of documentation, to truly gain all the benefits of the use of XML.
These guidelines hope to improve the matter and provide a better overview of
the overall XML processing and associated steps needed to deploy it
successfully:</p>

<p>Table of contents:</p>
<ol>
  <li><a href="#Design">Design guidelines</a></li>
  <li><a href="#Canonical">Canonical URL</a></li>
  <li><a href="#Catalog">Catalog setup</a></li>
  <li><a href="#Package">Package integration</a></li>
</ol>

<h2><a name="Design">Design guidelines</a></h2>

<p>This part intends to focus on the format itself of XML. It may  arrive
a bit too late since the structure of the document may already be cast in
existing and deployed code. Still, here are a few rules which might be helpful
when designing a new XML vocabulary or making the revision of an existing
format:</p>

<h3>Reuse existing formats:</h3>

<p>This may sounds a bit simplistic, but before designing your own format,
try to lookup existing XML vocabularies on similar data. Ideally this allows
you to reuse them, in which case a lot of the existing tools like DTD, schemas
and stylesheets may already be available. If you are looking at a
documentation format, <a href="http://www.docbook.org/">DocBook</a> should
handle your needs. If reuse is not possible because some semantic or use case
aspects are too different this will be helpful avoiding design errors like
targeting the vocabulary to the wrong abstraction level. In this format
design phase try to be synthetic and be sure to express the real content of
your data and use the XML structure to express the semantic and context of
those data.</p>

<h3>DTD rules:</h3>

<p>Building a DTD (Document Type Definition) or a Schema describing the
structure allowed by instances is the core of the design process of the
vocabulary. Here are a few tips:</p>
<ul>
  <li>use significant words for the element and attributes names.</li>
  <li>do not use attributes for general textual content, attributes
    will be modified by the parser before reaching the application,
    spaces and line informations will be modified.</li>
  <li>use single elements for every string that might be subject to
    localization. The canonical way to localize XML content is to use
    siblings element carrying different xml:lang attributes like in the
    following:
    <pre>&lt;welcome&gt;
  &lt;msg xml:lang="en"&gt;hello&lt;/msg&gt;
  &lt;msg xml:lang="fr"&gt;bonjour&lt;/msg&gt;
&lt;/welcome&gt;</pre>
  </li>
  <li>use attributes to refine the content of an element but avoid them for
    more complex tasks, attribute parsing is not cheaper than an element and
    it is far easier to make an element content more complex while attribute
    will have to remain very simple.</li>
</ul>

<h3>Versioning:</h3>

<p>As part of the design, make sure the structure you define will be usable
for future extension that you may not consider for the current version. There
are two parts to this:</p>
<ul>
  <li>Make sure the instance contains a version number which will allow to
    make backward compatibility easy. Something as simple as having a
    <code>version="1.0"</code> on the root document of the instance is
    sufficient.</li>
  <li>While designing the code doing the analysis of the data provided by the
    XML parser, make sure you can work with unknown versions, generate a UI
    warning and process only the tags recognized by your version but keep in
    mind that you should not break on unknown elements if the version
    attribute was not in the recognized set.</li>
</ul>

<h3>Other design parts:</h3>

<p>While defining you vocabulary, try to think in term of other usage of your
data, for example how using XSLT stylesheets could be used to make an HTML
view of your data, or to convert it into a different format. Checking XML
Schemas and looking at defining an XML Schema with a more complete
validation and datatyping of your data structures is important, this helps
avoiding some mistakes in the design phase.</p>

<h3>Namespace:</h3>

<p>If you expect your XML vocabulary to be used or recognized outside of your
application (for example binding a specific processing from a graphic shell
like Nautilus to an instance of your data) then you should really define an <a
href="http://www.w3.org/TR/REC-xml-names/">XML namespace</a> for your
vocabulary. A namespace name is an URL (absolute URI more precisely). It is
generally recommended to anchor it as an HTTP resource to a server associated
with the software project. See the next section about this. In practice this
will mean that XML parsers will not handle your element names as-is but as a
couple based on the namespace name and the element name. This allows it to
recognize and disambiguate processing. Unicity of the namespace name can be
for the most part guaranteed by the use of the DNS registry. Namespace can
also be used to carry versioning information like:</p>

<p><code>"http://www.gnome.org/project/projectname/1.0/"</code></p>

<p>An easy way to use them is to make them the default namespace on the
root element of the XML instance like:</p>
<pre>&lt;structure xmlns="http://www.gnome.org/project/projectname/1.0/"&gt;
  &lt;data&gt;
  ...
  &lt;/data&gt;
&lt;/structure&gt;</pre>

<p>In that document, structure and all descendant elements like data are in
the given namespace.</p>

<h2><a name="Canonical">Canonical URL</a></h2>

<p>As seen in the previous namespace section, while XML processing is not
tied to the Web there is a natural synergy between both. XML was designed to
be available on the Web, and keeping the infrastructure that way helps
deploying the XML resources. The core of this issue is the notion of
"Canonical URL" of an XML resource. The resource can be an XML document, a
DTD, a stylesheet, a schema, or even non-XML data associated with an XML
resource, the canonical URL is the URL where the "master" copy of that
resource is expected to be present on the Web. Usually when processing XML a
copy of the resource will be present on the local disk, maybe in
/usr/share/xml or /usr/share/sgml maybe in /opt or even on C:\projectname\
(horror !). The key point is that the way to name that resource should be
independent of the actual place where it resides on disk if it is available,
and the fact that the processing will still work if there is no local copy
(and that the machine where the processing is connected to the Internet).</p>

<p>What this really means is that one should never use the local name of a
resource to reference it but always use the canonical URL. For example in a
DocBook instance the following should not be used:</p>
<pre>&lt;!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"<br>


                         "/usr/share/xml/docbook/4.2/docbookx.dtd"&gt;</pre>

<p>But always reference the canonical URL for the DTD:</p>
<pre>&lt;!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"<br>


                         "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"&gt;   </pre>

<p>Similarly, the document instance may reference the <a
href="http://www.w3.org/TR/xslt">XSLT</a> stylesheets needed to process it to
generate HTML, and the canonical URL should be used:</p>
<pre>&lt;?xml-stylesheet
  href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"
  type="text/xsl"?&gt;</pre>

<p>Defining the canonical URL for the resources needed should obey a few
simple rules similar to those used to design namespace names:</p>
<ul>
  <li>use a DNS name you know is associated to the project and will be
    available on the long term</li>
  <li>within that server space, reserve the right to the subtree where you
    intend to keep those data</li>
  <li>version the URL so that multiple concurrent versions of the resources
    can be hosted simultaneously</li>
</ul>

<h2><a name="Catalog">Catalog setup</a></h2>

<h3>How catalogs work:</h3>

<p>The catalogs are the technical mechanism which allow the XML processing
tools to use a local copy of the resources if it is available even if the
instance document references the canonical URL. <a
href="http://www.oasis-open.org/committees/entity/">XML Catalogs</a> are
anchored in the root catalog (usually <code>/etc/xml/catalog</code> or
defined by the user). They are a tree of XML documents defining the mappings
between the canonical naming space and the local installed ones, this can be
seen as a static cache structure.</p>

<p>When the XML processor is asked to process a resource it will
automatically test for a locally available version in the catalog, starting
from the root catalog, and possibly fetching sub-catalog resources until it
finds that the catalog has that resource or not. If not the default
processing of fetching the resource from the Web is done, allowing in most
case to recover from a catalog miss. The key point is that the document
instances are totally independent of the availability of a catalog or from
the actual place where the local resource they reference may be installed.
This greatly improves the management of the documents in the long run, making
them independent of the platform or toolchain used to process them. The
figure below tries to express that  mechanism:<img src="catalog.gif"
alt="Picture describing the catalog "></p>

<h3>Usual catalog setup:</h3>

<p>Usually catalogs for a project are setup as a 2 level hierarchical cache,
the root catalog containing only "delegates" indicating a separate subcatalog
dedicated to the project. The goal is to keep the root catalog clean and
simplify the maintenance of the catalog by using separate catalogs per
project. For example when creating a catalog for the <a
href="http://www.w3.org/TR/xhtml1">XHTML1</a> DTDs, only 3 items are added to
the root catalog:</p>
<pre>  &lt;delegatePublic publicIdStartString="-//W3C//DTD XHTML 1.0"
                  catalog="file:///usr/share/sgml/xhtml1/xmlcatalog"/&gt;
  &lt;delegateSystem systemIdStartString="http://www.w3.org/TR/xhtml1/DTD"
                  catalog="file:///usr/share/sgml/xhtml1/xmlcatalog"/&gt;
  &lt;delegateURI uriStartString="http://www.w3.org/TR/xhtml1/DTD"
                  catalog="file:///usr/share/sgml/xhtml1/xmlcatalog"/&gt;</pre>

<p>They are all "delegates" meaning that if the catalog system is asked to
resolve a reference corresponding to them, it has to lookup a sub catalog.
Here the subcatalog was installed as
<code>/usr/share/sgml/xhtml1/xmlcatalog</code> in the local tree. That
decision is left to the sysadmin or the packager for that system and may
obey different rules, but the actual place on the filesystem (or on a
resource cache on the local network) will not influence the processing as
long as it is available. The first rule indicate that if the reference uses a
PUBLIC identifier beginning with the</p>

<p><code>"-//W3C//DTD XHTML 1.0"</code></p>

<p>substring, then the catalog lookup should be limited to the specific given
lookup catalog. Similarly the second and third entries indicate those
delegation rules for SYSTEM, DOCTYPE or normal URI references when the URL
starts with the <code>"http://www.w3.org/TR/xhtml1/DTD"</code> substring
which indicates the location on the W3C server where the XHTML1 resources are
stored. Those are the beginning of all Canonical URLs for XHTML1 resources.
Those three rules are sufficient in practice to capture all references to XHTML1
resources and direct the processing tools to the right subcatalog.</p>

<h3>A subcatalog example:</h3>

<p>Here is the complete subcatalog used for XHTML1:</p>
<pre>&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN"
          "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"&gt;
&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
  &lt;public publicId="-//W3C//DTD XHTML 1.0 Strict//EN"
          uri="xhtml1-20020801/DTD/xhtml1-strict.dtd"/&gt;
  &lt;public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
          uri="xhtml1-20020801/DTD/xhtml1-transitional.dtd"/&gt;
  &lt;public publicId="-//W3C//DTD XHTML 1.0 Frameset//EN"
          uri="xhtml1-20020801/DTD/xhtml1-frameset.dtd"/&gt;
  &lt;rewriteSystem systemIdStartString="http://www.w3.org/TR/xhtml1/DTD"
          rewritePrefix="xhtml1-20020801/DTD"/&gt;
  &lt;rewriteURI uriStartString="http://www.w3.org/TR/xhtml1/DTD"
          rewritePrefix="xhtml1-20020801/DTD"/&gt;
&lt;/catalog&gt;</pre>

<p>There are a few things to notice:</p>
<ul>
  <li>this is an XML resource, it points to the DTD using Canonical URLs, the
    root element defines a namespace (but based on an URN not an HTTP
  URL).</li>
  <li>it contains 5 rules, the 3 first ones are direct mapping for the 3
    PUBLIC identifiers defined by the XHTML1 specification and associating
    them with the local resource containing the DTD, the 2 last ones are
    rewrite rules allowing to build the local filename for any URL based on
    "http://www.w3.org/TR/xhtml1/DTD", the local cache simplifies the rules by
    keeping the same structure as the on-line server at the Canonical URL</li>
  <li>the local resources are designated using URI references (the uri or
    rewritePrefix attributes), the base being the containing sub-catalog URL,
    which means that in practice the copy of the XHTML1 strict DTD is stored
    locally in
    <code>/usr/share/sgml/xhtml1/xmlcatalog/xhtml1-20020801/DTD/xhtml1-strict.dtd</code></li>
</ul>

<p>Those 5 rules are sufficient to cover all references to the resources held
at the Canonical URL for the XHTML1 DTDs.</p>

<h2><a name="Package">Package integration</a></h2>

<p>Creating and removing catalogs should be handled as part of the process of
(un)installing the local copy of the resources. The catalog files being XML
resources should be processed with XML based tools to avoid problems with the
generated files, the xmlcatalog command coming with libxml2 allows you to create
catalogs, and add or remove rules at that time. Here is a complete example
coming from the RPM for the XHTML1 DTDs post install script. While this example
is platform and packaging specific, this can be useful as a an example in
other contexts:</p>
<pre>%post
CATALOG=/usr/share/sgml/xhtml1/xmlcatalog
#
# Register it in the super catalog with the appropriate delegates
#
ROOTCATALOG=/etc/xml/catalog

if [ ! -r $ROOTCATALOG ]
then
    /usr/bin/xmlcatalog --noout --create $ROOTCATALOG
fi

if [ -w $ROOTCATALOG ]
then
        /usr/bin/xmlcatalog --noout --add "delegatePublic" \
                "-//W3C//DTD XHTML 1.0" \
                "file://$CATALOG" $ROOTCATALOG
        /usr/bin/xmlcatalog --noout --add "delegateSystem" \
                "http://www.w3.org/TR/xhtml1/DTD" \
                "file://$CATALOG" $ROOTCATALOG
        /usr/bin/xmlcatalog --noout --add "delegateURI" \
                "http://www.w3.org/TR/xhtml1/DTD" \
                "file://$CATALOG" $ROOTCATALOG
fi</pre>

<p>The XHTML1 subcatalog is not created on-the-fly in that case, it is
installed as part of the files of the packages. So the only work needed is to
make sure the root catalog exists and register the delegate rules.</p>

<p>Similarly, the script for the post-uninstall just remove the rules from the
catalog:</p>
<pre>%postun
#
# On removal, unregister the xmlcatalog from the supercatalog
#
if [ "$1" = 0 ]; then
    CATALOG=/usr/share/sgml/xhtml1/xmlcatalog
    ROOTCATALOG=/etc/xml/catalog

    if [ -w $ROOTCATALOG ]
    then
            /usr/bin/xmlcatalog --noout --del \
                    "-//W3C//DTD XHTML 1.0" $ROOTCATALOG
            /usr/bin/xmlcatalog --noout --del \
                    "http://www.w3.org/TR/xhtml1/DTD" $ROOTCATALOG
            /usr/bin/xmlcatalog --noout --del \
                    "http://www.w3.org/TR/xhtml1/DTD" $ROOTCATALOG
    fi
fi</pre>

<p>Note the test against $1, this is needed to not remove the delegate rules
in case of upgrade of the package.</p>

<p>Following the set of guidelines and tips provided in this document should
help deploy the XML resources in the GNOME framework without much pain and
ensure a smooth evolution of the resource and instances.</p>

<p><a href="mailto:veillard@redhat.com">Daniel Veillard</a></p>

<p>$Id$</p>

<p></p>
</body>
</html>
