A Ten-Minute Guide to XML Namespaces
Let’s examine the motivations behind XML namespaces. The first motivation is to have namespaces replace the formal public identifier (FPI), an inheritance from SGML. These identifiers provide a way to identify which vocabulary , or set of names, is being used in a document. The XML/SGML way of identifying the vocabulary used in our library would be to add a public identifier to the document type declaration such as:
<?xml version="1.0"?> <!DOCTYPE library PUBLIC "-//ERICVANDERVLIST//DTD for library//EN" "library.dtd"/> <library> ... </library>
This DOCTYPE
declaration contains an FPI
(-//ERICVANDERVLIST//DTD
for
library//EN
) and the location of the DTD
describing the vocabulary (library.dtd
). XML
requires that the DOCTYPE
declaration always provide a
SYSTEM
identifier—a
location—when a
PUBLIC
identifier is used, though
PUBLIC
identifiers aren’t
required when SYSTEM
identifiers are used. The
creators of XML 1.0 didn’t want to require parsers
to include the tools (typically XML catalog processing) for resolving
formal public identifiers to addresses, but they kept the option
open. Because the DOCTYPE
declaration provides the
parser with identification of the DTD rather than the identification
of the abstract set of names, this approach is generally sensible.
The first goal of XML namespaces is to provide identifiers for the abstract notions of vocabularies and namespaces without linking these identifiers directly to the technical implementations ...
Get RELAX NG now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.