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