[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Pay no attention to the URI behind the curtain


rss version 2.0 xmlns
Paul Prescod wrote:
> Joe Gregorio wrote:
> 
>> .... The
>> basic idea being that if the document is going to stand alone then no
>> namespace qualification is needed. If it is going to be combined or 
>> contained
>> in other vocablaries then the namespace is applied. For a concrete
>> example consider RSS 2.0[1], in which the native RSS elements reside 
>> in the nil
>> namespace:
>>
>>   <rss version="2.0">
>>      <channel>
>>          <title>...
> 
> 
> This could be written:
> 
>    <rss version="2.0" xmlns="http:../rss">
>       <channel>
>           <title>...
> 
> It is just a few more characters per document and NO prefixes.

Well there you go. It's cheap to produce an XML document with xmlns. 
I doubt it's so cheap to receive it. And in some cases, the prefixes 
are there anyway on the receiving end. But you know already know this.


> It also 
> makes the document more self-describing and provides a built-in link to 
> the documentation page. What's not to love?

Exactly how is this 'more self-describing'? And the built in link - 
well that's not what namespaces are for (explicitly so) and it's 
hardly the optimal way to associate documentation or semantics with 
an enumeration of names, given the overhead imposed elsewhere. 
Indeed it's possible that namespaces are fundamentally broken in 
both regards. What am I missing?


>> I have also run into such a need in other cases, for example
>> I have worked with a group that is, at best, namespace allergic.
> 
> 
> Anybody who is so namespace allergic that they cannot add a single 
> "xmlns" attribute to their document is, in my opinion, trying to make 
> life difficult for others, not trying to make life easy for themselves.

Nah, and quite the opposite, anybody who adds an xmlns attribute is 
making life easy for themselves, not others. I'm with Joe English, 
namespaces are simply the wrong side of the cost/benefit curve. My 
consistent  experience is that any theoretical savings in having XML 
elements masquerading as pseudo-URIs is amortized by having to 
manage the code that process against the namespace+prefix. In 
particular they screw up programmatic use of XPaths by stopping the 
XPaths being freestanding - of course you could argue that's XPath's 
fault for choosing to use devices of no semantic import in the 
syntax instead of the URIs actually present in the model. The again 
this:

  /soap:Envelope/soap:Header

is probably an easier sell than this:

/{http://schemas.xmlsoap.org/soap/envelope/}Envelope/{http://schemas.xmlsoap.org/soap/envelope/}Header

Until you give a cursory though about how best to manage the prefixes.

And the thing this is that namespace don't seem to convenience 
programmers at all - I understand this was a reason for inventing 
them. As a programmer, I ultimately don't want to have deal with 
namespaces because I don't want to have deal with the moral 
equivalent of pointers - you end up hacking out some kind of bizarro 
XML+classes vtable to manage the URI shortcodes.

The simple addition of an xmlns is a device for turning this:

<Envelope>
  <Header/>
    <Body>
       <rss version="2.0">
        <channel>
          <title>...

into this:

<{http://schemas.xmlsoap.org/soap/envelope/}Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  <{http://schemas.xmlsoap.org/soap/envelope/}Header/>
    <{http://schemas.xmlsoap.org/soap/envelope/}Body>
      <rss version="2.0">
        <channel>
          <title>...

what's to love about that? [but see below]


> An XML document should have either a DOCTYPE or a namespace declaration 
> to anchor itself in no global namespace. And even if you have a DOCTYPE 
> it can hardly hurt to have a single namespace attribute on the root 
> element (or perhaps defaulted from the DTD).

An XML document should be understandable by what's about to process 
it. I see no nothing to suugest namespaces and the consequent 
prefixing hack are beneficial in that regard.

In fact I'd rather work with this:

<{http://schemas.xmlsoap.org/soap/envelope/}Envelope 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  <{http://schemas.xmlsoap.org/soap/envelope/}Header/>
    <{http://schemas.xmlsoap.org/soap/envelope/}Body>
      <rss version="2.0">
        <channel>
          <title>..

than this:

<soap:Envelope  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  <soap:Header/>
    <soap:Body>
       <rss version="2.0">
        <channel>
          <title>...


at least it'd be clear what I was actually programming against 
(RDF), plus the vtables would thankfully be up in smoke.

Bill de hÓra



PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.