See also: IRC log
<trackbot> Date: 03 July 2013
Steven: I'm on holiday from next
week, until the 24th
... I anticipate being on the call of the 24th
<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/XPath_Expressions_Module#The_relevant.28.29_Function
http://lists.w3.org/Archives/Public/public-forms/2013Jul/0002.html
Erik: I had questions about the relevant and valid functions
"1. What should the default return values be when there are no selected items?"
scribe: what to do if the set is empty? Scala does TRUE
<ebruchez> scala> Seq[Int]() forall (_ < 10)
<ebruchez> res3: Boolean = true
Steven: My rule of thumb is TRUE for AND, and FALSE for OR
<ebruchez> scala> Seq[Int]() exists (_ < 10)
<ebruchez> res4: Boolean = false
Steven: In Maths, ∀ (for all) is
a logical AND and the empty version returns true, while ∃ is a
logical OR and returns FALSE for an empty set
... I think we should use that rule
Erik: the idea of validity, the
tree is valid if all nodes are valid, so it is an AND, so the
default is true.
... for relevance, I think the idea is the same, if any node is
nonrelevant, then so the whole tree
... how about readonly?
Nick: We have to be careful, because of the default for nodes
Erik: So readonly is OR. So default would be false.
http://www.w3.org/TR/xforms20/#Model_Item_Property_Definitions
Steven: That table "all" means the default would be TRUE and "one" would mean the default would be FALSE
Erik: I think we can apply this
logic to the functions
... OK, so I will modify the definitions to reflect this
... Question 2: 2. valid() and attributes
<price type="bar">10.42</price>
<bind ref="price" type="xs:decimal"/>
<bind ref="price/@type" constraint=". = 'a' or . = 'b'"/>
=> valid(price) returns false()
Erik: Is this OK?
Steven: I think it is reasonable
Erik: We have a function that takes an extra flag
Steven: You can use an XPath
function to get just the element value if that's what you
mean.
... I think we should take attributes into account
Nick: If a node is not readonly, but has an attribute that is readonly, you can still change the node
Steven: That is consistent I
think
... because readonly is an OR
Nick: And that treatment of valid is consistent with how submission works
<ebruchez> "Inheritance Rules: If any ancestor node evaluates to true, this value is treated as true. Otherwise, the local value is used."
Erik: Right
... both are recursive, and we have a consistent approach
... So how do we ignore the validity of the attribute?
Steven:
valid(price::text())
... or valid(price/text())
<ebruchez> Note: The simpleContent binding restriction is intended to allow controls to bind to attribute and element nodes. This specification does not prevent binding controls directly to text nodes, however doing so can yield undesirable behavior, such as a form control becoming non-relevant if a user enters empty data. This specification also does not prevent implementers supporting binding controls directly to comment or processing instruction nodes, however the
<ebruchez> resulting behavior is implementation-dependent and may also yield undesirable behavior.
Erik: Wouldn't work
Steven: Is there a real use-case?
<price><type>bar</type>10.42</price>
... you wouldn't want to deal with the special case here.
Erik: True, but we discourage
binding to complex values
... there may even be an exception
<ebruchez> "Element nodes: If element child nodes are present, then an xforms-binding-exception occurs"
Steven: Ah, yes
... In a case like this: <price
valuta="usd">10</price>
... if you said that @valuta could only be gbp, usd and eur,
then a value of "bar" would make the price invalid
... I'd like a use-case of where the attribute is irrelevant to
the validatty
Erik: In XForms, a control can
still be valid if an attribute is invalid
... so we do have an independent validity property
... but on the other hand submission does check all the
subtrees.
... So finding a consistent position here is tricky.
... So a parameter may be the solution here. In the normal case
you recurse, and in the special case you don't.
<ebruchez> xf:valid() as xs:boolean
<ebruchez> xf:valid($items as item()*) as xs:boolean
<ebruchez> xf:valid($items as item()*, $relevant as xs:boolean) as xs:boolean
<ebruchez> xf:valid($items as item()*, $relevant as xs:boolean, $recurse as xs:boolean) as xs:boolean
Erik: That would be a possibility then
Steven: Well, shall we go with that then?
<scribe> ACTION: Erik to add the bind() function [recorded in http://www.w3.org/2013/07/03-forms-minutes.html#action01]
(http://www.w3.org/MarkUp/Forms/wiki/Bind_function) to XForms 2.0.
<trackbot> Created ACTION-1954 - Add the bind() function [on Erik Bruchez - due 2013-07-10].
Erik: Progress is slow because we all have little time
Nick: I'm finishing dialog
... I'll organise the calls in the next two weeks
... we don't have many open items
[ADJOURN]
This is scribe.perl Revision: 1.138 of Date: 2013-04-25 13:59:11 Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/ Guessing input format: RRSAgent_Text_Format (score 1.00) Succeeded: s/tgh/th/ Succeeded: s/SO/So/ Succeeded: s/;/'/ Succeeded: s/iu/u/ Succeeded: s/gbp/gbp,/ No ScribeNick specified. Guessing ScribeNick: Steven_ Inferring Scribes: Steven_ Default Present: Steven_, ebruchez, nvdbleek Present: Steven_ ebruchez nvdbleek Regrets: Philip Agenda: http://lists.w3.org/Archives/Public/public-forms/2013Jul/0007.html Found Date: 03 Jul 2013 Guessing minutes URL: http://www.w3.org/2013/07/03-forms-minutes.html People with action items: erik[End of scribe.perl diagnostic output]