What is a namespace ... really?

david at megginson.com david at megginson.com
Fri Jan 15 14:16:43 GMT 1999


Roger L. Costello writes:

 > I thought I knew what a namespace was ... but now I think perhaps I
 > don't.

It's simpler than you think.

 > Suppose that I create a DTD (BookCatalogue.dtd).  In this DTD I
 > define some elements, attributes, entities, etc.  I define the
 > relationships between the elements, attributes, etc.  I place
 > BookCatalogue.dtd in a directory:
 > 
 > file://localhost/xml-course/xml-part1/BookCatalogue.dtd
 > 
 > Is this a namespace?  

It's a namespace URI (in this case, a URL).

 > That is, is the file itself (BookCatalogue.dtd) a namespace?

No -- it's irrelevant as far as the current namespaces REC is
concerned.

 > In all the examples that I see in the namespace spec they don't
 > refer to a specific file.  Instead, they refer to "some place",
 > such as:
 > 
 > http://www.w3.org/TR/HTML/

Not a place, just a unique URI.  The URI doesn't actually have to work 
(a URI that throws up a 404 is just fine).

 > So, perhaps the "directory" that BookCatalogue.dtd resides in is the
 > namespace? i.e.,
 > 
 > file://localhost/xml-course/xml-part1/

No.

 > I thought I knew the way, now I don't.  Help me find my way again.

A namespace is very similar to a package name in Java -- it's just a
way of disambiguating names.  Consider

  package com.megginson.xml;

  class XMLNamespace {
    // [...]
  }

This does not guarantee that if you enter the URL
http://xml.megginson.com/ into Netscape, something will happen;
however, by virtue of the fact that my company owns the megginson.com
domain, I can guarantee that no one else can (or should) be able to
use this package name, so there is no chance of my classes getting
confused with someone else's.

Likewise, consider

  <?xml version="1.0"?>

  <ph:phone-list xmlns:ph="http://www.megginson.com/ns/phone">
   <ph:entry>
    <ph:name>Megginson Technologies Ltd.</ph:name>
    <ph:number>+1 613 722 8770</ph:number>
   </ph:entry>
  </ph:phone-list>

This does not guarantee that if you enter the URL
http://www.megginson.com/ns/phone into Netscape, something useful will 
happen; however, by virtue of the fact that my company owns the
megginson.com domain, I can guarantee that no one else can (or should) 
be able to use this namespace URI, so there is no chance of my element 
type names getting confused with someone else's.


All the best,


David

-- 
David Megginson                 david at megginson.com
           http://www.megginson.com/

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list