commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <>
Subject Re: [jelly] XML element nesting out of order
Date Wed, 13 Nov 2002 19:35:16 GMT
Hi Matthew

From: "J. Matthew Pryor" <>
> James,
> I really appreciate all your help; I am making good progress. I took out
> my default namespace and that unblocked me for now.
> This time I have another issue and I am not sure if the fault is mine or
> not
> Here is my goal:
>     <jj:goal name="update-version">
>       <x:parse var="feature" xml="feature.xml"/>
>       <x:element name="feature">
>         <x:forEach select="$feature/feature/@*">
>             <x:set var="thename" select="local-name()"/>
>             <x:set var="thevalue" select="string()"/>
>             <j:choose>
>                 <j:when test="${thename == 'version'}">
>                     <x:attribute name="${thename}">2.2.2</x:attribute>
>                 </j:when>
>                 <j:otherwise>
>                     <x:attribute
> name="${thename}">${thevalue}</x:attribute>
>                 </j:otherwise>
>             </j:choose>
>         </x:forEach>
>         <x:copyOf trim="false" select="$feature/feature/*[local-name()
> != 'plugin']"/>
>       </x:element>
>     </jj:goal>
> And here is the abbreviated result:
> update-version:
> <description>
>       Versata Business Logic Design Suite
>    </description><copyright>
>       Copyright (c) 2002 Versata, inc. All Rights Reserved
>    </copyright><license>
>       Empty License Agreement
>    </license>
> <url>
>    <update label="Versata Business Logic Plugin"
> url="">
> </update>
>    </url>
> <feature id=""
> label="" version="2.2.2"
> provider-name="Versata, In
> c." os="win32" ws="win32" nl="en" arch="x86" primary="true"></feature>
> Total time:  3 seconds
> So I succeeded in updating the version number, but for some reason, the
> <feature/> element does not contain the other sub-elements
> I nested the Jelly code to copy yhe sub-elemtns inside an <x:element/>
> tag in the script, but perhaps I am misinterpreting the tags
> TIA for any more help you can provide.

I had a sneaky feeling you might hit this current limitation before I got
chance to fix it :-). The code had a limitation that it didn't handle too
well child content being output inside the <x:element>. So it couldn't
handle nested <x:element> tags with <x:attribute> tags inside.

I've fixed this issue in CVS and there's a new Jelly snapshot containing the

There is a limitation you should be careful of. You shouldn't output any
text content before all the attributes have been defined. (This avoids
having to buffer up the entire contents of the <x:element> tag before the
attributes are output.

So this is fine..

<x:element name="foo">
    <x:attribute name="something" value="whatever"/>
    some text...

        <x:element  name="bar" value="1234"/>

however this will generate an exception

<x:element name="foo">
    some text
    <x:attribute name="x" value="1234"/>

I've added a new JellyUnit test case to test both nesting of elements with
attributes and that the above does indeed throw an exception.


Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message