Hi all,

Declaring the default namespace in the document element will only help when
you are building the object structure through a builder. But this will not
happen if you create the object structure programmatically.

So one option to these kinds of things and to many of the others is to have
a global namespace table per model. 
This is being considered during current OM clean up process. 

I can remember once Alek proposed something like this long time back. 

Any suggestions on this ??

-- Chinthaka 

> -----Original Message-----
> From: jayachandra [mailto:[EMAIL PROTECTED]
> Sent: Monday, April 18, 2005 1:01 PM
> To: [email protected]
> Cc: Ajith Ranabahu
> Subject: Re: [Axis2] OMElementImpl notes
> 
> Ajith! one entry at the document element namespace declaration is
> enough. But how can we do that, even the root element is created by
> builder just like any other OMElement only know. Am I missing
> something? Is there a way how factory can know if its creating an
> OMElement corresponding to root element.
> 
> Bye
> Jaya
> 
> On 4/18/05, Aleksander Slominski <[EMAIL PROTECTED]> wrote:
> > Ajith Ranabahu wrote:
> >
> > > Hi,
> > > Yes, having such a statement in the constructor will be the solution
> > > but personally i would like to see the namespace object coming through
> > > the factory.
> >
> > it should go through factory so namespaces can be reused to keep memory
> > usage low when namespace is the same in many elements/attributes.
> >
> > > Theoreticaly this namespace declaration should take place only in the
> > > root element! So the tweak can also be done in the builder, is it not
> ?
> >
> > actually there is no need to have it in hashmap at all as it is always
> > there so you can have it in your code ie.
> >
> > lookupNamespace(prefix) {
> >  if(prefix == "xml") {
> >     return "http://www.w3.org/XML/1998/namespace";
> >  } else if (hasmap != null) {
> >     uri = hashmap.get(prefix)
> >     if (uri != null) {
> >        return uri;
> >     } else if(parent != null){
> >        return parent.lookupNamespace(prefix)
> >     }
> >  }
> >  return null;
> > }
> >
> > this is good as it allows to delay creation of hashmap to time when
> > there is actual ns declaration to put into it.
> >
> > alek
> >
> > ps. in your declareNamespace(prefix, uri) make sure that user can not
> > redefine "xml" prefix ...
> >
> > >
> > >
> > > On 4/13/05, *jayachandra* <[EMAIL PROTECTED]
> > > <mailto:[EMAIL PROTECTED]>> wrote:
> > >
> > >     Sorry! the default uri for the prefix 'xml' should be
> > >     "http://www.w3.org/XML/1998/namespace"; and the line of code that
> > >     should be added in the constructor(s) of OMElementImpl is
> > >
> > >     declareNamespace( new
> > >     OMNamespaceImpl("http://www.w3.org/XML/1998/namespace";, "xml"));
> > >
> > >     Thanks
> > >     Jayachandra
> > >
> > >     On 4/13/05, jayachandra < [EMAIL PROTECTED]
> > >     <mailto:[EMAIL PROTECTED]>> wrote:
> > >     > Hi devs!
> > >     >
> > >     > In OMElementImpl the namespaces hashmap is initialized to null
> by
> > >     > default. This appears problematic. The XML-Infoset spec says
> > >     inscope
> > >     > namespace of an element info item must ALWAYS contain one entry
> for
> > >     > 'xml' prefix having the URI as "http://www.w3.org/2000/xmlns/";.
> > >     > (Refer to http://www.w3.org/TR/xml-infoset/#infoitem.element and
> > >     look
> > >     > for [in-scope namespaces] property )
> > >     >
> > >     > Because of this simple thing we are loosing out on a good number
> of
> > >     > xml test cases from oasis where 'xml:base' kind of entries are
> > >     > frivolously used without bothering to declare the namespce for
> xml
> > >     > prefix explicitly.
> > >     >
> > >     > The following simple additional line of code in the
> > >     constructor(s) of
> > >     > OMElementImpl should solve the issue and increase the XML test
> suite
> > >     > conformance lot more.
> > >     >
> > >     >    //By default entry for 'xml' prefix is always present as a
> > >     > in-scope namespace for every element
> > >     >    namespaces.put("xml", new
> > >     > OMNamespaceImpl("http://www.w3.org/XML/1998/namespace";, "xml"));
> > >     >
> > >     > Thank you,
> > >     > Jaya
> > >     > --
> > >     >
> > >
> > >     --
> > >     -- Jaya
> > >
> > >
> > >
> > >
> > > --
> > > Ajith Ranabahu
> >
> > --
> > The best way to predict the future is to invent it - Alan Kay
> >
> >
> 
> 
> --
> -- Jaya
> 



Reply via email to