Summary: This module explains how to use XML namespaces and DTDs to combine multiple XML languages in the same document.
XML allows you to
create documents in custom markup languages. But what if you
want to combine markup from multiple languages in the same
document? What if there are one or more tags that exist in both
languages, but with different meanings? You could, for example, have
a <table> tag in HTML and one
in a language describing office furniture as well. How do you
use these tags unambiguously, without losing functionality?
The solution is to use an extension to XML called
namespaces (See the W3C's recommendation, Namespaces in
XML). A namespace associates a unique global identifier
(usually a URI) with a particular set of tags and their usage
rules. To declare a namespace for a particular tag, set the
xmlns attribute to the value of the unique
identifier.
You can also define a namespace prefix for use in
your document. To do this, use a modified version of the
xmlns attribute. For example, you would
use the attribute
xmlns:foo="http://somewhere.org/foo" to
associate the prefix foo with the namespace
identifier http://somewhere.org/foo. You
can then indicate which tags come from that namespace by adding
the appropriate prefix to each tag. Thus, the
bar tag in foo's namespace would be written
as <foo:bar> and
</foo:bar>.
When you use the default namespace any children of that tag lacking an explicit prefix will be assumed to have come from the same namespace. This allows you to define a default namespace for all of the children of a tag. This is especially useful when used on the root node, which is the outermost tag in a document.
For CNXML 0.6 there is only one schema. The document tag will contain the namespace for all available languages and will look like this:
<document xmlns="http://cnx.rice.edu/cnxml"
xmlns:md="http://cnx.rice.edu/mdml/0.4"
xmlns:bib="http://bibtexml.sf.net/"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:q="http://cnx.rice.edu/qml/1.0"
id="new"
cnxml-version="0.6"
module-id="new">
"The canonical how-to guide to using Connexions."