W3C

- DRAFT -

XForms Editorial Meeting

29 Aug 2011

See also: IRC log

Attendees

Present
John_Boyer, Nick, Erik, Steven
Regrets
Chair
Steven/Leigh
Scribe
klotz

Contents


hello John_Boyer. Are you there?

<John_Boyer> yes

<John_Boyer> zakim coming along?

<John_Boyer> Steven and Leigh, the Forms WG public page has a link called "Issue Tracking" that is stale and should be changed to http://www.w3.org/2005/06/tracker/xforms/

<John_Boyer> Steven and Leigh, the Forms WG public page has a link called "Issue Tracking" that is stale and should be changed to http://www.w3.org/2005/06/tracker/xforms/

<Steven> Yay!

<Steven> http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0

<nick> john, if your interested here are the changes I made to the XPath expression module http://www.w3.org/2007/10/htmldiff?doc1=http://www.w3.org/MarkUp/Forms/specs/XForms1.2/modules/xpath20/index-all-20110621.html&doc2=http://www.w3.org/MarkUp/Forms/specs/XForms1.2/modules/xpath20/index-all-20110829.html

<scribe> scribe: klotz

<scribe> scribenick: klotz

Agenda

<nick> http://www.w3.org/MarkUp/Forms/wiki/The_XForms_Dialog_Module

Nick: Dialog

Leigh: We asked Erik to prepare AVT and Nick to prepare XPath 2.0

Erik: Did we decide XForms 1.2 vs 2.0?

Leigh: Yes.
... 2.0 for XPath 2.0

Erik: Why not 3.0 for XPath 3.0?

Steven: We're not using it yet.

<nick> http://www.w3.org/MarkUp/Forms/wiki/Category:XForms20Migrated

John: We attach that when things are migrated to the spec

Nick: Or to a separate module.

John: model-driven switch
... I'd like to discuss it and start editing the XForms 2.0 spec and indicate in the wiki that the content has been migrated.

Steven: Great

Model-Driven Switch

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/Model-based_switching_with_switch

John: We last discussed this as a child element called selected and if you indicate that child element it provides a UI binding where the current selected case can be stored in instance data with selected/@ref
... I'd like to talk about that one last time and have an @selected attribute on the switch element.
... The only reason that is better is we could make the same approach for repeat so it could store the current index. That has come up recently and there's no way to do a child element of repeat.

Steven: <switch ref="..." selected="...">

Erik: I agree

Steven: selected sounds brilliant

John: And an attribute-based way of index in repeat as well.
... I could write that up for repeat.

Erik: What happens when you switch cases? Does it write back?

John: Yes, it's a 2-way binding.
... Toggle changes the case and writes the newly-selected case.
... If you use setvalue or calculate, or any way you want, then that causes the switch to be selected.

Leigh: What happens with toggle and calculate?
... toggle on a switch bound to a calculated node the node is readonly. that's ok but in what way does the toggle fail?

John: You can set a calculated node to readwrite explicitly for an initial value. I do have to deal with that.

Erik: Corner case
... It's the same as setvalue on a readonly node. It's pretty clear.

Nick: We have to be careful what happens when. If the value is updated in the model then another case is selected and there's event handlers run so we have to be careful that it's specified and consistent.

John: Most of that is already in the wiki content.
... It doesn't matter attribute vs element

Nick: Right

<ebruchez> http://wiki.orbeon.com/forms/doc/developer-guide/xbl-components-guide#TOC-Conventions

Erik: The semantics are easy to determine, but @selected is already a literal attribute on xforms:case and also on xhtml:options. We have an issue with custom attributes or AVTs on components.
... We have some ideas for conventions naming attributes with -ref when they write back to a node and without when you just read a literal value. For dynamism, we use AVT or you could use a child element.
... It would be nice to have a simple set of rules but I am concerned about the name selected.

Steven: I like the idea more than the name, necessarily.
... What does @ref do on switch.

John: relevance and MIPs?

Leigh: Why can't that be the same?

John: switch/@ref is usually a container node.

Erik: That would break stuff.

John: For sure. The @ref might point to a subtree and an internal attribute would be the case.

Steven: We would have chosen @case in the past. Repeat @index.

Leigh: sounds good

Erik: @selected would be confusing.

John: We had challenges with child as a child element. But as an attribute it works.
... @caseref would work as well.

Erik: In XForms 1.1 to avoid HTML conflict we used targetid and targetref. We already have a convention there slightly different from our own with dashes.
... It could be @caseref or @selectedref.

John: @caseref looks good.

Steven: It has good documentary value.

John: The other problem that solves is that we have the convention to use att and child element of same name for AVT and now if it's just case we break that pattern.

Erik: In this case, er instance, er scenario, we don't have the AVT issue because the attribute is already an XPath expression.

Leigh: select/@toggle ?

Steven: No, @caseref is fine.

Leigh: I think it doesn't matter at this point.

RESOLUTION: We change binding for case on select to @caseref.

RESOLUTION: We change binding for case on select to @caseref.

John: OK
... Do we need the selected attributes on case anymore in XForms 2.0?

Nick: You can use them when there is no binding.

Erik: It's initial selected case.
... It's consistent with HTML.

John: We should look at submission/@action for removal in XForms 2.0.

Erik: I have had new feelings about action. In HTML it's still called action.
... But we might want to deprecated @nodeset.

Nick: That's already done.

Erik: We don't use @nodeset anymore in ours.

<nick> http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#structure-attrs-nodeset

Leigh: It's deprecated but not removed. John is asking about things to remove that were already deprecated.

<nick> we deprecate nodeset in XForms 2.0

<nick> (this is already reflected in the spec)

Erik: if() is a problem.

Nick: It's not a big problem because it is in its own namespace.

Erik: I remember Mike Kay discussing such things, XPath function libraries. Is there a way to import into the default namespace? Now you can use the functions unprefixed, the xforms functions. In Java you can use prefix or import packages, and other languages. You get more potential for confusion but it is shorter and maybe clearer.

Nick: We have the xpath 2.0 functions.
... I removed if() from the spec.

Leigh: SO it's porting to XPath 2.0, not compatibility.

Nick: You have to explicitly set the xpath version to 2.0 to get the functions moved to the xforms namespace. You MAY also add them to the default namespace.

Leigh: That was for XForms 1.2. Now we have XForms 2.0. Maybe it should be model/@version="2.0" instead of model/@xpathversion="2.0"

<nick> http://www.w3.org/MarkUp/Forms/specs/XForms1.2/modules/xpath20/index-all.html#xpath-version-attribute

John: The xpath version could be defaulted based on the model version.

Nick: That's one of the possibilities.
... I thought that was too complicated to switch automatically.

Leigh: If it's XForms 2.0 it should be XPath 2.0.

John: A 2.0 processor with <model> should give you XForms 2.0 and XPath 2.0. The only meaningful way to be explicit about version would be version=1.0 or version=1.1.

Nick: I believe our version is a list so you can say 1.0 1.1. 2.0.

John: That's a doubly-good-reason to let XPath default to the processor's version.

Nick: The same form would behave differently depending on the XForms processor and XPath engine. If we say if the XFOrms versions contains 2.0 and up then the default and other cases it's 1.0.

Leigh: THen just put in the xpathversion attribute.

John: The author shouldn't put 1.1 2.0 in version if it won't work with xpath 1.0.
... They can also give an xpathversion.

Nick: Are the functions in the XForms namespace if you ask for 1.0 compatibility mode?

John: An XPath 2.0 engine in XPath 1.0 mode you need namespace-qualified names?

Nick: If you are requesting XPath 2.0 vs XPath 1.0 you are screwed.

Leigh: I think you are just screwed anyway.

John: We have a set of Xpath 1.0 functions. It's not much sweat to require when using an XPath 1.0 engine that we make available all the same functions in the default and also XForms namespace.

Nick: I thought we could do that.

John: We should. Stick with XForms ns functions and you have a reasonable change.

Steven: What is the proposal?

John: In xpathversion=1.0 mode the no-namespace XForms functions are also in the xforms: namespace. choose or xf:choose. That seems easy.
... Then xf:choose will work in XForms 2.0 XPath 1.0 or XPath 2.0.

Leigh: Sounds good.

Steven: yes.

<Steven> S/THen/Then/

RESOLUTION: In XForms 2.0 xpathversion=1.0 mode the no-namespace XForms functions are also in the xforms: namespace.

<scribe> ACTION: Nick van den Bleeken to make it so that In XForms 2.0 xpathversion=1.0 mode the no-namespace XForms functions are also in the xforms: namespace. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action01]

<trackbot> Created ACTION-1816 - Van den Bleeken to make it so that In XForms 2.0 xpathversion=1.0 mode the no-namespace XForms functions are also in the xforms: namespace. [on Nick Van Den Bleeken - due 2011-09-05].

<scribe> ACTION: John Boyer to change select binding for case to select/@caseref. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action02]

<trackbot> Created ACTION-1817 - Boyer to change select binding for case to select/@caseref. [on John Boyer - due 2011-09-05].

<scribe> ACTION: John Boyer to change switch binding for case to switch/@caseref. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action03]

<trackbot> Created ACTION-1818 - Boyer to change switch binding for case to switch/@caseref. [on John Boyer - due 2011-09-05].

Leigh: Sorry. We should deleted ACTION-1817.

repeat index

Steven: repeat/@indexref

John: We won't create phantom data. The lifecycle issues are the same with setindex.

<nick> http://www.w3.org/MarkUp/Forms/specs/XForms1.2/modules/xpath20/index-all.html#additional-references

Nick: I already did this work for switch and case. So you might want to look at that.

<scribe> ACTION: John Boyer to add repeat/@indexref to XForms 2.0. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action04]

<trackbot> Created ACTION-1819 - Boyer to add repeat/@indexref to XForms 2.0. [on John Boyer - due 2011-09-05].

John: Now might a good time for me to start doing that.

Next Work Item

Nick: I'd like to discuss the editorial notes for the XPath expression model and review my changes.
... I'd like to have John around as it impacts the dependency. Not right away.

Erik: What is XForms 1.2 module?

Nick: We should have renamed it XForms 2. There is no XForms 1.2.

Erik: There is XForms 1.2 and XForms 1.2 Module category.

Nick: It's module spec.

Erik: So you write that in the wiki?
... Can you rename a category?

John: We could move everything that it is XForms 2.0 to XForms 3.0? Then move the XForms 1.2 things to XForms 2.0.

Leigh: We should do that.

Erik: We have future features and 1.2.

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0_Refactoring

Erik: Do we have priorities for a 2.0 release?

John: @context everywhere is easy
... And the things we already told people to do in 1.1 processor such as multiple MIP constraints.

Erik: We don't have spec text for that.

John: Wiki text.

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/MIPS

John: Someone has to roll that in to the XForms 2.0 and then attach XForms20Migrated to that.

Erik: We don't have an old category for XForms 2.0.

Leigh: Let's just rename it to XForms 3.0 refactoring.

Erik: Will anything there make it?

John: node creation

Erik: Dialogs
... I'll move it to XForms 3.0 Refactoring

Leigh: At our leisure we can take things out of there that we have accomplished in XForms 2.0.

MIP Functions

John: We haven't had a good way to associated dependencies with function calls and we have a disconnect about when they are generated vs when they are called. People want a valid() function but if you try to call is-valid() during a recalculation, we do rebuild/recalculate/revalidate/refresh you may not get the values you expect.
... We'd need to automatically redo that and it's a bigger refactoring of the processing model.

Erik: We have those functions in Orbeon. It's tricky as John explains, but if you use them in UI actions...
... You might be tempted to use it in relevant and that will mess things up, but it's more reasonable within actions.
... People want to know if a subtree is valid and we have that as well.

John: We have it with events. It's a hacky way in 1.1.
... The submission hack is supported by the 1.1 spec, so we don't need an extension function. We use it whether to ungrey a submission button.

Steven: Another use case is wizard with switch.

John: Right. Then the Next button becomes ungreyed.

Erik: A have a few examples that are variations on that. Instead of grey, you perform the action and if a subtree isn't valid then something else happens, an action. If you're not running a submission then you don't have an easy way to determine.
... The functions are specified and document in our processor.

John: We can cause compute or bind exceptions where the functions don't work or don't make sense. So you could say it can't be used in bind/@relevant or @ref.
... Action handlers of submission are OK but not bind declarative model processing.

Steven: Are you making a proposal or asking Erik?

John: I think Erik should propose whatever Orbeon has if we made this exception.

Nick: Is it documented?

Erik: yes.
... It's not hard. Most comes from exforms. We have a second argument version.

Nick: Aren't non-relevant nodes valid by default in your implementation?

John: Not in mine.

Erik: We check required.
... We don't skip non-relevant nodes but it would be easy to do.

John: That would be an awesom function to have.

Erik: We had a discussion about ignoring relevance a year or two ago. How does relevance impact the model vs the ui. Depending on how you work with XForms you might not care. relevant="true|false" on submission could also optionally not check relevance of nodes in the function.

Nick: Do we define non-relevant nodes and validity?

John: there's no ordering on relevant and constraint.

Nick: We could skip non-relevant nodes in the easy case and add an option after.

Steven: We can define it true as relevant and valid.

Erik: it should be compatible with submission which skips non-relevant nodes and an optional parameter.

Leigh: perhaps a separate function

Steven: submittable()

John: but maybe you are running it for toggle testing.
... you can submit invalid contents because of the boolean on submission.

Erik: I don't think XPath 3 is adding named parameters.

Leigh: Six boolean parameters is like programming with a front panel and toggle switches.

Erik: WIth named parameters it is OK, as in Scala.

John: The front panel has labels on the switches in Scala.

Erik: i can write this up for an action

John: What about readonly and required?

Erik: We use them.

John: AVT for the UI level?

Erik: if readonly show output else input but not the same node.

Nick: Can it be a sequence argument?

Erik: exforms has the first-node rule.

John: It's not a whole lot of work to do the sequence.

John_Boyer look at this http://www.w3.org/MarkUp/Forms/wiki/Model-based_repeat_index

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/MIP_functions

<scribe> ACTION: Erik Bruchez to write up valid function http://www.w3.org/MarkUp/Forms/wiki/MIP_functions [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action05]

<trackbot> Created ACTION-1820 - Bruchez to write up valid function http://www.w3.org/MarkUp/Forms/wiki/MIP_functions [on Erik Bruchez - due 2011-09-05].

John: If the second node is non-relevant you see only two nodes of the table. it will report itself as #3 in position().
... What I've often wanted is something that gives you relevant only.
... If you want odd/even colored rows the position() gets screwed up.

Erik: So the repeat-nodeset should skip non-relevant nodes.

John: That's what the relevant function is used for.

Erik: They don't show.

Nick: They are in the data so they are in the xpath function.

Leigh: You'd have to put and relevant(.) everywhere.

Nick: John says it doesn't do that automatically.

Erik: You need a template for repeat and then when you unroll you add and remove nodes. If something is not relevant we don't create repeat iterations that are hidden.

John: They do count on the index and the UI to address the data.
... Do non-selected cases exist, do non-relevant cases exist? A raft of issues.

Leigh: It would be really nice to have a function that shows what the repeat nodeset is.
... It can't be done by just copying the expression because of relevance.

Erik: We have three: repeat-nodeset, current-item, and repeat-position.

Leigh: master-detail is hard with what we have now, submit and replace the current repeat item.

Erik: We have variables and it's easier.

Leigh: We should have variables.

Erik: Yes, we should, but we have variables in our implementation and still these functions are useful.
... There aren't that many functions: create nodes, case function.

Leigh: transform() gives you node creation.

Erik: it's heavyweight; xquery gives you the same.

Nick: It's heavyweight and the functions are easier.

Leigh: We use L34T to create content and it's easier that insert or node creation functions or xquery.

Erik: Joern Turner wanted to make insert and delete more usable.
... The @context is used to decide where to insert.

<ebruchez> https://plus.google.com/114141433688365651943/posts/aGDpEJX7jj8

John: Maybe we should focus on net new functionality instead of minor improvements.

Erik: You quickly reach limits in the action language and insert/delete are a minor problem but you reach the limits anyway of the action language.

John: You can't define your own functions.

Erik: It's ok in XML for a few things but it's heavy and missing basic programming constructs.

John: So you want javascript

Erik: Yes we have toyed with some ideas. We have a Coffeescript idea.
... XQuery with updates as Alain suggested. Or cross-compiling.
... XForms needs a canonical API for functionality that makes XForms a good thing. Toggle and case, etc.

John: I've lamented the fact that our DOM interface is underbaked. A good interface would be access to functions or methods that do actions.

<ebruchez> https://gist.github.com/790257

Erik: It works client or server side.

Leigh: As hixie said, we have the wrong mix of declarative and imperative, and fixing that would be good.

Erik: actions are good to start but we need something better now.

Steven: XForms changed from a forms language to an application language.

Erik: it's appealing to be able to escape to JavaScript.

Leigh: I proposed IDL between our modules but we got stuck on there being on IDL for XPath and stopped.

Erik: There will be a clash between XPath data model and JavaScript. E4X is dead.

Leigh: There is a JavaScript XPath but no IDL for XPath.

Erik: You could tell users to use JQuery.

Leigh: We got stuck because IDL had no XPath. JavaScript has DOM and XPath. If we defined our functions in JavaScript instead of IDL we would have no problem.

<Steven> <lunch/>

I propose to delete the wikipage entry http://www.w3.org/MarkUp/Forms/wiki/XForms_1.2 which has been superseded by http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0

Hello John_Boyer

<John_Boyer> hi

<John_Boyer> thanks for the ping

I propose to delete the wikipage entry http://www.w3.org/MarkUp/Forms/wiki/XForms_1.2 which has been superseded by http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0

it wasnt me

<John_Boyer> nobody was noisy, I was just checking whether I added an echo or not

<scribe> scribenick: klotz

<scribe> scribe: klotz

John: I think so.

Leigh: We said we'd deprecate the p3ptype property: http://www.w3.org/MarkUp/Forms/wiki/P3ptype

Steven: Right

Leigh: I'm going to do that now.

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/XForms_3.0_Refactoring

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/Future_Goals

<John_Boyer> [[Category:XFormsFutureFeatures]]

<John_Boyer> there are some pages tagged with this that should end up being linked from the future/refactoring page you're working on Erik

<Steven> [Noises of people editing pages]

<ebruchez> http://www.w3.org/MarkUp/Forms/wiki/Create_Node

Leigh: Should we deprecate xf:repeat-nodeset and add xf:repeat-ref

Steven: Oh

John: I imagine so

Steven: And we need to add xf:repeat-indexref

RESOLUTION: We add xf:repeat-ref and xf:repeat-indexref and deprecate xf:repeat-nodeset

I'm adding @xf:repeat-indexref but not adding repeat/@indexref as that's someone else's action.

Nick: May I add eval() to the XPath function library? It's on the list but we didn't discuss it.

John: We have discussed it in the past.

RESOLUTION: We add eval() to XPath function library.

<John_Boyer> anyone worried about xpath injection security attack on server side xforms processor?

<nick> John: Does in your implementation return the id() function the foo element in both cases?

<nick> case 1:

<nick> <foo id="123"><bar>bas</bar></foo>

<nick> id attribute is of type xs:ID

<nick> case 2:

<nick> <foo><id>123</id><bar>bas</bar></foo>

<nick> id element is of type xs:ID

<nick> http://www.w3.org/TR/xpath-functions/#func-element-with-id

<nick> http://www.w3.org/TR/xml-id/

<John_Boyer> <foo><id1 xml:id="x"/><id2 xml:id="y"/></foo>

<John_Boyer> <foo><id1>x</id1><id2>y</id2></foo>

<nick> http://www.w3.org/TR/xpath-functions/#func-element-with-id

Leigh: OK I have now synchronized XForms 2.0 and XForms 2.0 base wikispec Glossary and both appear to be formatted correctly, and only the changed definition text differs between them. The typo "byt" from XForms 1.1 is silently corrected.

Summary of Action Items

[NEW] ACTION: Erik Bruchez to write up valid function http://www.w3.org/MarkUp/Forms/wiki/MIP_functions [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action05]
[NEW] ACTION: John Boyer to add repeat/@indexref to XForms 2.0. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action04]
[NEW] ACTION: John Boyer to change select binding for case to select/@caseref. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action02]
[NEW] ACTION: John Boyer to change switch binding for case to switch/@caseref. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action03]
[NEW] ACTION: Nick van den Bleeken to make it so that In XForms 2.0 xpathversion=1.0 mode the no-namespace XForms functions are also in the xforms: namespace. [recorded in http://www.w3.org/2011/08/29-forms-minutes.html#action01]
 
[End of minutes]

Minutes formatted by David Booth's scribe.perl version 1.133 (CVS log)
$Date: 2008/01/18 18:48:51 $

Scribe.perl diagnostic output

[Delete this section before finalizing the minutes.]
This is scribe.perl Revision: 1.133  of Date: 2008/01/18 18:48:51  
Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/

Guessing input format: RRSAgent_HTML_Format (score 1.00)

Succeeded: s/depricate/deprecate/
Succeeded: s/xpathversion/xpath version/
Succeeded: s/xpath version/xpathversion/
Succeeded: s/spec/wiki/
Succeeded: s/parameters/parameter/
Succeeded: s/YOu/You/
Found Scribe: klotz
Inferring ScribeNick: klotz
Found ScribeNick: klotz
Found ScribeNick: klotz
Found Scribe: klotz
Inferring ScribeNick: klotz
Default Present: John_Boyer, Nick, Erik, Steven
Present: John_Boyer Nick Erik Steven
Got date from IRC log name: 29 Aug 2011
Guessing minutes URL: http://www.w3.org/2011/08/29-forms-minutes.html
People with action items: bleeken boyer bruchez den erik john nick van

WARNING: Input appears to use implicit continuation lines.
You may need the "-implicitContinuations" option.


[End of scribe.perl diagnostic output]