> From: Wannheden, Knut [mailto:[EMAIL PROTECTED]
>
> > I have no problem on allowing people to use namespaces, but I do
> > have a problem on forcing people to use them just because
> some others
> > want to use some fancy XML tool. The buildfile belongs to the
> > user and s/he should be in charge.
> >
>
> As someone already said, it's about "not reinventing the
> wheel", not about
> enabling the use of fancy tools. But as ubiquitous and
> accepted as XML
> namespaces are, I see many things that could be gained from using
> namespaces. Also, I suspect most users familiar with XML
> will have had some
> dose of contact with namespaces.
>
But ANT is not for experience XML users but for Java programmers
or C or .NET (with the new tasks). ANT is popular because
it is simple to use you do not have construccions that require
you to read a full spec to understand. I am not against NS, but
I am against forcing people to use them just because.
> > > Also namespaces lets the antlib user specify what prefix to
> > > use. But it
> > > doesn't allow two antlibs to use the same prefix in the
> > > context of the same
> > > element, which I think is good.
> > >
> >
> > This sounds proper in theory, but in practice lets see:
> >
> > 1) Lets assume that we still want to be able to chop ANT jars
> > between core and different optional jars which have specific
> > dependencies of diferent packages and such.
> >
> > 2) Now because they are in different antlibs it would mean I am
> > forced to use different namespaces for each.
> >
>
> Is that really so? As I understood it antlibs wouldn't be a
> requirement for
> providing Ant tasks and types. I thought the normal <taskdef/> and
> <typedef/> would still work as they do now.
>
So again you have a two tier world where some things are more core
than others. Me as a library provider need to decide now whether
to ship my library with a property file so that it can be incorporated
seemingly into ANT namespace or use an XML definition and force
my users to learn NS. Hummmm
> I suppose it would also be possible to let one antlib extend
> another one,
> thus letting it use the same namespace.
>
The suggestion I was critisazing was that of having "one ANTlib one URI"
> > 3) So now you have people using 3rd party tasks like antcontrib
> > without problem and without conflicts, but they would have to
> > change not just one line (to use the antlib) but every bloddy
> > use of the tasks just because they are forced to use
> name spaces.
> >
>
> To use antcontrib as an antlib they would at the very least
> have to replace
> the <taskdef/>s with an <antlib/> element or something, no?
> But the tasks
> should still work as they do now using <taskdef/>.
>
So not the antlib writer will have to provide both an XML descriptor
AND a properties file? How about all the fancy typing?
> > > If you really want you can use short names with namespaces as
> > > well. Just
> > > set the default namespace locally.
> > >
> >
> > I have no problem using XML namespaces as long as they are
> independent
> > of the antlib and under complete user control (not antlib
> > designer control).
> > In other words the user should be able to decide if s/he
> wants to load
> > the library on some particular namespace or in the default ""
> > namespace
> > which is the one used by core.
> >
> > So if I say:
> >
> > <antlib location="antcontrib.jar"/>
> >
> > I will be able to use: <if/>, <switch/>, etc. But is I do:
> >
> > <project xmlns:cont="mylibs">
> > <antlib location="antcontrib.jar" usens="cont"/>
> >
> > </project>
> >
> > then I can use <cont:if/>, <cont:switch/>, etc.
> >
>
> I think the <antlib/> shouldn't define the prefix, but the
> namespace URI
> instead . Something like:
>
> <project xmlns:cont="urn:uri-supplied-by-ant-user">
> <antlib location="antcontrib.jar"
> ns="urn:uri-supplied-by-ant-user"/>
> <cont:if/>
> </project>
>
I thing this is what I meant (in escense), with the understanding
that:
a) the user can use the same URI on several <antlib>s
(any conflicts are his problem)
b) the default value for the ns attribute is ns="".
> Of course if the antlib would provide its own namespace in
> the descriptor.
> Ant could do some kind of automatic loading when a namespace
> declaration
> matching the namespace URI is encountered. But I'm not sure
> that's a good
> idea.
>
Agreed it is not good idea.
> > Which means that the default value for the 'usens' attribute
> > is "" which assumes
> > some implicit namespace definitions like:
> >
> > xmlns="ant-namespace" and probably xmlns:ant="ant-namespace"
> >
> > which uses as kosher namespaces as possible, I think.
> >
>
> But this would require that the <project/> element would
> define the default
> namespace like this:
>
> <project xmlns="ant-namespace">
> ...
> </project>
>
> Why not use the empty namespace for Ant core?
>
Fine with me.
Jose Alberto