[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Namespace: what's the correct usage?
- From: Jonathan Borden <jborden@mediaone.net>
- To: Jeff Rafter <jeffrafter@earthlink.net>, xml-dev@lists.xml.org
- Date: Mon, 21 May 2001 19:12:19 -0400
Jeff Rafter wrote:
>
> 1) I think Martin's example is perfectly legal wrt to XML Schemas and XML
> Namespaces.
no is arguing that Martin has broken any laws (except perhaps running afoul
of Okam's razor)
> Moreover, I think (coming from an implementation of XML Schemas
> POV) it actually makes a ton of sense.
really why? it seems to be plain confusing. why use both qualified and
unqualified elements in a structure? why make the structure more
complicated?
> 2) That being said-- the first time I stumbled onto a sample such as
> Martin's-- I thought, "Whoa-- that is an error..." only an hour later did
I
> learn it was valid. Only a month or two later did I understand why it was
> good. Qualified names are much more easy to understand and program for
> (from experience) whereas unqualified names *are* dependent on context and
> declaration. Being dependent on declaration means that each instance
*must*
> be processed by a schema validator to obtain PSVI wrt namespace uris
(unless
> the exception of xmlns='' is presumed a priori). For example:
the qualification or lack thereof of an element name means absolutely
nothing in and of itself regarding context dependence. at the most basic
level a qualified name is simply a qualified name. an element with a
qualified name is no less nor more an element.
i suppose every instance must be processed by a schema validator to obtain a
true "PSVI" -- otherwise it would simply be an "I".
>
> <root xmlns="http://foo">
> <name>
> <mandatory-title-element/>
> </name>
> <p:person xmlns:p='urn:x2' >
> <name>Martin</name>
> <age>33</age>
> </p:person>
> </root>
>
> Without the use of xmlns='' this get's ugly in a hurry. There is
definitely
> an ambiguity introduced for <name>. From the instance one can imagine
that
> <name> is declared in both the http://foo and urn:x2 namespaces. So which
> namespace is the "Martin" element actually in? It get's confusing-- it is
> either part of the default namespace (though this is very hard to declare
in
> actuality)
nothing changes the rules of XML 1.0 and XML namespaces. In your example
_each_ <name> element is qualified by the http://foo namespace. none are
prefixed.
> or it is an unqualified element from the urn:x2 namespace (which
> is the more correct assumption).
there is no such thing as an "unqualified element from the urn:x2
namespace". doesn't exist.
this example, and your analysis of it are proof that this construct is
confusing. it is _genuinely_ confusing. i say "let's keep life as simple as
possible"
>
> 3) I think for the reasons stated above qualified is the "easiest"
practice
> (and therefore best?). While I concede Martin's point about package
details
> and Java representation-- it seems simple enough to relent and utilize a
> default namespace in that case (which I have done with some success)
>
> <person xmlns='urn:x2' >
> <name>Martin</name>
> <age>33</age>
> </person>
I agree, (aside from the fact that urn:x2 is not a 'legal' URI)
http://example.org is defined by an RFC to be used as an example URI.
-Jonathan