Are there standard namespaces that don't need URIs?

  • Thread starter Grant Robertson
  • Start date
G

Grant Robertson

As I am learning about XML I seen that xmlns is used with a colon after
it as if it were a namespace itself. However, I have never seen a URI
given for it. Is "xmlns" a sort of predefined word in that all XML
software just knows what it means without it needing a URI?

Are there any more of these special words that need no definition within
any schema? I know there are other special words like "element" and
"targetNamespace" but these seem to be defined within the XML Schema
schema definition. It seems that only "xmlns" must be known before
anything else can be known.

Am I totally missing the boat on this or what?
 
M

Martin Honnen

Grant said:
As I am learning about XML I seen that xmlns is used with a colon after
it as if it were a namespace itself. However, I have never seen a URI
given for it. Is "xmlns" a sort of predefined word in that all XML
software just knows what it means without it needing a URI?

The relevant specification is the "Namespaces in XML 1.0" specificaton:
<http://www.w3.org/TR/xml-names/>
You will see that <http://www.w3.org/TR/xml-names/#ns-decl> reserves a
family of attributes for namespace declaration, namely either 'xmlns' or
a qualified name beginning with 'xmlns:'.
<element xmlns="http://example.com/ns1">
is a default namespace declaration.
So any namespace aware XML parser "knows" the meaning of xmlns and
xmlns:some-prefix attributes as declaring XML namespaces.
 
E

Eric Amick

As I am learning about XML I seen that xmlns is used with a colon after
it as if it were a namespace itself. However, I have never seen a URI
given for it. Is "xmlns" a sort of predefined word in that all XML
software just knows what it means without it needing a URI?

Are there any more of these special words that need no definition within
any schema? I know there are other special words like "element" and
"targetNamespace" but these seem to be defined within the XML Schema
schema definition. It seems that only "xmlns" must be known before
anything else can be known.

xmlns is a namespace prefix, not a namespace; namespaces are identified
by a URI. Anyway, the xmlns prefix is associated with the URI
http://www.w3.org/2000/xmlns/, and the namespace standard forbids any
other prefix from being associated with that URI. You can get all the
details, including a description of other reserved prefixes, from the
standard at http://www.w3.org/TR/2006/REC-xml-names-20060816/.
 
D

Dimitre Novatchev

Grant Robertson said:
As I am learning about XML I seen that xmlns is used with a colon after
it as if it were a namespace itself. However, I have never seen a URI
given for it. Is "xmlns" a sort of predefined word in that all XML
software just knows what it means without it needing a URI?

Are there any more of these special words that need no definition within
any schema? I know there are other special words like "element" and
"targetNamespace" but these seem to be defined within the XML Schema
schema definition. It seems that only "xmlns" must be known before
anything else can be known.

Am I totally missing the boat on this or what?

First of all, any namespace "needs" (has) a namespace-uri. What you are
asking here is not namespaces that don't have uri-s, but *reserved
prefixes*, that must always be associated with specific namespace-uri-s

There are two such reserved prefixes (xml and xmlns) and they are listed in
the Namespaces specification
(http://www.w3.org/TR/xml-names/#sec-namespaces):

"Namespace constraint: Reserved Prefixes and Namespace Names
The prefix xml is by definition bound to the namespace name
http://www.w3.org/XML/1998/namespace. It MAY, but need not, be declared, and
MUST NOT be bound to any other namespace name. Other prefixes MUST NOT be
bound to this namespace name, and it MUST NOT be declared as the default
namespace.

The prefix xmlns is used only to declare namespace bindings and is by
definition bound to the namespace name http://www.w3.org/2000/xmlns/. It
MUST NOT be declared . Other prefixes MUST NOT be bound to this namespace
name, and it MUST NOT be declared as the default namespace. Element names
MUST NOT have the prefix xmlns.

All other prefixes beginning with the three-letter sequence x, m, l, in any
case combination, are reserved. This means that:

a.. users SHOULD NOT use them except as defined by later specifications

b.. processors MUST NOT treat them as fatal errors.

Though they are not themselves reserved, it is inadvisable to use prefixed
names whose LocalPart begins with the letters x, m, l, in any case
combination, as these names would be reserved if used without a prefix. "

So, when using a global attribute like xml:space, one doesn't need to define
the prefix "xml" -- it is known to the parser.



Cheers,

Dimitre Novatchev
 
R

Richard Tobin

Grant Robertson said:
Is "xmlns" a sort of predefined word in that all XML
software just knows what it means without it needing a URI?

That's the right way to look at it; xmlns is part of the syntax.
There *is* a URI associated with it, which you don't need to declare
(and indeed mustn't) but you can ignore it for most purposes.

The only other prefix that doesn't need to be declared is "xml", as
used in xml:space, xml:lang, xml:base.

-- Richard
 
G

Grant Robertson

Thanks everyone! I always get the best, right to the point, answers in
this newsgroup. It is such a relief from trying to get any straight
answers in any Microsoft newsgroup.

No matter how many times I go over it I keep forgetting that the prefix
is just a local shorthand within the XML document for the actual
namespace which is the URI. I see the prefix with the colon after it and
think I am seeing a namespace name. Hopefully once I learn enough to
start designing my schema and actual work with XML files more than just
looking at examples, then I will get it through my head.

Thanks again.
 
U

usenet

Thanks everyone! I always get the best, right to the point, answers in
this newsgroup. It is such a relief from trying to get any straight
answers in any Microsoft newsgroup.

No matter how many times I go over it I keep forgetting that the prefix
is just a local shorthand within the XML document for the actual
namespace which is the URI. I see the prefix with the colon after it and
think I am seeing a namespace name. Hopefully once I learn enough to
start designing my schema and actual work with XML files more than just
looking at examples, then I will get it through my head.

Thanks again.

Hi Grant,
It looks like you pretty much understand the namespace thing and just
need more practice. However, just in case a alternative way of
looking at it might be helpful, you might find the approach used by
James Clark on the following page useful:

http://www.jclark.com/xml/xmlns.htm

Perhaps more for the benefit of others that happen to drift this way
in future looking for answers, the most concise description of XML
namespaces I've found so far is:

http://atmanes.blogspot.com/2006/07/short-explanation-of-xml-namespaces.html

Cheers,

Pete.
--
=============================================
Pete Cordell
Tech-Know-Ware Ltd
for XML to C++ data binding visit
http://www.tech-know-ware.com/lmx
(or http://www.xml2cpp.com)
=============================================
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,007
Messages
2,570,266
Members
46,865
Latest member
AveryHamme

Latest Threads

Top