On Sunday 27 April 2003 22:14, Wannheden, Knut wrote:
> > Or even:
> > <antelope:if xmlns:antelope="antlib:${ant-contrib.jar}" />
>
> That syntax abuses the purpose of XML Namespaces, IMO. Although a
> namespace is identified by an URI, I don't think attaching semantics to it
> is correct.
I am no expert in xml ns usage (my only experiance with xml is ant
and home made configuration files), however I think that attaching sematics
is exactly the purpose of the xmlns:<name>="" attribute.
> Also, would ProjectHelper2 (using SAX2) resolve property
> references in namespace declarations?
The (new) NS handling code could do this
> Questionable whether that should be
> allowed, no? IMHO it is cleaner to require explicit loading (maybe even
> unloading) of antlibs using a task like <antlib/>. That would better
> correspond to how <taskdef/> works. But nevertheless, I think it's a good
> idea to associate a namespace with every antlib.
This should be left up the to build script author. Usage of antlib should
be backwardly compatible so that:
<antlib file="${ant-contrib.jar}"/>
should be the same as:
<typedef resource="net/sf/antcontrib/antcontrib.properties">
<classpath path="${ant-contrib.jar}"/>
</typedef>
> If the antlib defines a
> namespace to use in its descriptor (e.g. "antlib:antelope" for antlib
> "antelope") then loading an antlib could be as simple as:
>
> <antlib resource="${antelope.jar}"/>
> <if xmlns="antlib:antelope"/>
The problem here is antelope may be "antelope-1.20.jar".
>
> but maybe the buildfile author wants/needs to specify the namespace URI
> (anything really), in which case an additional "ns" attribute could be
> used:
>
> <antlib resource="${foo.jar}" ns="urn:antlib:foo"/>
> <foo:bar xmlns:foo="urn:antlib:foo"/>
This is fine.
<antlib file="${ant-contrib.jar}" ns="antlib:antcontrib"/>
<antcontrib:if xmlns:antcontrib ="antlib:antcontrib"....>
<target xmlns:antcontrib="antlib:antcontrib" name="compile">
<antcontrib:propertycopy .../>
</target>
Cheers,
Peter