Maybe when using flaka already using :
<!-- Activate flaka for all ant tasks -->
<fl:install-property-handler/>
combined with :
#{ x * y}
will work for you somehow, didn't test it, as antcontrib is not installed on my machine.
The property handler allows to use EL expressions inside all ant tasks.
Here's a small example with a given file foo.xml, needs xmltask and flaka :
<whatever>
<sprite name="timer" path="img/folder1/img1.jpg" pos-x="25" pos-y="4" xref=""/>
<sprite name="timer1" offset-x="100" offset-y="10" path="img/folder1/img2.jpg" pos-x="26" pos-y="4" xref=""/>
<control name="timer2" offset-y="10" path="img/folder1/img2.jpg" pos-x="27" pos-y="4" size="100" xref=""/>
</whatever>
Editing foo.xml in place :
<project xmlns:fl="antlib:it.haefelinger.flaka">
<!-- Activate flaka for all ant tasks -->
<fl:install-property-handler/>
<!-- Import XMLTask -->
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<!-- get a list with all pos-x attribute values -->
<xmltask source="foo.xml">
<copy path="//whatever/*/@pos-x" append="true" propertySeparator="," property="posxlist"/>
</xmltask>
<echo>$${posxlist} => ${posxlist}</echo>
<fl:let>counter ::= 1</fl:let>
<!-- for loop with xmltask editing foo.xml in place => source = dest -->
<fl:for var="posx" in="split('${posxlist}', ',')">
<xmltask source="foo.xml" dest="foo.xml" report="true">
<!-- i.e. multiplicating value * 3 -->
<attr path="//whatever/*[${counter}]" attr="pos-x" value="#{posx * 3}"/>
</xmltask>
<fl:let>counter ::= '${counter}' + 1</fl:let>
</fl:for>
</project>
output :
[xmltask] Cannot append values to properties
[xmltask] Cannot append values to properties
[xmltask] Cannot append values to properties
[echo] ${posxlist} => 25,26,27
[xmltask] Document -->
[xmltask] <whatever>
[xmltask] <sprite name="timer" path="img/folder1/img1.jpg" pos-x="75" pos-y="4" xref=""/>
[xmltask] <sprite name="timer1" offset-x="100" offset-y="10" path="img/folder1/img2.jpg" pos-x="26" pos-y="4" xref=""/>
[xmltask] <control name="timer2" offset-y="10" path="img/folder1/img2.jpg" pos-x="27" pos-y="4" size="100" xref=""/>
[xmltask] </whatever>
[xmltask] Document <--
[xmltask] Document -->
[xmltask] <whatever>
[xmltask] <sprite name="timer" path="img/folder1/img1.jpg" pos-x="75" pos-y="4" xref=""/>
[xmltask] <sprite name="timer1" offset-x="100" offset-y="10" path="img/folder1/img2.jpg" pos-x="78" pos-y="4" xref=""/>
[xmltask] <control name="timer2" offset-y="10" path="img/folder1/img2.jpg" pos-x="27" pos-y="4" size="100" xref=""/>
[xmltask] </whatever>
[xmltask] Document <--
[xmltask] Document -->
[xmltask] <whatever>
[xmltask] <sprite name="timer" path="img/folder1/img1.jpg" pos-x="75" pos-y="4" xref=""/>
[xmltask] <sprite name="timer1" offset-x="100" offset-y="10" path="img/folder1/img2.jpg" pos-x="78" pos-y="4" xref=""/>
[xmltask] <control name="timer2" offset-y="10" path="img/folder1/img2.jpg" pos-x="81" pos-y="4" size="100" xref=""/>
[xmltask] </whatever>
[xmltask] Document <--
BUILD SUCCESSFUL
Total time: 826 milliseconds
the warning 'Cannot append values to properties' originates from com.oopsconsultancy.xmltask.CopyAction line 80 to underline that properties in ant are immutable and may safely be ignored - or even better delete it from source and rebuild xmltask.jar