Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

XML Namespaces for DSpace

Introduction

Any application that makes up its own XML elements should have its own namespace (or namespaces) for them, especially if the XML it emits might possibly get merged with XML from other applications. See this W3C document on XML Namespaces for background if you are not familiar with the topic already.

Essentially, an XML namespace is identified by a unique URI. Every name in an XML object (e.g. element name, attribute name) can optionally have a namespace attached. If you create an XML schema for your application, apply your namespace to all the names that have to be globally unique. Sometimes you'll intentionally use names in other namespaces, e.g. xml:lang, but applying your own namespace to yor names prevents unintentional collisions.

Why does DSpace need a Namespace?

DSpace uses several XML documents and fragments of its own specification:

  • Extensions to WebDAV (such as properties) in the LightweightNetworkInterface
  • The XML schema for DspaceIntermediateMetadata
  • bitstream element for wrapping image data in LightweightNetworkInterface
  • Submit forms configuration file `input-forms.xml`
  • Initializers for the bitstream-format and DC-type registries, `bitstream-formats.xml` and `dublin-core-types.xml`.
  • The XML URI uses a name space and schema to represent an abstract DSpace page before being stylized by a theme.

To allow validation, each XML application with an XML Schema needs its own namespace, so we have to allow for multiple namespaces.

Proposed Implementation

A namespace is identified by a URI. This URI does not need to be valid or resolvable; it only has to conform to URI syntax. It does have to be stable, that is, once documented it MUST never change since it will get coded into many applications.

I propose this "base" URI for DSpace XML namespaces, since it is simple and builds on the domain name already associated with DSpace:

Panel

http://www.dspace.org/xmlns/dspace

This namespace is ONLY for XML fragments and extension elements to be embedded in other documents, such as in WebDAV extensions. These elements must not need a schema, or else they should be in a specific application namespace. Any DSpace XML application with a schema must take a namespace "under" the base, such as, for ''DSpace Intermediate Metadata'':

Panel

http://www.dspace.org/xmlns/dspace/dim

Examples

The recommended abbreviation for the base namespace is, of course, "dspace", so typical XML expressions would look like:

Code Block
xml
xml
<dspace:frobnitz xmlns:dspace="http://www.dspace.org/xmlns/dspace">
   ..some content..
</dspace:frobnitz>

A DIM record with a schema might look like this:

Code Block
xml
xml
<?xml version="1.0">
<dim:dim xmlns:dim="http://www.dspace.org/xmlns/dspace/dim"
         schemaLocation="http://www.dspace.org/xmlns/dspace/dim http://www.dspace.org/schema/dim.xsd">
   ..some content..
</dim:dim>

Note that the actual location of the schema is just a placeholder, although ideally schemas can be posted on the `dspace.org` website.

Questions? Opinions?

This page was posted to get feedback and approval for the idea of a single DSpace XML namespace, and for the proposed URI to identify it.

Are we going to publish a schema for this namespace? – Scott Phillips

XmlNamespaces 2fCwspaceImscp – Wiki subpage for CWSpace intended use of namespace in the imsmanifest.xml file for IMS ContentPackages, as used with DSpace: <manifest xmlns:cwsp="http://www.dspace.org/xmlns/cwspace_imscp"
– [WilliamReilly] March 3, 2006