Alain Couthuries, AgenceXML
Leigh Klotz, Xerox (minutes)
Nick van den Bleeken, Inventive Designers
Philip Fennell, MarkLogic
Steven Pemberton, CWI
Uli Lissé, DreamLabs
John Boyer, IBM
Erik Bruchez, Orbeon [joined late]
Steven Pemberton: It shouldn't be
too difficult as there are libraries.
Alain Couthuries: No, it
shouldn't.
Steven Pemberton: EMC
Leigh Klotz: I saw W3C is running
this.
Steven Pemberton: If we offered an
online training course we could offer a certificate. It's a fairly
normal thing.
Leigh Klotz: So this is being run by
someone else?
Steven Pemberton: Even if it is, I'm
sure we could offer a course.
Leigh Klotz: Michael Sperberg-McQueen
and I'm sure IBM have training on XForms. Perhaps we should let W3C
know so they can announce it.
Steven Pemberton: You can put it in
submit-a-talk. If you give a talk, please fill it in. My experience
has been that within an hour it's on the W3C home page.
Steven Pemberton: http://www.w3.org/2004/09/SubmitTalk
Alain Couthuries: For the protocol
used, it would be nice to use submission. The easiest way would be
to use file:// or local-storage:// to use it more directly.
Steven Pemberton: Did you submit this
comment?
Alain Couthuries: Yes.
Steven Pemberton: So the suggestion is
that we officially make such a URL scheme storage: for this
API?
Alain Couthuries: Yes.
Steven Pemberton: I think that is a
good comment.
Leigh Klotz: Their example shows
storage of data to and from a form control. We could suggest using
an MVC XML approach as an non-normative example but I doubt they
would respond.
Alain Couthuries: There is a limit on
the size of key/value pairs but it's not what it is.
Leigh Klotz: If people store JSON data
or XML it's the same size roughly so we're in the same boat.
Steven Pemberton: We could just
associate it with a URI scheme and need not have any support from
their spec. I believe Mark Birbeck had big cookes.
Leigh Klotz: Giant Cookies.
John Boyer: We do the same thing, with
a known file location. But people prefer to use regular cookies in
their servlets and don't want to do it within teh form.
Leigh Klotz: There are advantages to
local storage for REST-based applications because you don't have to
worry about sharing the data server-side in load balancing.
Alain Couthuries: And offline
forms.
John Boyer: That's what I thought, but
it's a "nice to have" for our customers, not critical, and we
already save the entire form.
Alain Couthuries: I have contact with
people in India doing offline medical applications.
John Boyer: We use our own local
storage.
Leigh Klotz: I asked Philippe Le Hégaret to see if W3C would get involved in this effort, currently lead only by WHAT-WG so we can use it.
John Boyer: I wonder if this was
sent to the wrong group as he's talking about XSLT. We've had
similar discussions about XForms submission mediatype
serialization, and that's what the xforms-submit-serialize event is
for, given some (not too bad) limitations. Our product allows you
to use an xf:submission/@mediatype="our document MIME type" and it
will behave as if there were a listener for the
xforms-submit-serialize event to produce our entire containing
document back to the server.
Steven Pemberton: What is the format?
John; XFDL
Steven Pemberton: Is it XML?
John Boyer: Yes, but most people don't
prefer to use the uncompressed XML. The precise layout information
compresses very highly; however, this serialization format uses
ZIP+Base64. So, this question asks for ODF, but it's a binary
format. In our MIME type when we say application/vnd.fdl we say
that the Encoding is Base64+GZIP, and this gets around the text
problem without any challenges.
Steven Pemberton: It's similar to how
we treat JSON. A structured document comes in, we spot it, and
convert it to something like an XML document, and then serialize it
back to how it was.
John Boyer: I have talked only about
the whole containing document. JSON has the problem that you take
it as input as well, but this whole-document situation doesn't have
that problem. It's slightly simpler than the JSON case. The
complicating nature is the binary format; and I suggest solving
that with Base64.
Steven Pemberton: Perhaps I read it
differently. I thought he was producing an ODF file from XForms in
some way, in the instance.
John Boyer: He seems to be wondering
if there is a way for XSLT to output. So I read this as asking the
wrong group, but our various submission attributes were designed to
be in line with an XSLT output.
Erik Bruchez: [joins]
Steven Pemberton: So do we reply it's
the wrong group?
John Boyer: Yes as we're not XSLT, but
if he wants to submit the format back to a server then we can
suggest the base64 encoding. I can't imagine an ODF inside instance
data. Most of the document is presentation and unstructured content
and then there is a possibly an internal XForms model.
Steven Pemberton: It sounds like you
are the ideal person to reply.
ACTION-1827 John Boyer to reply to http://lists.w3.org/Archives/Public/public-forms/2011Sep/0023.html
John Boyer: My project went well,
thanks in part to Nick's suggestion. It would be nice to be able to
indicate this on a select1/@appearance. In our product's XForms
schema I changed @appears to allow a space-separated list.
Steven Pemberton: I'm not convinced
it's appearance; it looks so much like a function.
John Boyer: I agree with you for XPath
2.0 sequences. We went through a lot of work in XPath 1.0 so that
nodesets are in document order.
Nick van: I'm not sure if I like the
appearance thing. Do we really want to add an appearance if we
think the function is more flexible? And for 1.0 it's a bit of a
problem.
John Boyer: We have differing opinions
in an area that doesn't matter. I use randomization as an example
of how we might want to have extension keywords that decorate
multiple appearance hints.
Steven Pemberton: So you want only the
multiple?
John Boyer: Yes, it's just a list in
our version.
Steven Pemberton: We agreed to
that.
John Boyer: I don't know where the
schema fo XForms 2.0 is.
Leigh Klotz:
John Boyer: There it is.
Nick van: So not adding that random
appearance.
John Boyer: Right. In my example, if
you make a choice the permutations come up again and the data level
is selected.
Nick van: In this example where you
want a random order, it is enough for appearance, but if you want
sort order, you need access to instance data and it's not possible
with appearance only.
Leigh Klotz: With XPath 1 you
eventually run out of hacks. XSLTForms also uses XPath 1 and it
works, but it's getting long in the tooth. Sorting predicates are
going to need XPath 2.
Nick van: ...
John Boyer: Yes, in a repeat, it's
clear a function won't work in XPath 1. The repeat-index indexing
back in the data won't work with @appearance, or insert or
delete.
John Boyer: My next project is
sorting: I've discovered that the best sorting performance is on
the O(N^2 log(N)), unless you use @iterate and efficient insert,
you can get O(N log(N) log(log(N))). With @iterate you can get a
simple, easily-understood O(N^2) sort.
ACTION-1828 John Boyer to allow space-separated @appearance in nick should no longer be muted http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0_RNC_Schema http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0_RNC_Schema
Philip Fennell: I'm passing this
along from a colleague.
Leigh Klotz: It says "Declarative
bindings, automatic UI refresh, dependency tracking,
templating"
Erik Bruchez: I changed the wording
about when the function would throw an exception. We said that it
"should" throw an exception in binding expressions. The text is
there. We use binding exception on on id links and on binding
expressions. I think it's the correct behavior and follows XForms
1.1 when there are expression issues, but the group could verify
it. There is a note explaining when it is safe to use the function.
I added a note saying why it is unsafe to use on bind, as we
discussed. It would be good if someone could look at the text and
confirm that it is good to go.
Erik Bruchez: I have a couple of
questions. Leigh, you mentioned an invalid() function. Was there an
action item to specify it?
Leigh Klotz: It would be for the
excluded middle, as we have done with xforms-valid and
xforms-invalid events, and for similarly with CSS. If we have a
case where a node is neither valid nor invalid then we would need
two functions, both of which would return true. You would know when
you need it because the excluded middle would appear.
John Boyer: It did happen during the
relevance discussion, so you are right, Erik. So if it's
non-relevant you could get false on both. So we decided instead to
use the $relevance parameter, more like submission.
Erik Bruchez: I'll look for
cases.
Leigh Klotz: Let's just do it lazily;
it will be obvious when we need it because we'll find that true and
false are both wrong. For relevance, we did it a different
way.
Erik Bruchez: OK.
Erik Bruchez: I have a second
question; do we test leaf-nodes or trees? In Orbeon we have a flag.
Do we need a way to test a whole subtree? There is one use case,
which could be problematic: a leaf element with an input field
bound. Right now it uses a subtree, and the attribute is invalid,
and the function would take both into account. If we had named
parameters, it would be a no-brainer, and we already have a
boolean, it's not very elegant.
Leigh Klotz: .//*|@* would give you
the tree. You can't use the first node rule.
Erik Bruchez: It might be a bit slow.
In XPath 2 you could write .//(*|*/@*)/valid()
John Boyer: It sounds like the main
problem is a complex-type with simple content. Such as a currency
validation. We have to ask a specialized validity content to have
the.
Leigh Klotz: I thought this was the
problem I found with XForms Basic.
Erik Bruchez: <price
type="bar">10.42</price> <bind ref="@type"
constraint=". = (a
, b
)"/>
John Boyer: We did this to make XForms
1.1 work.
Steven Pemberton: What is our
conclusion?
John Boyer: Invalid attribute on a
complex element needs a different look. We don't have an answer
yet.
Steven Pemberton: So Erik's action is
closed.
Leigh Klotz: The use is limited by
this problem with validity.
John Boyer: It would be nice for
someone to have an action item to figure out how to amend the valid
function.
Erik Bruchez: I can get started.
ACTION-1829 Erik Bruchez to start discussion on valid() with complex types.