ACTION-2197 - Send example of idref identification

All,

Following Steven's ACTION-2193 [1].

Let's consider the following repeat:

    <repeat ref="outer-iteration" id="outer-repeat">
        <input ref="outer-input" id="outer-input"/>
        <repeat ref="inner-iteration" id="inner-repeat">
            <input  ref="inner-input"  id="inner-input">
                <setfocus
                    event="xforms-value-changed"
                    control="inner-textarea"/>
            </input>
            <output ref="inner-textarea" id="inner-textarea"/>
        </repeat>
    </repeat>

And the following data:

    <data>
        <outer-iteration>
            <outer-input>o1</outer-input>
            <inner-iteration>
                <inner-input>o1i1</inner-input>
                <inner-textarea/>
            </inner-iteration>
            <inner-iteration>
                <inner-input>o1i2</inner-input>
                <inner-textarea/>
            </inner-iteration>
        </outer-iteration>
        <outer-iteration>
            <outer-input>o2</outer-input>
            <inner-iteration>
                <inner-input>o2i1</inner-input>
                <inner-textarea/>
            </inner-iteration>
            <inner-iteration>
                <inner-input>o2i2</inner-input>
                <inner-textarea/>
            </inner-iteration>
            <inner-iteration>
                <inner-input>o2i3</inner-input>
                <inner-textarea/>
            </inner-iteration>
        </outer-iteration>
    </data>

Now let's say that:

- The current index of `outer-repeat` is 1
- The current index of `inner-repeat` is 1
- By means of as separate `setvalue`, the value `o2i3` changes.

What should happen then? The event handler for `inner-input` at position
(2, 3) runs. That means the control in the second iteration of
`outer-repeat` and then the third iteration of the nested `inner-repeat`.

My understanding is that with XForms 1.1, [2] the `setfocus` targets the
`inner-textarea` at position (2, 3) as well. That is, the "closest"
control, as it is "in the same set of run-time objects that contains the
source object". This is how our implementation interprets the id resolution
too.

Now in this case, that control is *not* in any current repeat index. So
with Steven's proposed change, the `control` id reference would not reach
it, because it would only reach objects which are currently in the set of
controls selected by the repeat indexes, in this case (1, 1).

If the above is correct, it would follow that the proposed wording change
is not equivalent to the XForms 1.1 behavior. In which case, I would prefer
we keep the XForms 1.1 behavior.

-Erik

[1] https://lists.w3.org/Archives/Public/public-xformsusers/2018Aug/0029
[2] https://www.w3.org/TR/xforms11/#idref-resolve-repeat

Received on Wednesday, 14 November 2018 05:59:25 UTC