Well, I don't know what happened, but I tried dividing the xmltask into two again, and this time it worked. That was the last problem.
Thanks. For those watching, here's my current code: <target name="install-label-info"> <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" classpath="${file.reference.xmltask.jar}"/> <property name="label" value="abc"/> <property name="labelDesc" value="def"/> <xmltask source="${build.web.dir}/WEB-INF/web.xml" dest="${build.web.dir}/WEB-INF/web.xml" report="true"> <copy path="/:web-app/:description/text()" property="existingDescription"/> </xmltask> <xmltask source="${build.web.dir}/WEB-INF/web.xml" dest="${build.web.dir}/WEB-INF/web.xml" report="true"> <replace if="existingDescription" path="/:web-app/:description/text()" expandProperties="true" ><![CDATA[${existingDescription} - ${label}: ${labelDesc}]]></replace> <insert unless="existingDescription" path="/:web-app/child::node()[1]/." position="before"> <![CDATA[<description xmlns="http://java.sun.com/xml/ns/j2ee">${label}: ${labelDesc}</description>]]> </insert> <copy path="/:web-app/:description/text()" property="newDescription"/> </xmltask> <echo message="existingDescription[${existingDescription}]"/> <echo message="newDescription[${newDescription}]"/> </target> > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On > Behalf Of Brian Agnew > Sent: Friday, March 28, 2008 5:33 AM > To: Karr, David > Cc: xmltask-users@lists.sourceforge.net > Subject: Re: [Xmltask-users] Add text to web-app/description > if it's present > > Hi David - > > 1) I think the problem is that Ant properties are > derived/expanded per task. That is, populating a property > within XMLTask makes it available for use in another task, > but not the current one. I'm not able to investigate further > at the moment, but copying into your property in one XMLTask > invocation then writing using another one appears to work. e.g. > > <xmltask source="web.xml"> > <copy path="..." property="..."/> > <xmltask> > <xmltask source="web.xml" dest="web-out.xml"> > <paste.../> > > etc. appears to work for the below. > > 2) Can you clarify your 'last child' comment below ? <paste> > is a synonym for <insert> and does have some positional > control (under/before/after). > But I'm not sure that's your problem. > > 3) Can you clarify your 'trim' comment below ? Sounds like a > possible feature if I'm interpreting you correctly. > > nb. your XPaths may be simplified by using > > /:web-app/:description > > rather than the verbose but correct 'local-name()' syntax > (caveat: not tried - just by inspection). > > Hope that's of use. Please let me know how you get on... > > Brian > > On Thu, March 27, 2008 23:56, Karr, David wrote: > > It's been a while since I've xmltasked. I'm having some trouble > > getting done what I need. > > > > I have some text in a couple properties (I'm hardcoding the > values for > > now) that I want to put into the "/web-app/description" > element of a > > web.xml file. If the element is already present, I want to add the > > new text after " - ". If the element wasn't present, then > create the > > element with the new text. > > > > I have two current problems: > > > > If the "description" element was present already, it's supposed to > > insert a value referencing the property containing the > existing value. > > Instead of the value of the property, it just inserts > > "${existingDescription}". I tried printing out the property value > > after the xmltask tag, and it appears to be fine. > > > > If the "description" element was NOT present, I insert the new > > "description" element (using that weird trick just talked about for > > turning off insertion of empty "xmlns" attributes), but it > inserts it > > as the last child of "web-app", not the first. I don't see > a way to > > do this cleanly. > > > > I also wish there was a cleaner way to "trim" the resulting output > > (see what I had to do in the first "replace"). > > > > Here's my current code: > > --------------------- > > <target name="install-label-info"> > > <taskdef name="xmltask" > > classname="com.oopsconsultancy.xmltask.ant.XmlTask" > > classpath="${file.reference.xmltask.jar}"/> > > <property name="label" value="abc"/> > > <property name="labelDesc" value="def"/> > > <xmltask source="${build.web.dir}/WEB-INF/web.xml" > > dest="${build.web.dir}/WEB-INF/web.xml" report="true"> > > <copy > > > path="/*[local-name()='web-app']/*[local-name()='description']/text()" > > property="existingDescription"/> > > <replace if="existingDescription" > > > path="/*[local-name()='web-app']/*[local-name()='description']/text()" > > expandProperties="true" > > ><![CDATA[${existingDescription} - ${label}: > > ${labelDesc}]]></replace> > > <paste unless="existingDescription" > > path="/*[local-name()='web-app']/."> > > <![CDATA[<description > > xmlns="http://java.sun.com/xml/ns/j2ee">${label}: > > ${labelDesc}</description>]]> > > </paste> > > <copy > > > path="/*[local-name()='web-app']/*[local-name()='description']/text()" > > property="newDescription"/> > > </xmltask> > > <echo > message="existingDescription[${existingDescription}]"/> > > <echo message="newDescription[${newDescription}]"/> > > </target> > > --------------------- > > > > > > > > > > > ---------------------------------------------------------------------- > > --- Check out the new SourceForge.net Marketplace. > > It's the best place to buy or sell services for just about anything > > Open Source. > > > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marke > > tplace _______________________________________________ > > Xmltask-users mailing list > > Xmltask-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/xmltask-users > > > > > -- > Brian Agnew http://www.oopsconsultancy.com > OOPS Consultancy Ltd > Tel: +44 (0)7720 397526 > Fax: +44 (0)20 8682 0012 > > > -------------------------------------------------------------- > ----------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for just about > anything Open Source. > http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.n et/marketplace > _______________________________________________ > Xmltask-users mailing list > Xmltask-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/xmltask-users > ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Xmltask-users mailing list Xmltask-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xmltask-users