I'll just wade in here with my 2p. I agree that with the number of Ant based variants...maven, jelly etc... . and people embedding Ant inside their own applications that their is a need to avoid collision using namespace....in addition this will also allow intermixing of Ant with other xml vocabularies ( XSLT, etc.. ) that may process prior or after Ant processing, though in the example provided e.g. antcontrib ( or the proposes <antlib/> stuff library its more akin to the binding a function to a namespace as within xslt.
a few random and possibly not applicable comments; --------------------------------------------------------- 3rd party libraries that extend Ant e.g. antcontrib depends on Ant, they are not standalone xml vocabularies with its own processor...I see a mixing of using namespaces for avoiding collision versus using namespaces to 'bind' functionality a potential source of problems. What are the benefits ? XSLT has already gone through many of these type of issues...and my exp with the EXSLT effort suggests that you might want to come up with some clear use cases...otherwise users will just see namespaces as additional effort for little return. --------------------------------------------------------- I would suggest at least inheriting part of the URI to promote sanity with 3rd party libraries; note I add a mythical top level root element, as there might be a need of something like this as a general container element for ant...but this applies to <project/> as well. <build xmlns:ant="http:/ant.apache.org/ant/v1" xmlns:ac="http:/ant.apache.org/ant/antcontrib"> </build> this allows ant.apache.org to control the valid 3rd party namespaces, though of course the Ant developer / hacker would be allowed to determine completely seperate variants as proposed...as follows; <build xmlns:ant="http:/ant.apache.org/ant" xmlns:ac="http:/myversionof3rdpartylibrary.com/antcontrib"> </build> but once again this to me smacks of using namespace to bind functionality --------------------------------------------------------- as with all xml namespaces there is the issue of the default namespaces not applying to attribute names. That is unprefixed attributes have no explicit namespace, though they are assumed to be in the namespace of the element containing them. This means that choice A really is not an option; too much ambiguity with respect to attributes may cause problems. to address these as clearly as possible one would prefix all elements and attributes; <build xmlns:ant="http:/ant.apache.org/ant" xmlns:ac="http:/ant.apache.org/ant/antcontrib"> .... <ac:if> <ac:or> <ac:equals ac:arg1="a" ac:arg2="${x}"/> <ac:ispropertytrue ac:property="y"/> </ac:or> <ac:then> <ant:echo>both conditions are true</ant:echo> </ac:then> </ac:if> </build> admittedly most would argue that its alright to get away with not prefixing the attributes if the elements were prefixed. as u can see adding namespaces significantly reduces the readability of the markup...not to mention adds the burden of typing more...which is irrevelent if one is using an editor. So as much as I would like to be able to manipulate markup that uses 3rd party libraries ( such as antcontrib ), its probably important to allow users to just define a standard namespace for collision aspects. I think that the antlib effort needs to address these issues as well. --------------------------------------------------------- I would propose, to implement a set of conventions; - namespace aware Ant processing switch to turn on and off namespace processing - if namespace aware processing is on to include a switch for letting ant embed 3rd party libraries or to enable namespace processing of said 3rd party libraries...or use some clear uri naming schema to indicate choice - http URI should be used for identifying different ant namespaces, it gives clear readable information and points to at the very least a domain ( ant.apache.org ) that user can put into browser, maybe even define a RDDL document - if function binding is to be used with namespaces, e.g. as suggested with antlib, then I would suggest a bit of refactoring and just copy what XSLT does with binding for java function binding - what happens when certain functionality gets folded back into Ant...having the ability to explicitly state namespace is a good abstraction...though not sure about the internals of Ant of handling this... at the least its important to embed version information into the namespace uri e.g. http:/ant.apache.org/ant/v1 or http:/ant.apache.org/ant/2003 - if you are to gain the benefits of namespaces and are looking at using XML Schema in the future, I would suggest some considerable modeling with xml schema... to ensure what is being proposed across Ant with respect to namespaces jigs up with what is natural within XML Schema, though I am a relaxng man myself.... sorry about the random nature of this posting, also some of the points maybe ill informed or not relevent though I can see some definate parallels with what Ant wants to do and what XSLT has been through. cheers, Jim Fuller This e-mail and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you are not the intended recipient please contact the sender immediately. Any disclosure, copying, distribution or any other use of this communication is strictly prohibited and may be unlawful. Stuart Lawrence Marketing Communications Limited reserves the right to monitor and intercept communications for unlawful business purposes. This also confirms that this message has been swept for viruses, although Stuart Lawrence Marketing Communications Limited accepts no responsibility for any loss or damage resulting directly or indirectly from the use of this email or contents. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]