W3C Forms teleconference September 22, 2010

* Present

Erik Bruchez, Orbeon
John Boyer, IBM
Leigh Klotz, Xerox (minutes)
Nick van den Bleeken, Inventive Designers
Steven Pemberton, CWI/W3C (chair)

* Agenda


* Previous Minutes

* Invited Experts

Steven Pemberton: I'll check

* www-forms description

Steven Pemberton: I updated the description.
Leigh Klotz: I sent a list of help sources and mailing lists. I was going to make a wiki page.
Steven Pemberton: I think you should.

Action 2010-09-22.1: Leigh Klotz to wikify www-forms help message with updates from vendors.


Steven Pemberton: Please register.
Steven Pemberton: Is there someone we should invite to observe?
Leigh Klotz: Yes, the people we've asked to join who haven't.
Steven Pemberton: There's a person at BetterForms in the Netherlands.
Nick van: I could contact them.

* XForms 1.1 erratum for select and select1 and ordering of

help/hint/alert/action http://lists.w3.org/Archives/Public/public-forms/2010Sep/0040.html

Erik Bruchez: We look at listeners. We can place actions anywhere. Same for help, hint, and alert. It can be in any order. I think you could probably put a help in an item but I don't think we should intermix UI Common with List elements.
Leigh Klotz: We're all agreed it shouldn't be intermixed.
John Boyer: I think he said we are.
Erik Bruchez: No, I don't think we need to intermix.
Steven Pemberton: Before, after, or some before and after, but the list stays together.
John Boyer: That's what the erratum says.
Steven Pemberton: I propose that we allow that the lists remain together and you can have stuff before, after, and both.

Resolution 2010-09-22.1: For http://lists.w3.org/Archives/Public/public-forms/2010Sep/0040.html we allow that the lists remain together and you can have stuff before, after, and both.

Action 2010-09-22.2: Leigh Klotz to update XForms RNC Schema to correspond to resolution about http://www.w3.org/MarkUp/Forms/wiki/XForms_1.1_First_Edition_Errata

* XForms binding exception (clarification?)

http://lists.w3.org/Archives/Public/www-forms/2010Jun/0005.html http://lists.w3.org/Archives/Public/www-forms/2010Jun/0006.html Latest: http://lists.w3.org/Archives/Public/public-forms/2010Sep/0015.html

Steven Pemberton: I have had no response.
John Boyer: I tested a number of binding exceptions in my product, and we do produce a binding or compute exception for well-formed but not valid XPath: for example, an unbound namespace, variable, or function.
Steven Pemberton: So we need a definition: if the expression is not syntactically-valid
John Boyer: syntactically well-formed
Steven Pemberton: In principle you could spot that statically. Do we allow processors to hiccup on parsing of the form?
John Boyer: We don't say how soon it should produce the binding exception.
Steven Pemberton: XML says that if it's not well-formed XML then it will stop processing. It's possible an XForms processor would stop before it gets through the document. Is it allowed to stop then?
John Boyer: I definitely think so; I'm looking. I think we say they're allowed, but not required, to do that.
Steven Pemberton: So if it's not syntactically well-formed or well-formed but the processor is not able to evaluate it. Should we say for instance because of undeclared namespace?
John Boyer: an undeclared namespace, variable, or function.
Steven Pemberton: Is that good enough?
Erik Bruchez: What's the exact question here?
Steven Pemberton: We say that this event gets raised for illegal binding expressions, but we don't define one.
Leigh Klotz: What if it's an expression such as count(.)?
Steven Pemberton: You mean ref="count(.)"?
Erik Bruchez: We allow that for repeat binding to sequences but that's XPath 2.0.
John Boyer: It produces no nodeset. If you try to cast a number to a nodeset it's empty.
Steven Pemberton: So three cases, syntactically invalid, valid but not executable, or execution yields something unsuitable.
John Boyer: Actually, the third case would be just an empty nodeset, not a binding exception. The XPath processor executes it but then it turns into an empty nodeset.
Steven Pemberton: OK, so just two cases.
Erik Bruchez: We have to think a little in XPath 2.0. In XPath 1.0 in XForms 1.1 we only have the case of custom functions that at runtime produce errors. With XPath 2.0 it becomes more important, as they have both static and dynamic errors. In XPath 2.0, variables and namespaces can be checked statically. I think it's acceptable for an XPath expression that is not statically correct to produce a binding exception, since it's not recoverable. However, for anything else, I wasn't happy that it's a binding exception, because you'd like to have dynamic errors in XPath 2.0 expressions be recoverable errors. I had proposed that we should have a distinction in XPath 2.0, but we could have it in XPath 1.0 as well.
John Boyer: We do have a couple of XPath functions that produce exceptions if you call them in the wrong kind of expression, but that's static as well.
Erik Bruchez: Such as the index or case function, yes.
John Boyer: I like Steven's wording, that it's either well-formed or not, and if well-formed, it's either valid or not, both static. XForms 1.1 doesn't have any dynamic errors, but custom functions might, in which case it's executable or not.
Erik Bruchez: http://www.w3.org/TR/xpath20/#id-static-analysis
Steven Pemberton: For this erratum if it's not executable, it returns an empty nodeset?
John Boyer: That's the next step up: executable but returns the wrong type. This is where something went wrong. If I expect a nodeset and get a number, still it ran. I just get no nodes.
Erik Bruchez: We say it's a binding exception, not an xpath exception. It would be good to have xpath-static-error and xpath-dynamic-error and it would be clearer that it's related to xpath. In the binding to a number, that could be a binding expression. Personally I wouldn't see a problem in having an exception or error in that case. I'm not sure it's necessary to convert to an empty nodeset.
Steven Pemberton: We're considering an erratum, but you're specifying a feature for a later edition. So we need to decide in the current case when you should expect one of these exceptions.
Erik Bruchez: Right.
Steven Pemberton: I'm happy to entertain this as a Future Feature for XForms 1.2, but for this, it's just static errors.
John Boyer: Right.
Steven Pemberton: Are we happy with this definition? AN illegal binding expression is when the XPath is syntactically correct, or is correct but cannot be executed because of for example an undeclared namespace prefixes.
John Boyer: Should we list the cases?
Steven Pemberton: We haven't gotten a description.
Erik Bruchez: It's the same thing in XPath 2.0, well-formedness includes namespaces, but you can still have dynamic errors. The way it is said in XPath 2.0 it applies. So whatever you can do without running it.
John Boyer: http://www.w3.org/TR/xforms11/#expr-lib-extension We have a note that says XForms processors can detect unimplemented extension functions at document load time. So if you declare the function there it can be declared. Otherwise failure will cause the form not to load.
Leigh Klotz: I think that was there so that you could prevent loading of forms that required the function but allowed functions to be mentioned if they weren't used in a particular case.
Steven Pemberton: Xpath says "it is an error if the number of arguments is wrong." I wonder if "it is an error" matches what we want. It says "it is an error if the expression to be filtered by a predicate does not evaluate to a nodeset" XPath 1.0 section 3.3: http://www.w3.org/TR/xpath/#node-sets
Erik Bruchez: We have a mess mixing static and dynamic errors.
Steven Pemberton: Absolutely, but is this case static or dynamic.
Leigh Klotz: We have the choose function so it's not possible to analyze it statically.
Leigh Klotz: <input ref="choose(a,b,c)[x=3]" />
Erik Bruchez: Clearly there are errors that can be at runtime, especially if you have extension functions. So the question is do we dispatch a binding expression? It would be good to have a static vs dynamic distinction but we don't, so let's use binding-exception.
Steven Pemberton: Here's the XPath static error text: qname missing prefix, variable name, number of args wrong, arg cannot be converted to type, predicate left not nodeset, expression in / or // not nodeset.
Leigh Klotz: The last one?
Steven Pemberton: /count(.)/foo
Leigh Klotz: OK.
Erik Bruchez: It doesn't matter; we just say XPath error (static or dyanmic) parsing or running. I don't think we need to enumerate them. People can look up the spec.
Leigh Klotz: Can we look point to the XPath spec?
John Boyer: It's spread throughout the spec.
Steven Pemberton: Anywhere XPath says it's an error.
Erik Bruchez: I'm not sure they have ...
John Boyer: What about undefined functions?
Erik Bruchez: They explicitly define the core function library.
Leigh Klotz: Don't they have to be namespace qualified?
John Boyer: It doesn't say that.
Erik Bruchez: We don't need to enumerate the cases. A missing function is an error. We should just say when an XPath function produces an error and be done with it. We can say, "for example." So we don't want to list the error conditions in the XPath 1.0 spec and see if we miss something. If we have XForms-specific cases (such as ref="1" if we chose that) we could say that as well.
Steven Pemberton: For interoperability, should we leave ref="1" to the implementor, or defint it as an error?
Erik Bruchez: John suggests we convert to an empty nodeset; or we put an error in the spec, or we say it's implementation-dependent. In XPath 2.0 a repeat over numbers or strings is a really cool thing to have; the same for itemset and @iterate (except maybe bind). There is a door that can be opened to allow moving from nodeset to sequences.
Steven Pemberton: That's a future request. For this issue now, we'll say syntax error or error during execution of the XPath expression.
Erik Bruchez: I'm fine saying that <repeat nodeset="1"> would be fine in XForms 1.1 to give a binding exception as well.
John Boyer: if xpath says it is an error (e.g. not well-formed, missing namespace declaration), if an undefined function is invoked (missing case in xpath), or selected function call errors defined in xforms
John Boyer: I think it's fair to call out undefined function. Also we have our own errors such as index which we've mentioned elsewhere in the spec.
Steven Pemberton: Shall we resolve that?
Leigh Klotz: Let's get the text first.

Action 2010-09-22.3: John Boyer to define text for illegal binding expression and post to list.

* XForms 1.2 regex functions


John Boyer: I realized I had forgotten about the ability to attach a regex pattern using the type mip and a simpleType schema declaration. So it's a little lower priority now.
Leigh Klotz: I think answering it would be good for documentation. I believe this works even in XSLTForms.
John Boyer: I felt the pattern MIP was overkill anyway.
John Boyer: Here's my message about how to do it with type MIP. http://lists.w3.org/Archives/Public/www-forms/2010Sep/0038.html
Steven Pemberton: There are some implementations that don't do schema.
John Boyer: It might be more handy. Are there some that don't do schema at all? We said they had to do datatype processing.
John Boyer: You might be wrong.
Leigh Klotz: Those two-line LCD cell phones are all long gone. XSLTForms has implementations it in JavaScript.
Steven Pemberton: There's an authoring advantage to bind/@pattern.
John Boyer: I don't see an advantage to that over constraint and a function.
John Boyer: A pattern could offer some predictive keystroke checking.
Steven Pemberton: It could do that with keystrokes.
Leigh Klotz: You can't get much advantage in the general case. Consider pattern=".*x" which means "must end in x". You can't tell that while you're typing.
Steven Pemberton: So can we reverse pattern and instead introduce the function?
John Boyer: I like the function.

Resolution 2010-09-22.2: We unresolve to add a pattern MIP to XForms 1.2 http://lists.w3.org/Archives/Public/www-forms/2010Sep/0038.html

* XBL2

Leigh Klotz: I sent the note to HCG and Art Barstow responded.
Steven Pemberton: He asked that you forward the message to public-webapps.

* IRC Log


* Meeting Ends