OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] Global/Local attributes

[ Lists Home | Date Index | Thread Index ]

What is broken is the existence of a default namespace. Further mangling
Namespaces in XML to accomodate this mistake is unwise and borders on
foolishness. 

-- 
PITHY WORDS OF WISDOM 
Never be the boss' right hand man if he's left handed.   

This posting is provided "AS IS" with no warranties, and confers no
rights. 



> -----Original Message-----
> From: Seairth Jacobs [mailto:seairth@seairth.com] 
> Sent: Thursday, August 01, 2002 6:08 PM
> To: Uche Ogbuji; David Carlisle; xml-dev@lists.xml.org
> Subject: Re: [xml-dev] Global/Local attributes
> 
> 
> Since we are all getting confused and since we are proposing 
> a change in the way that certain attributes are handled when 
> namespaces are involved, how abou this...  Suppose the following XML:
> 
> <elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:attr1="" attr2="" />
>     <elem3 attr3="" />
> </elem1>
> 
> In the above, we know the following to be true according to 
> the current rec:
> 
> elem1 belongs to the default namespace 
> ("http://example.com/ns1";). elem2 belongs to the "x" 
> namespace (="http://example.com/ns2";). attr1 belongs to the 
> "x" namespace. attr2 belongs to no namespace at all. elem3 
> belongs to the default namespace. attr3  belongs to... 
> default namespace or no namespace?  ("Note that default 
> namespaces do not apply directly to attributes." [1])
> 
> According to the rec, I would have to say that "attr3" 
> belongs to no namespace.
> 
> Now, I hear what Simon has been saying.  And I know (I think) 
> that he is mostly talking about the instance where you could 
> have something like:
> 
> <elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:attr="" attr="" />
> </elem1>
> 
> However, I would think that in the case above that "attr2" 
> should belong to the default namespace, not the namespace 
> that "elem2" belongs to.  The reason for this is that there 
> is no other way to use attributes defined in the default 
> namespace.  If you want, you could have a fall-back rule that 
> says a non-prefixed attribute would belong to no namespace if 
> a default namespace is not defined.  However, I think a rule 
> like that would would reduce readability and be more error-prone.
> 
> 
> 
> So, how about the following instead:
> 
> <:elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:attr1="" attr2="" />
>     <:elem3 attr3="" />
>     <elem4 :attr4="" />
> </:elem1>
> 
> elem1 belongs to the default namespace.
> elem2 belongs to the "x" namespace.
> attr1 belongs to the "x" namespace.
> attr2 belongs to no namespace.
> elem3 belongs to the default namespace.
> attr3  belongs to no namespace.
> elem4 belongs to no namespace.
> attr4 belongs to the default namespace.
> 
> 
> At this point, everything is explicit, even the use of 
> elements and attributes in the default namespace.  I agree 
> that this still means that "attr2" does not belong to the 
> namespace of "elem2".  However, I think it's fair to say that 
> there may be a valid reason for this construct.  For 
> instance, someone might want to augment an existing namespace 
> locally.  In fact, we tend to refer to elements/attributes 
> that are not in a namespace to be global.  In reality they 
> are only global to that document, while they are actually 
> local in the sense of namespaces.
> 
> Now, if you look back at:
> 
> <elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:attr="" attr="" />
> </elem1>
> 
> the question is: does this help the situation where the 
> "attr" localname is used more than once in the same element?  
> To me, the answer is yes.  Someone could look at:
> 
> <:elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:attr="" attr=""  :attr=""/>
> </:elem1>
> 
> and know exactly what each of the "attr" attributes belong 
> to.  Does it make for good readability?  I suppose that 
> depends on the actual instance... after all, you may have 
> something like the following:
> 
> <:elem1 xmlns="http://example.com/ns1"; 
> xmlns:x="http://example.com/ns2";>
>     <x:elem2 x:processelement="yes" processelement="no" 
> :processelement="yes"/> </:elem1>
> 
> Where "processelement" may be used to allow processors that 
> are aware of different namespaces to conditionally pay 
> attention to a certain element. In this case, a processor 
> that understood the "http://example.com/ns2"; namespace would 
> process "elem", a processor that understood these local 
> documents would not process "elem", and a processor that 
> understood the "http://example.com/ns1"; namespace would 
> process "elem".
> 
> A stronger example might be that namespace information is 
> added to a document in a pipeline such that the original 
> document is not fundamentally altered.  For instance, suppose 
> you had a stage that understood a specific document type.  
> Let's say that an element in the XML looks like:
> 
>     <price type="currency" separator="," decimal=".">1.00</price>
> 
> Now, the job of this stage is to preprocess the document and 
> add additional information that will be understood be a 
> future stage.  Now, the future stage is looking for specific 
> attribute names (which are local to the pipeline only).  Not 
> too surprisingly, those names are the same as those in the 
> original document.  As a result, the current stage qualifies 
> the current XML with a namespace to avoid confusion (yes, I 
> know you could do it the other way round if you have complete 
> control of the pipeling, but let's assume that you are only 
> responsible for writing this stage and have no choice about 
> what should ideally be given to the future stage).  So, when 
> this stage spits the XML out to the next stage, it looks like:
> 
>     <x:price xmlns:x="http://example.com/ns3"; 
> x:type="currency" x:separator="," x:decimal="." type="float" 
> decimal=".">1.00</price>
> 
> At this point, we have the same exact localname being used 
> more than once for very legitimate reasons (imho).  In fact, 
> I think this scenario is going to be increasingly likely as 
> we begin to pass our XML documents around and allow each 
> handler of the document to throw their own additional 
> elements and attributes into the mix.  By the time you 
> receive the document (after it has been passed all over the 
> place, been dropped on the floor a few times, and washed off 
> with flat soda water)...
> 
> Now wait... I think I have gone a bit off track here... so may just a
> summary:
> 
> 1) I propose the above change to the Namespace rec (in version 2?).
> 2) Assuming #1 comes about, then anything that is not 
> qualified belongs to the "global" local non-namespace.  
> Always.  Even if the same localname is used more than once in 
> the same element and one of the attributes is in that non-namespace.
> 
> 
> [1] http://www.w3.org/TR/1999/REC-xml-names-19990114/#defaulting
> 
> 
> ---
> Seairth Jacobs
> seairth@seairth.com
> 
> 
> 
> From: "Uche Ogbuji" <uche.ogbuji@fourthought.com>
> > > >
> > > > > Then according to the rule we're proposing, nothing 
> significant
> about
> > > > > the attribute has changed at all.  The namespace, 
> which is the 
> > > > > important matter, is the same.
> > > >
> > > > so now I'm confused. It seems to me you are proposing 
> that in the 
> > > > first, unprefixed, case the namespace of the attribute would be 
> > > > (or could be considered as) the namespace of the element 
> > > > (associated with the prefix x:) which is not the same as the 
> > > > current interpretation.
> > >
> > > You managed to spread your confusion to me, it seems.  By "the 
> > > current interpretation", do you mean XML Namespaces 1.0?
> >
> > Wait a minute.  I think (hope) the source of confusion just 
> occurred 
> > to
> me.
> >
> > I have used the term "global" in two ways in this thread.  
> At first I 
> > was using it according to its current definition in XMLNS 
> 1.0.  When 
> > we
> started to
> > discuss an alternative interpretation of unprefixed 
> attributes, my use 
> > of
> the
> > term actually changed to match my preference for the alternative.  
> > Rather
> than
> > using "global" to mean any prefixed attribute, I started using 
> > "global" to mean any attribute outside the namespace of its parent.
> >
> > If so, my fault.  It should have occurred to me that this would sow
> confusion.
> >  I'll try to be careful to use the term "foreign 
> attributes" to mean 
> > attributes in foreign namespace.  Of course, this puts me 
> at a slight 
> > disadvantage because one of my points has been that treating 
> > unprefixed
> attrs
> > as being in their parents' namespace would actually lead to a more 
> > logical following of the normal use of the term "global" in 
> > discussions of
> technical
> > scoping.
> 
> 
> 
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org 
> <http://www.xml.org>, an initiative of OASIS 
<http://www.oasis-open.org>

The list archives are at http://lists.xml.org/archives/xml-dev/

To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS