- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Wed, 02 Nov 2016 10:12:44 +0100
- To: "public-xformsusers@w3.org" <public-xformsusers@w3.org>
One last issue before I send out the agenda. I spent all of yesterday struggling with the in-scope evaluation context. https://www.w3.org/community/xformsusers/wiki/XForms_2.0#Maintaining_Position:_the_Focus A quick summary. First you find an initial context, that gets used to find the actual in-scope evaluation context. If a binding doesn't have an ancestor binding, then the initial context is the top-level document element node of the default instance of the model that contains the binding, if any, and otherwise of the default model. <model> <instance><data><i/></data></instance> </model> ... <input ref="i"/> If there is an ancestor single-item binding then the initial context size and position are 1 and the context item is the one resulting from the Single Item Binding. <select ref="order" label="Flavors"> <itemset ref="../flavors/flavor" label"{description}" copy="description"/> </select> If there is an ancestor Sequence Binding then the context position is 1, and the context size is the size of the sequence and the context item is the sequence's first item. Furthermore an occurrence of the original binding element is generated for each of the items in the sequence, with a dynamic in-scope evaluation context which has a context size equal to the size of the sequence, the context item is the item of the sequence for which the occurrence was generated and the position is equal to the position of the generated item in the sequence. <repeat ref="flavors/flavor"><output ref="description"/></repeat> Now here comes the funny bit: Once the initial context has been found, if the binding element has a model attribute that refers to a model other than the one containing the context item, then the context item is changed to be the top-level document element node of the default instance of the referenced model, and the context position and size are changed to 1. <select ref="order" label="Flavors"> <itemset model="flavors" ref="flavor" label"{description}" copy="description"/> </select> (and after that @context gets evaluated) What I don't understand is why the @model treatment happens so late. It seems to me that it ought to happen before any of the other stuff. Can anyone enlighten me? Steven
Received on Wednesday, 2 November 2016 09:13:25 UTC