Erik Bruchez, Orbeon
John Boyer, IBM
Leigh Klotz, Xerox (minutes)
Nick van den Bleeken, Inventive Designers
Steven Pemberton, CWI/W3C (chair)
Steven Pemberton: I'll check
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.
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
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.
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
Leigh Klotz: I sent the note to HCG
and Art Barstow responded.
Steven Pemberton: He asked that you
forward the message to public-webapps.