- From: Aaron Reed <aaronr@us.ibm.com>
- Date: Mon, 24 Jul 2006 18:53:54 -0500
- To: www-forms@w3.org
Hi,
I've got a follow-up question. Since it seems I have a decent grip on
how things should work, I was wondering what happens not only of the
nodeset is empty, but what if the parent node of the nodeset doesn't exist.
Assume that I have this in my form:
<xf:instance id="instance1" xmlns="">
<instanceData>
<muppets/>
</instanceData>
</xf:instance>
<xf:instance id="template">
<templates>
<name>beginner muppet</name>
</templates>
</xf:instance>
....
<xf:group ref="instance('instance1')">
<xf:trigger ref="muppets">
<xf:label>trigger label</xf:label>
<xf:insert nodeset="muppet/name" origin="instance('template')/name"/>
</xf:trigger>
</xf:group>
You can see that there is no muppets/muppet directory, so where does the
clone of instance('template')/name get put?
1)Does it go underneath the insert context node? In this case would it
get put under muppets?
2) Or does the processor create a muppet directory and then insert name
underneath it?
From my interpretation of the spec, I'd think that the answer is #1,
but I'd also think, logically speaking, that if I do an insert into an
empty nodeset and it is successful then the previously empty nodeset
should no longer be empty.
Any clarification appreciated.
Thanks,
--Aaron
Erik Bruchez wrote:
>
> Aaron Reed wrote:
>>
>> Hi,
>>
>> As a suggestion for the XForms 1.1 spec, for the section on the insert
>> action, I'd suggest a few more 'after' examples. We can see the
>> 'before' instance data, but we don't see the 'after' instance data
>> after the action has occurred.
>>
>> Also, it is not immediately apparent to me after reading this section
>> and the examples what the context node is for evaluating @nodeset. It
>> should be the context node of the insert action UNLESS @context is
>> there and then it is relevant to that node? Do I have that right?
>> And the context node for @context, is the context node for the insert
>> action?
>
> Yes, I think this has been clarified a little in the latest internal
> drafts. The idea is that @context evaluates as you expect, i.e. in the
> context of the action element, and then @context actually _replaces_ the
> context for that action element, which means that @nodeset and @origin
> evaluate now within the context created by @context.
>
> There is a thought of extending the use of @context to all action
> elements, but this probably won't make it into 1.1, so for now @context
> is usable only on xforms:insert and xforms:delete.
>
>>
>> so for:
>>
>> <xf:model id="mymodel">
>> <xf:instance id="instance0" xmlns="">
>> ...
>> </xf:instance>
>> <xf:instance id="instance1" xmlns="">
>> <instanceData>
>> <muppets>
>> <muppet>
>> <name>Kermit the Frog</name>
>> <description>stage manager</description>
>> <description>frog</description>
>> </muppet>
>> <muppet>
>> <name>Swedish Chef</name>
>> <description>Swedish</description>
>> <description>chef</description>
>> <description>wears a hat</description>
>> </muppet>
>> <muppet>
>> <name>Animal</name>
>> </muppet>
>> </muppets>
>> </instanceData>
>> </xf:instance>
>> <xf:instance id="template">
>> <templates>
>> <description>main character</description>
>> <description>secondary chardescription>
>> </templates>
>> </xf:instance>
>> </xf:model>
>>
>> ....
>>
>> <xf:group ref="instance('instance1')/instanceData">
>> <xf:trigger ref="muppets/muppet">
>> <xf:label>trigger label</xf:label>
>> <xf:insert context="../muppet[2]" nodeset="description[3]"
>> origin="instance('template')/description[2]" position="before"/>
>> </xf:trigger>
>> </xf:group>
>>
>> Would activating this trigger leave us with this?
>>
>> <xf:instance id="instance1" xmlns="">
>> <instanceData>
>> <muppets>
>> <muppet>
>> <name>Kermit the Frog</name>
>> <description>stage manager</description>
>> <description>frog</description>
>> </muppet>
>> <muppet>
>> <name>Swedish Chef</name>
>> <description>Swedish</description>
>> <description>chef</description>
>> *** <description>secondary character</description> ***
>> <description>wears a hat</description>
>> </muppet>
>> <muppet>
>> <name>Animal</name>
>> </muppet>
>> </muppets>
>> </instanceData>
>> </xf:instance>
>>
>> If I my understanding about evaluation contexts is wrong above, then
>> what would happen?
>
> Note that you have two errors in your code above. Replace:
>
> <xf:group ref="instance('instance1')/instanceData">
>
> with:
>
> <xf:group ref="instance('instance1')">
>
> You are also missing an ev:event attribute on your action:
>
> <xforms:insert ev:event="DOMActivate" ...
>
> With these changes, you result will be exactly as you say, and it works
> exactly like that in Orbeon PresentationServer.
>
> -Erik
>
Received on Monday, 24 July 2006 23:56:42 UTC