> From: Peter Reilly [mailto:[EMAIL PROTECTED]
> >wouldn't this here work?
> >
> ><macrodef name="example">
> > <element name="files" implicit="yes"/>
> > <sequential>
> > <task xmlns="URI-for-prefix-x">
> > <files/>
> > <task>
> > <copy todir="z">
> > <files/>
> > </copy>
> > </sequential>
> ></macrodef>
> no (in ant 1.6.1) see:
> http://marc.theaimsgroup.com/?l=ant-dev&m=107763945224538&w=2
>
> >A nested element discovered by reflection is looked up in
> >
> >(1) the task's namespace
> >
> >(2) the namespace associated with Ant's core, no matter what the
> >prefix of Ant's core may currently be and no matter what the default
> >namespace currently is.
> >
> >And (2) would only kick in if (1) fails.
> >
> >I could support this proposal.
> Excellent!
Cool! I've been waiting for that ;-)
Not really, since I was lucky enough I could substitute <bm:lsync> with
<sync>, thus my <sources> macrodef element was used in tasks from the
default Ant NS. I'd like to be able to reuse such a macrodef element in
tasks from different namespaces tough (in the same macro of course).
Peter, why wouldn't Stefan alternate solution work? I don't think I
followed.
I have another XML NS weirdness in Ant I'd like to report, before I
completely forget it (I meant to report it earlier...) It's coming from the
same "compile" macro of the other problem. Here's the definition:
<!--
* Define the <compile> macro...
* @attr jaxb whether to run the jaxb schema compiler
* @elem schemas patternset/selector of XML schemas for <jaxb>
* Must be part of the "antlib:com.lgc.buildmagic" namespace.
-->
<macrodef name="compile">
...
<attribute name="jaxb" default="false" />
<element name="schemas" optional="true" />
<sequential>
<!-- Compile the XML schemas into Java code, if any -->
<mkdir dir="build/generated/@{name}" />
<bm:jaxb destDir="build/generated/@{name}" ifTrue="@{jaxb}"
readOnly="true" strictValidation="true"
xjcjar="tools/jwsdp-1.1/jaxb-1.0/lib/jaxb-xjc.jar">
<bm:schemas dir="src">
<schemas/>
</bm:schemas>
...
</bm:jaxb>
</sequential>
</macrodef>
The weirdness (at least to me), comes when you try to use this macro,
because as the comment above warns, you must NS qualify the <schemas> macro
element at the point of use:
<compile name="dsp-core" jaxb="true" ...>
<schemas xmlns="antlib:com.lgc.buildmagic">
<include name="com/lgc/infra/persistence/**/doc-files/*.xsd" />
</schemas>
</compile>
So according to XML rules, <schemas> in the macrodef has no NS, while you
*must* use the proper NS when you use the macro, otherwise it doesn't work.
I find this confusing.
Would your patch solve this too?
BTW, note the 'jaxb' macro attribute, and the ifTrue="@{jaxb}", and
jaxb="true" nodes. I already reported that I wished to be able to infer
whether to perform a given task when a particular macro element exists.
Thanks, --DD
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]