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: [email protected]
> 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
> > [email protected]
> > 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/xmltask-users