Re: Feedback for "9.9.5.1 The copy Element (for itemset)"

Dear Erik, Steven, &
public-xformsusers,




A CORRECTION (to the previous message):


To the matter of "Text" & "Architecture" I said earlier:

If "Architecture" is about "form", "space" and "order" (1), thus

"Network" refers to "form" --if by the latter we mean "general arrangement
or structure; way in which parts are put together to make a whole or a
group; style or manner of presentation (2).

What are about "space" and "order" then...?

And the "text" we are dealing with: May we refer them to
"cyberexperiences", "cyberworld", thus there are experiences on
"cyberform", "cyberspace" and "cyberorder" in relation with them...?


Note:
(1) F.D.K. Ching, "Architecture: Forms, Space & Order", John Wiley & Sons,
New Jersey & Canada, 2007

(2) Oxford English Dictionary


Regard,
Guntur Wiseno Putra




Pada Kamis, 05 Maret 2020, Guntur Wiseno Putra <gsenopu@gmail.com> menulis:

> Dear Erik, Steven, &
> public-xformsusers,
>
>
> To the matter of "Text" & "Architecture" I said earlier:
>
> If "Architecture" is about "form", "space" and "order" (1), thus
>
> "Network" refers to "form" --if by the latter we mean "general arrangement
> or structure; way in which parts are put together to make a whole or a
> group; style or manner of presentation (2).
>
> What are about "space" and "order" then...?
> May we refer them to "cyberexperiences", "cyberworld", thus there are
> experiences on "cyberspace" and "cyberorder"...?
>
>
> Note:
> (1) F.D.K. Ching, "Architecture: Forms, Space & Order", John Wiley & Sons,
> New Jersey & Canada, 2007
>
> (2) Oxford English Dictionary
>
>
>
> Regard,
> Guntur Wiseno Putra
>
> Pada Kamis, 05 Maret 2020, Guntur Wiseno Putra <gsenopu@gmail.com>
> menulis:
>
>> Dear Erik, Steven, &
>> public-xformsusers,
>>
>>
>>
>> EB:
>>
>> "a text node is created for each atomic value."
>>
>> (This should probably say more, since text nodes are merged in the data
>> model.)
>>
>> ...  So I think that text nodes and atomic values should not be allowed
>> with the `<select>` / `<copy>` combo.
>>
>> ...  it makes sense to disallow the use of both `<value>` and `<copy>`
>> within a given selection control, in the same way that we should disallow
>> text nodes/atomic values returned by `<copy>`.
>>
>>
>>
>> GWP:
>>
>> By such a logic of :
>>
>> - Text Nodes,
>>
>> - Text Networks
>>
>> - Networks Architecture
>>
>> - Text Networks Architecture
>>
>> Are we not dealing with a matter on  "Text" and "Architecture"...?
>>
>>
>> Regard,
>> Guntur Wiseno Putra
>>
>> Pada Kamis, 05 Maret 2020, Erik Bruchez <ebruchez@orbeon.com> menulis:
>>
>>>     <select>
>>>>         <item>
>>>>             <label>Chocolate</label>
>>>>             <value ref="instance('chocolate')"/>
>>>>         </item>
>>>>         <item>
>>>>             <label>Strawberry</label>
>>>>             <value ref="instance('strawberry')"/>
>>>>         </item>
>>>>     </select>
>>>>
>>>> Did you mean to use <copy/> here?
>>>>
>>>
>>> Yes!
>>>
>>> So your proposal is that wherever <value/> can be used, <copy/> can be
>>>> used too?
>>>>
>>>
>>> Exactly.
>>>
>>> For `select1`:
>>>>
>>>> - Deselecting an item should clear the content of the bound element
>>>> (for attributes, if supported, see below).
>>>> - Selecting an item inserts all the items returned by `xf:copy` into
>>>> the bound element following `xf:insert`.
>>>> - It's ok if `xf:copy` return an empty sequence (simply nothing gets
>>>> inserted upon selection).
>>>> - Attributes nodes could be supported or not, but if so the behavior
>>>> should be described.
>>>>
>>>> I think this matches what is there for select1, although I'm not sure
>>>> what you are proposing for attributes.
>>>>
>>>
>>>     <select ref="selection">
>>>         <item>
>>>             <label>foo</label>
>>>             <copy ref="xf:attribute('foo', 'foovalue')"/>
>>>         </item>
>>>         <item>
>>>             <label>bar</label>
>>>             <copy ref="xf:attribute('bar', 'barvalue')"/>
>>>         </item>
>>>     </select>
>>>
>>> This would, on the `selection` element, add or remove the given
>>> attributes.
>>>
>>> For `select`:
>>>>
>>>> - I don't think it makes sense for `xf:copy` to support more than one
>>>> item, so `xf:copy` follows the first-item rule.
>>>>
>>>> Hmm. I hadn't thought about this before, but what about
>>>>
>>>> <select ref="selection">
>>>> <item label="red" copy="choices[colour='red']"/>
>>>> <item label="green" copy="choices[colour='green']"/>
>>>> <item label="blue" copy="choices[colour='blue']"/>
>>>> </select>
>>>>
>>>
>>> Yes, this could work. I had assumed some kind of ordering would be
>>> relevant, but if we just look at all nodes independently that's easier.
>>>
>>> As discussed in the call, the only thing is to consider overlap: two
>>> items returning identical, say, element subtrees. In this case, I suggest:
>>>
>>> - If two items include the same subtrees and are selected, only one copy
>>> of the tree is inserted.
>>> - If one of the two items is deselected, the subtrees remains.
>>> - When both items are deselected the subtrees is removed.
>>>
>>>
>>>> - An item for which `xf:copy` returns the empty sequence must be
>>>> ignored.
>>>>
>>>> I believe this is already so described.
>>>>
>>>> - Deselection requires deep comparing the result of `xf:copy` with the
>>>> bound element's children nodes. Any tree found is deleted following
>>>> `xf:delete`.
>>>>
>>>> "For complex selections, the individual subtrees associated with the
>>>> newly selected and deselected items are added or removed individually by
>>>> using insert and delete;" However, it only used the word "matches" rather
>>>> than "deep compare".
>>>>
>>>
>>> That's probably fine. Our code uses the Saxon `deep-equal()` logic to do
>>> compare subtrees:
>>>
>>>     https://www.saxonica.com/html/documentation/functions/saxo
>>> n/deep-equal.html
>>>
>>>     - What happens if `xf:copy` returns an atomic value?
>>>>
>>>> What does <insert/> do in this case?
>>>>
>>>
>>> "a text node is created for each atomic value."
>>>
>>> (This should probably say more, since text nodes are merged in the data
>>> model.)
>>>
>>> As discussed during the call, this part is ok. But say you have:
>>>
>>>     <item>
>>>         <label>Foo</label>
>>>         <copy ref="'foo'"/>
>>>     </item>
>>>     <item>
>>>         <label>Bar</label>
>>>         <copy ref="'bar'"/>
>>>     </item>
>>>
>>> If you select both, then you would get, in the resulting node:
>>>
>>>     <selection>foobar</selection>
>>>
>>> or maybe:
>>>
>>>     <selection>barfoo</selection>
>>>
>>> So you wouldn't be able to distinguish those anymore, except with a
>>> possibly complicated and unreliable algorithm. So I think that text nodes
>>> and atomic values should not be allowed with the `<select>` / `<copy>`
>>> combo.
>>>
>>>>
>>>> - Selection requires inserting the items following `xf:insert`.
>>>> - Attributes nodes could be supported or not, but if so the behavior
>>>> should be described.
>>>>
>>>> What would you propose as being the behaviour?
>>>>
>>>
>>> See above.
>>>
>>>
>>>> 3. Mix and match of `xf:copy` and `xf:value`
>>>>
>>>> A selection control can have multiple `xf:itemset` and `xf:item`.
>>>>
>>>> As children of <choices/> you mean?
>>>>
>>>> <select ref="x">
>>>>   <choices label="a">
>>>>      <item label="a1" value="1"/>
>>>>   </choices>
>>>>   <choices label="b">
>>>>      <itemset .../>
>>>>   </choices>
>>>> </select>
>>>>
>>>
>>> My understanding was that you can have any of those, but maybe I am
>>> mistaken:
>>>
>>>     <select ref="x">
>>>         <itemset>
>>>             ...
>>>         </itemset>
>>>         <item>
>>>             ...
>>>         </item>
>>>         <itemset>
>>>             ...
>>>         </itemset>
>>>         <item>
>>>             ...
>>>         </item>
>>>         <choices>
>>>             ...
>>>         </choices>
>>>     </select>
>>>
>>>
>>>> What happens if there is a mix and match of `xf:copy` and `xf:value`?
>>>> We could say that this is implementation-dependent or that this follows the
>>>> `xf:copy` logic, with an `xf:value` values behaving like an `xf:copy` that
>>>> returns an XPath string value.
>>>>
>>>> Are there use cases?
>>>>
>>>
>>> I am not sure, but I think, as discussed in the call, that it makes
>>> sense to disallow the use of both `<value>` and `<copy>` within a given
>>> selection control, in the same way that we should disallow text
>>> nodes/atomic values returned by `<copy>`.
>>>
>>> -Erik
>>>
>>

Received on Thursday, 5 March 2020 06:20:46 UTC