00:14:53 http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#The_XForms_Switch_Module 00:15:37 Updated to reflect caseref attribute, with all the corner cases resolved. tomorrow will add example and make the parallel changes to toggle function (small change) 00:35:36 -John_Boyer 00:35:57 -Leigh_Klotz 00:35:58 Team_(forms)20:22Z has ended 00:35:59 Attendees were Leigh_Klotz, John_Boyer 00:36:33 Zakim has left #forms 05:09:15 nick has joined #forms 05:27:34 ebruchez has joined #forms 16:29:55 RRSAgent has joined #forms 16:29:55 logging to http://www.w3.org/2011/08/30-forms-irc 16:30:40 rrsagent, here? 16:30:40 See http://www.w3.org/2011/08/30-forms-irc#T16-30-40 16:32:02 Zakim has joined #forms 16:32:12 zakim, room for 2 for 240 minutes? 16:32:13 ok, Steven; conference Team_(forms)16:32Z scheduled with code 26632 (CONF2) for 240 minutes until 2032Z 16:33:37 zakim, code? 16:33:37 the conference code is 26632 (tel:+1.617.761.6200 sip:zakim@voip.w3.org), John_Boyer 16:35:05 Team_(forms)16:32Z has now started 16:35:11 +Leigh_Klotz 16:35:57 + +1.250.294.aaaa 16:36:10 zakim, I am +1.250 16:36:10 +John_Boyer; got it 16:36:16 scribe: klotz 16:36:22 scribenick: klotz 16:36:44 Topic: ID Function 16:37:37 Erik: Are we going to decide something? It's not a big feature. We reached a conclusion that XPath 2.0 id is workable for XForms, if we mention that we expect that the types set by XForms are properly captured by the XForms function. 16:37:50 Nick: Then it won't work for IDs in elements. 16:38:14 Erik: If we want that then we should have the element-by-id function. 16:38:23 Steven: What's the problem? 16:38:32 http://www.w3.org/TR/xpath-functions/#func-id 16:38:38 http://www.w3.org/TR/xpath-functions/#func-element-with-id 16:39:14 Erik: The id function wouldn't capture ids defined as element content, in XPath 2.0. They made a new function element-by-id 16:39:24 Erik: Or maybe our interpretation is wrong. 16:39:49 Nick: There is a note in the XPath spec about id. The new function element-with-id was introduced. 16:40:10 Steven: Why do we need to worry? 16:40:20 Nick: Michael Kay says our version is incompatible. 16:40:28 Steven: And our version isn't as precise. 16:41:05 http://www.w3.org/TR/xforms11/#fn-id 16:41:15 Erik: XPath 2 is defined in terms of the isid function. We say we can assign an id by xml:id or type or any type derived. We say attribute, but the parens are ambiguous. 16:41:24 John: I think our function says attribute only. 16:41:40 Steven: That's fully compatible with the XPath id function. 16:42:16 Nick: We don't say since there is an is-id function whether we provide our type MIPs to that. 16:42:30 Nick: So maybe things will work now if you follow the spec to the letter. 16:42:54 John: I don't see what would work differently by feeding the type information to the data model. We said regardless of how it's provided. 16:43:20 Nick: Perhaps other functions still start working. 16:43:54 John: So you're saying if we make a more generic statement it would be the same on this function but other things might change. 16:44:00 Nick: I don't have a particular case. 16:44:57 Erik: It knows it is an ID because of the type. The use case to ensure is id('foo') with foo/@xml:id or foo/@something assigned by type MIP or schema works. We can do that by saying the function from XPath 2 works. If our spec is clear enough 16:45:03 Erik: ... 16:45:21 John: I don't think we need to change the wording of our function; just put in a note that says it's consistent with XPath 2.0. 16:45:29 Erik: Then we have it specified in two places. 16:45:37 http://www.w3.org/TR/xpath-functions/#func-id 16:45:44 Erik: Then we should remove our spec text. 16:45:58 John: Ours is for XPath 1.0. For XPath 2.0 we could say use the XPath 2.0 one. 16:46:14 Nick: It didn't change between XPath 1.0 and 2.0. 16:46:23 Steven: The second optional parameter is in 2.0. 16:46:28 s/Steven/John/ 16:46:39 John: I'm not sure it will take a list as the first parameter. 16:46:54 Erik: What about the XPath 1.0 compatible version of functions? What is our approach? 16:47:11 Nick: I wrote a small paragraph saying if it is a sequence of nodes then it maps to a nodeset in XPath 1. 16:47:28 Erik: If we want to keep the current text for 1.0 that's fine but for 2.0 use the 2.0 function for xf:id 16:47:39 Nick: The XPath text is clearer. 16:47:55 John: For new functions in XPath 2.0 the only way to describe them is like that. 16:48:10 John: So it's OK to do the same for id. 16:48:24 Erik: The text doens't apply exactly for 1.0. 16:48:46 Nick: The is-id accessor is specified in XPath 1.0. 16:49:14 John: The XPath 1.0 data model is defined. It involves type info that isn't from that. 16:49:26 http://www.w3.org/TR/xpath-datamodel/ 16:49:34 Erik: XDM is for XPath 2.0. 16:49:44 Nick: Yes, that's for XPath 2.0. 16:49:55 John: There's a data model with a root node and so on. It's not much. 16:50:01 Erik: Is the is-id accessor defined? 16:50:29 rrsagent, make log public 16:50:30 John: There is an id function. It uses XML 1.0 ID (DTD) information. The assumption was that xml:id would work as well. 16:50:40 Chair: Steven/Leigh 16:50:43 Scribe: Leigh 16:50:53 scribenick: klotz 16:50:59 rrsagent, make minutes 16:50:59 I have made the request to generate http://www.w3.org/2011/08/30-forms-minutes.html Steven 16:51:23 John: The type MIP and XForms model schemas need to provide the ID information to the XDM. 16:51:31 Nick: I'd like to add that. 16:51:42 Meeting: XForms Editorial Meeting, day 2 16:51:44 Erik: That's a major thing. An example for id() as well. The use case is simple. 16:52:06 zakim, who is on the call? 16:52:07 On the phone I see Leigh_Klotz, John_Boyer 16:52:11 Erik: We might want to say this for xs:ID but decide later about other types. 16:52:26 zakim, Leigh_Klotz also has Steven, Erik, Nick 16:52:26 +Steven, Erik, Nick; got it 16:52:33 rrsagent, make minutes 16:52:33 I have made the request to generate http://www.w3.org/2011/08/30-forms-minutes.html Steven 16:52:50 John: It should be normative elsewhere but if not we should put it normatively in id() if we're just doing it for ID types. 16:53:14 Nick: What if you have two ids the same or invalid ids? 16:53:30 John: It's a validity constraint violation and presumably reported. 16:53:47 John: And processor would not be interoperable or consistent. 16:54:49 Leigh: The nodes would just be invalid then right? 16:55:05 John: Well-formedness is different from other rules that are bad but you can still parse. 16:55:38 Leigh: Wouldn't those nodes be invalid according to the schema? 16:55:49 John: Not that I've tried. 16:56:20 John: Not if it comes from xml:id. I haven't tried. 16:56:53 John: I think it's just a lexical description. 16:57:44 http://www.w3.org/TR/xmlschema-2/#ID 16:57:54 Leigh: it says it "should" be used only on attributes. 16:58:16 http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#ID 16:59:32 John: It doesn't enforce comparing to prior IDs. 17:00:02 Leigh: It does say ID represents the ID attribute type from [XML 1.0 (Second Edition)]. T 17:01:39 Erik: I agree, it's not testing uniqueness. 17:02:05 John: So in case of duplicate ids() as Nick asks, implementations are not expected to behave consistently. 17:03:32 Erik: In XPath 1.0 it's invalid as well. You have a document. In XPath 2, the XDM makes it clearer. 17:03:54 Erik: The XDM is based on the PSVI. You can still use the document, but it's invalid because of the duplicated id. 17:04:38 Erik: The function says it matches elements that have this id. 17:05:36 Erik: The XPath 2 id() function says to select the first such element. 17:05:40 Steven: And XPath will still work on it. 17:05:42 "In this situation, the function will select the first such element." 17:07:43 from: http://www.w3.org/TR/xpath-functions/#func-id 17:08:27 Steven: I believe it's OK to stop processing if you find an invalid document. 17:08:48 Erik: XForms relies on invalid documents being processed, integers for examples. 17:09:32 Erik: An initial instance is likely to be schema invalid. 17:09:40 John: That's schema-invalid not XML-invalid. 17:10:05 John: Nick said that it may have ids that are filled in as time goes. You might accept empty-string or ID and that still imports IDness. 17:14:14 Erik: So we can keep the 1.0 spec text but we have to say something for backward compat. 17:15:05 Erik: And for XPath 2 just use the XPath 2 function. 17:15:18 Erik: In practice it won't make much difference. 17:15:22 John: OK. 17:16:26 Nick: This would be the only XPath 2 function that has an XPath 1 definition in our spec. 17:16:38 Erik: Is it the only one that uses the XDM? 17:16:55 Nick: sequences of atomic values could be in a separate section. 17:18:19 http://www.w3.org/MarkUp/Forms/specs/XForms1.2/modules/xpath20/index-all.html 17:20:23 Nick: I propose to change the id() function to refer to the XPath 2 function and add a note that the is-id property consumes informations of the schemas attached to the model and the type MIP (if derived from ID) and in the XPath version section I specify generic rules for handling sequences and atomic types not available in XPath 1.0 and another section for compatibility constraints with our XForms function library and will add a section for the ID function an 17:20:23 d copy in the spec wording about how it behaves. 17:21:05 Erik: For the xf:id function we have 2 ways at least: either a legacy function (keep wording but nobody will use the function). 17:21:14 Erik: Then deprecate the function for XPath 2. 17:21:38 Erik: but keep the note about where the types come from. 17:21:52 Erik: But in practice the implementation is the same. 17:22:11 Erik: Or, in the spec we say it is identical to XPath 2.0. We still need text about XPath 1.0 engine. 17:24:13 Erik: Which do you prefer? 17:24:23 Nick: I would prefer to deprecate the old function. 17:24:37 Steven: It's been the case in the past that we've done that. 17:24:59 Nick: like avg max min. But ours handles invalid content differently. 17:25:08 Erik: We could only deprecate it for XPath 2.0. 17:25:58 Nick: Is that OK? 17:26:09 John: As long as it's present in XPath 1.0 processors. 17:27:21 John: Same as deprecating if(). It was harsher with if(). 17:27:32 Nick: I will put back if() and deprecate it. 17:27:40 Erik: The power function example uses XForms if(). 17:30:09 RESOLUTION: We deprecate xf:id() function and recommend using the XPath 2.0 id() function when using XPath 2, and that type annotations from xs:id from schemas and type MIP is made available to the XPath 2 id() function. 17:30:29 ACTION: Nick van den Bleeken to deprecate xf:id() function and recommend using the XPath 2.0 id() function when using XPath 2, and that type annotations from xs:id from schemas and type MIP is made available to the XPath 2 id() function. 17:30:30 Created ACTION-1821 - Van den Bleeken to deprecate xf:id() function and recommend using the XPath 2.0 id() function when using XPath 2, and that type annotations from xs:id from schemas and type MIP is made available to the XPath 2 id() function. [on Nick Van Den Bleeken - due 2011-09-06]. 17:31:45 ACTION: Erik Bruchez to clarify with XPath WG that it is possible to add type annotations to the XPath 2 engine, even if the data is not lexically valid at the time. 17:31:45 Created ACTION-1822 - Bruchez to clarify with XPath WG that it is possible to add type annotations to the XPath 2 engine, even if the data is not lexically valid at the time. [on Erik Bruchez - due 2011-09-06]. 17:33:09 Topic: Subforms 17:33:45 http://www.w3.org/MarkUp/Forms/wiki/Load_Embedding 17:35:10 Leigh: There are three levels: load static host markup, load markup with UI elements, and load markup with UI and models both. In the third case you need to have a way to communicate between models. 17:35:25 Erik: We have the question of model scoping if you allow models in the body. 17:35:44 Leigh: We don't have anything to say about where models go in the host language. 17:36:11 Erik: Global is a possibility, yes. But we have been thinking of having scoping of models, for example a local model within a repeat. 17:36:27 http://wiki.orbeon.com/forms/projects/xforms-model-scoping-rules 17:36:34 Erik: So it's a local variable, a mutable container for data. 17:37:09 Erik: We haven't implemented it but we have some ideas and use cases described there. You could scope the model lexically, but make an exception for the top level models. 17:37:51 Leigh: So the betterForm inclusion just would act as if the model had been typed in statically. 17:38:57 Leigh: I think they use submission to communicate between the models. 17:39:09 Erik: You could use dispatch with context info and listen. 17:40:22 http://betterform.de/doc/betterFormUserGuide.pdf 17:40:32 Leigh: They use resource="model:foreign#instance('contact')/data/postaladdress[@id='2']" 17:40:32 replace="none" 17:40:32 method="post" 17:40:32 model=“local“/> 17:41:12 Erik: Mark Birbeck had an instance function that lets you write to another model. We have it. It breaks encapsulation. It's cleaner to have an event but it's heavier. 17:41:26 Leigh: So not adding anything other than dispatch context info. 17:41:42 Erik: It's the same as setting data in encapsulated classes vs calling methods. 17:42:22 Leigh: I'd proposed reception as an inverse of submission. 17:42:29 Erik: That's the same as an event handler. 17:42:34 Nick: It's what Erik proposes. 17:43:02 Erik: It's ugly syntax though. And you can't get an answer back. So the recipient writes the element value down. 17:43:50 Erik: Maybe with custom XPath functions we could make it cleaner. But the bottom line is that you can talk between models if you add context info. 17:44:31 Leigh: I see submission/reception as a clean way of authoring it. 17:47:17 Erik: it's a specific communication mechanism. it's more generic than calling events. I can pass multiple parameters. I also have the benefit that the action handler can do what it wants. 17:47:29 Nick: I find it strange that if you submit the data and it's inserted somewher. 17:49:05 Leigh: It seems easier to author. 17:49:16 Erik: It may be a little shorter for some use cases. 17:49:24 Nick: What if the model is in a repeat. 17:50:02 Erik: That's a different problem; forget dynamic form loading and imagine a page with two models. They are proposing a mechanism of submission. 17:51:00 Leigh: I'm wondering if it's not more useful than we think. 17:51:10 Erik: Why not just instanceOFModel 17:51:31 Leigh: I mean submission targeting another submission which gives you encapsulation. 17:52:38 Nick: The submission receiving has no need to know what to submit. 17:52:59 Leigh: We already have submission with no serialization. 17:53:29 Erik: It's funny for the submission to be called that. I understand the appeal of the idea. The other side isn't a server but a model. 17:54:12 Erik: I can see how it's interesting. Although if you had a lightweight mechanism via XPath to say that this model exports these functions (custom XPath functions) and use model2:foonbar(a,b,c) that would be more lightweight. 17:55:35 Leigh: We did this with dialog before and it operated on a subtree and it either saved the data back or it didn't, for cancel. 17:55:59 Erik: We'd like dialog to be fully encapsulated as with XBL. We used our component model and everything was fully encapsulated. 17:56:18 Leigh: How does the data get written back out? 17:56:31 Erik: The cleanest way we have is to dispatch the event back. 17:57:24 Leigh: It seems just like the from the submission response. 17:57:37 Erik: but if I don't need all the data from the dialog, just the first name. 17:58:06 Nick: A dialog to fill in from and to address...if the receiver is defined in the model you have to have two receivers. 18:03:36 Leigh: THat's a question of how you define the markup for the included dialog. You can pass the ID of the target submission in. 18:03:54 Leigh: That doesn't require XBL and gives you parameters in a RESTful way. 18:04:30 Erik: You lose loose coupling. You could have static markup around in the transclusion point and catch the event there and dispatch the results yourself to the correct location. 18:04:51 Nick: That's how I use Orbeon dialog. 18:05:25 Erik: I see conceptually an exchange of information looks like either a function call or an event or a submission. 18:06:55 Leigh: I thought you'd like the async message passing of the submissions. IT's just syntactic sugar for event handler responses that write to instances. 18:07:38 18:07:40 Erik: It seems too specific. Perhaps a better syntax for an event handler that accepts and writes. 18:08:07 Erik: This receives the data and is pretty lightweight. 18:08:16 Leigh: This you put in the receiving end? 18:08:38 Erik: Yes. This is the dispatch end. Unfortunately, the syntax is a little heavier. 18:08:46 18:09:03 Leigh: Yes, I see it's not that bad. 18:09:25 In XPath, you would like to write model2:foo(instance()) 18:09:39 Leigh: But you stilll have to know what model you target. 18:09:41 Erik: Yes. 18:09:58 Erik: We implemented something like this: 18:10:00 model2:foo(instance()) 18:10:30 Erik: We have a way to run XPath from an action directly. That's much lighter weight. Similarly, instead of an action handler we can use custom functions. 18:10:42 Leigh: I think you've convinved me we can separate model communication from subforms. 18:10:49 s/convinved/convinced/ 18:11:26 Leigh: I think Alain agrees you can use insert. 18:12:17 Leigh: And on to the other isuses. 18:12:19 Erik: Ids 18:12:22 Leigh: Yes. 18:12:51 Erik: If you have a global namespace for ids, what do you do with a duplicate id? 18:13:31 Erik: In the use case of betterForm I am making up, the assumption is that it is there to solve a performance problem and they could use XInclude. 18:13:40 Leigh: No, the resource URI can have arbitrary parameters. 18:14:08 Leigh: Or a chooser with parameters that are dynamic 18:14:21 Erik: So performance and modularization. But with a single namespace you reach issues. 18:15:37 Leigh: If inclusion acts just like typing the model and UI statically, then are we losing a degree of freedom for future definition by saing that models anywhere are the same? 18:16:24 Erik: It's a basic question whether it's acceptable to pretend to do something for modularization without having something for IDs. Is it for performance and new subforms? Conceptually it's a little bothersome. 18:16:44 Leigh: Alain says he's seem xslt:generate-id() used in this case. 18:17:03 Erik: We created components using XSLT before we used XBL, so for a fancy date picker you can't include it multiple times. 18:17:39 Erik: SO we had an ID generation and we could use xslt to count. 18:17:57 Leigh: In this case it's a resource and the generator of content doesn't have a way to do that. 18:18:08 Erik: So how do you dispatch an event to an included model. 18:18:27 Leigh: Unless you pass the id prefix in. 18:18:49 Erik: DO you delegate the ID re-writing to the PHP script that generates the ids? 18:19:38 Leigh: The simple idea is to say it's just like static authoring and if you have ID collisions then you have ID collisions and authors can figture out how to do that themselves. 18:20:12 Erik: A guarantee of separate components with event interaction between implementation and consumer...should we specify a simple mechanism known to be weak. 18:20:56 Leigh: So do we just leave this as an extension? 18:22:13 Erik: The AJAX people find it unbearable that there isn't a component model. 18:22:56 Alex Russel of Dojo fame says: "Web Components are a collaborative design that I've been integral in. Not only do we need them, they're overdue!" 18:26:48 Leigh: Do we say it's the same as static authoring or do we just tell people to do this as an extension and we'll have a bigger, better deal later. 18:27:24 Erik: We have other mechanisms to do something like this. We dynamically load XForms into a shadow DOM, except that the entire resulting form is in the shadow DOM and separate from the rest of the form. 18:27:40 Erik: We also have a related mechanism in shadow DOM to dynamically load XBL componets. 18:27:59 Leigh: But that's what you'd like to replace with someting more standard in the future, with the browser shadow dom? 18:28:17 Erik: No, it's not going to replace it entirely. XForms layers on a component model. 18:28:50 Erik: So, what's needed is conceptual compatibility with the HTML component model for shadow DOM and events. 18:29:25 Leigh: Do you think loading resources is more easily done in the future with the new conceptual framework? 18:29:54 Erik: Yes, you would load it and have the shadow DOM. It's as if you had dynamically done it with XBL via an API. 18:30:26 Leigh: What's the difference with what they do now with XHR and div? 18:30:51 Erik: The content goes into the shadow DOM. You cannot see the IDs from the outside. The events do not flow out. So it's encapsulated. 18:31:31 Erik: You could imagine a variation with xf:submission like betterforms load where you load the subform into the shadow DOM of the div/@id='subform' and xf:load and target that as an alternative to using JavaScript. 18:32:43 Leigh: So if we proposed it now it would just be an implementation detail of the host language whether the host language supports event encapsulation and ID. 18:34:44 John: This seems like an awful lot of technical detail. They have component communication. 18:36:04 Leigh: We already decided that's separable and Erik shows a way to do it with existing XForms 1.2 dispatch. I believe that if there is a Shadow DOM API in the future then you get ID transparency and event enapsulation but if your host language (like HTML today) doesn't have it then you don't get it. 18:36:46 Erik: The spec needs to say whether it's loaded in the DOM or the Shadow DOM. 18:37:02 Leigh: So maybe show="embed" is DOM and if there's shadow DOM in the future it's another value. 18:37:33 Erik: We need to say what to do about ids (the author must handle it). We don't have anything to say about models being anything but global. 18:38:28 Erik: So by default that's what would apply. You would then leave it up to the implementation to decide what that means. 18:38:43 Leigh: I see three possibilities: host language, host language + UI, host language + UI + model. 18:39:34 Erik: You still have to say the sequence of initialization of models. And at what point the control tree is constructed. First the model initialization, then the tree of controls. 18:39:55 Erik: Does the betterForm documentation specify that? It seems obvious but it needs to be written. 18:40:51 Leigh: I think we should wait for Alain's implementation. 18:41:00 Erik: Does it load models? 18:41:01 Leigh: Yes. 18:41:32 Erik: I don't see anything really wrong with the feature. It's a little unsettling that we cannot do the right thing to have encapsulation. 18:41:38 Leigh: Yes. 18:42:08 Leigh: So let's keep this still on track for XForms 2.0 but wait for a second implementation. 18:42:17 Leigh: That should settle some of these event issues. 18:42:45 Topic: Model-based switching 18:43:03 John: I did some updates based on Nick's comments. And changed the example and toggle action. 18:44:54 Topic: ID Function 18:44:59 Erik: I want to delete this page. 18:45:02 http://www.w3.org/MarkUp/Forms/wiki/Make_id()_function_XPath_2.0_compatible 18:45:35 Leigh: I agree I don't think he needs an answer now that we're doing it. 18:46:24 http://www.w3.org/MarkUp/Forms/wiki/Category:XForms20 18:46:48 http://www.w3.org/MarkUp/Forms/wiki/Category:XFormsFutureFeatures 18:47:09 Topic: 2.0 features 18:47:26 Erik: How do we decide what features go into 2.0? Do we have a cutoff date? 18:47:46 Steven: We've already made decisions on some of them. 18:47:52 Erik: But we have lots of them. 18:48:04 Steven: We should concentrate on getting those into the draft. 18:50:02 Leigh: We have Accepted. 18:52:10 Erik: Only 2 are marked. 18:52:17 Leigh: I'll mark some more. 18:52:23 Leigh: With resolutions. 18:52:42 John: We don't have a CSS pseudo-element for switch/case as we do for repeat. 18:53:14 Resolutions are here, but not updated with recent resolutions http://www.w3.org/MarkUp/Forms/wiki/Resolutions 18:53:32 I'll update it after lunch 18:53:38 http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#Pseudo-elements 18:54:00 Leigh: So we should go through and mark the ones we want. 18:54:06 John: We did that by assignment. 18:54:17 John: We just need to check the action items. 18:54:31 Erik: I have one for valid() and one for @iterate and proposal for AVT. 18:54:55 Leigh: Are you able to do AVT without variable? 18:55:01 Erik: Yes, but it's less useful. 18:55:11 http://www.w3.org/MarkUp/Forms/wiki/Variable 18:58:35 -John_Boyer 18:58:36 -Leigh_Klotz 18:58:37 Team_(forms)16:32Z has ended 18:58:39 Attendees were Leigh_Klotz, +1.250.294.aaaa, John_Boyer, Steven, Erik, Nick 18:58:47 lunch break 19:28:48 Zakim has left #forms 20:07:30 John_Boyer has joined #forms 20:21:19 nick has joined #forms 20:21:48 klotz has joined #forms 20:21:51 Steven has joined #forms 20:22:01 Zakim has joined #forms 20:22:17 zakim, code? 20:22:17 sorry, John_Boyer, I don't know what conference this is 20:22:19 zakim, room for 2 for 240 mins? 20:22:21 ok, Steven; conference Team_(forms)20:22Z scheduled with code 26633 (CONF3) for 240 minutes until 0022Z 20:22:28 Team_(forms)20:22Z has now started 20:22:35 +Leigh_Klotz 20:22:40 ebruchez has joined #forms 20:22:43 rrsaent, make minutes 20:22:49 rrsagent, make minutes 20:22:49 I have made the request to generate http://www.w3.org/2011/08/30-forms-minutes.html Steven 20:23:04 +John_Boyer 20:31:53 Topic: Errata 20:31:55 http://www.w3.org/MarkUp/Forms/wiki/XForms_1.1_First_Edition_Errata 20:31:58 John: I will be applying existing errata. 20:34:05 Topic: @indexref 20:34:24 John: The selected case is necessary for signatures, but I don't need it for repeat index. 20:34:29 Nick: Why? 20:34:52 John: Behaviors could take place but switches are often used and index isn't fundamental; it's theoretical. 20:35:21 John: It's a lot of trouble for something nobody has advocated: test cases, corner cases. 20:35:30 Nick: Why do you need case and not repeat? 20:35:36 John: It's about what people normally do. 20:37:28 Erik: I agree that case is more useful than index. 20:38:00 Leigh: Do we have the currently repeat item? 20:38:40 John: The repeat cursor. A non-relevant repeat items is removed from rendering. The group exists. 20:38:53 Leigh: So the index skips? 20:39:41 John: It may not be but people don't use repeat. 20:40:20 Leigh: I do it. You can't find the item if there are non-relevant repeat items. 20:41:35 John: If you're the 3rd visible row and the 5th item in the nodeset it's correct, not based on the relevance. 20:42:13 John: That's an orthogonal issue to whether to store the data using the index function. For switch, we made a stronger binding. It's two-way. 20:42:29 John: So do we need that two-way control. 20:42:31 Steven: Sure. 20:42:48 Steven: Yes, go for it, definitely. I have use cases. 20:42:51 John: JUst wanted to be sure. 20:43:17 John: The context attribute everywhere is also mine: 20:43:18 http://www.w3.org/MarkUp/Forms/wiki/@context_everywhere 20:43:35 John: I did a modular spec but we need to say wherever there is @ref we can have @context. 20:43:44 John: And functions matches() and replace(). 20:43:59 http://www.w3.org/MarkUp/Forms/wiki/Regex_pattern_and_replace_functions 20:44:04 John: But it's in specxml. 20:44:16 Erik: Where do we put functions we need only without XPath 2.0? 20:44:42 Nick: I deprecated id(). 20:44:53 John: But we still need it for XPath 2.0 until we deprecate XPath 1.0. 20:49:30 Erik: In XPath 2.0 we don't need xforms:id(). 20:49:39 John: That would be the simplest. That's the simplest for matches and replace. 20:52:20 I have updated http://www.w3.org/MarkUp/Forms/wiki/Minutes#2011 and http://www.w3.org/MarkUp/Forms/wiki/Resolutions 20:54:33 Nick: I'll restructure the list of XPath functions so they aren't organized by return types. 20:58:27 4.5 Core XForms Functions 20:58:27 4.1 Boolean Functions 20:58:27 4.2 Numerical Functions 20:58:27 4.4 Date and Time Functions 20:58:27 4.6 Node creation Functions 20:58:28 4.3 Utility Functions 20:58:30 4.4 XPath 1.0 functions 20:58:32 4.8 Extension Functions 20:59:25 what distinguishes a utility function from a core function. maybe too fine a categorization 21:10:19 Topic: choose and if 21:10:26 ... 21:10:42 Erik: You can analyze the choose() function and assume it evaluates all its arguments. 21:11:01 John: OK for XPath 1.0 but we need the right dependencies for if...then...else for XPath 2.0. 21:13:05 Nick: Then you need to rebuild when your condition changes 21:13:28 Erik: Or detect it and do it automatically with static analysis. We could recommend not using if/then/else in bind. 21:13:46 Nick: You could try executing all 3 but if one fails then it's not a binding exception. 21:14:03 John: We're going out of our way to solve a problem we don't know how to solve yet. Let's not remove this function. 21:14:12 John: It helps work across xpath 1 and xpath 2. 21:20:34 if (a != null && a.foo = 10) then … else ... 21:36:02 John: choose works in XPath 1.0 and XPath 2.0 21:36:07 Erik: So that's a vote for keeping choose. 21:36:41 Topic: Label and @for 21:36:57 http://www.w3.org/MarkUp/Forms/wiki/Label_For_Attribute 21:38:59 Erik: Ours doesn't handle repeat. 21:39:09 Leigh: What about non-relevant group with input inside? 21:39:33 Erik: We tie it to the form control. 21:40:29 Erik: We haven't solved the repeat questions. What if your repeat has no iterations, for example. A static label is OK. Does it make sense? 21:40:35 Leigh: Does it just disappear? 21:40:47 Erik: You would hope to have table headings even if the table is empty. 21:43:15 Leigh: If you want static headings that show even when the control doesn't then you can't use @for. 21:43:29 Nick: You can use it for A11Y. 21:44:47 Leigh: I think it's a red herring to tie it to A11Y. You can write or not write accessible markup and we can't prohibit everything. IF you want the label to show always don't use @for. 21:47:07 John: For repeat, the label is outside the repeat and is decorating something inside the repeat. The label has a visual component and will be governed by where the label element is. It uses the @for to say what I'm the label for, for A11Y purposes. So every instance of a repeat would receive that label unless it had an overriding label within it. 21:47:47 Leigh: So the label is for the current repeat item? 21:48:52 John: For manipulating a switch that action applies to switch in the current indexed repeat item. That's for an imperative command. The label/@for is more declarative. The template is inside the repeat. It seems it should behave as if the label were physically inside the UI element? 21:48:58 Leigh: What about the XPath context? 21:49:16 John: Wherever the label. 21:49:22 s/label./label is./ 21:50:19 John: It's applicable to every instance of that input. A copy is created for every input. You can put it somewhere else. The XPath needs to be evaluated wrt the in-scope evaluation context, outside the repeat. The result of evaluating that label is the text message. 21:50:38 Leigh: So I have 50 labels on the screen? 21:51:22 John: No, the visual component shows at one location. The label text message is there. The screen reader focus on an input should receive the text-message from that one label item. 21:51:41 Leigh: So Erik's question is what if there are no repeat iterations? 21:51:49 John: It's provided for no repeat iterations. 21:51:57 Erik: Does it show? 21:52:04 John: Yes. 21:52:44 Erik: So you have a mismatch between the label and the appearance on screen. In our implementation the label goes away when the control is non-relevant. 21:52:53 John: That is based on the UI context it is in. 21:53:00 Erik: It's a property of the control to be relevant. 21:53:24 John: And that controls the label that it physically contains. The label outside makes that label into a first-class UI control. 21:54:27 Leigh: Then it's pointless from my point of view. 21:55:12 Erik: If the control is non-relevant in our processor it goes away, I think. Now when you click on the label it focuses on the control. There is a relation when we generate label/@for in HTML. The relationship has some value. 21:55:43 John: What if you put output for. You could use the output as a column label outside the repeat. That provides the message in lieu of an empty label. 21:56:11 Leigh: But label can already contain output so you can do label/@for with output inside. 21:56:30 John: Do you have to make the label be a first-class citizen to make the output a label for the repeat. 21:57:07 Erik: You can just label /@for you don't need output/@label. 21:57:32 John: There is value in output/@for even without label/@for. 21:58:26 visually the "label" (output) is placed in a column header type of location, but then the @for tells which item in every row of the repeat receives the label as an accessibility message 21:59:07 Leigh: CSS isn't helping and I'd like to see the label allowed to be placed elsewhere. 21:59:14 Erik: It's long overdue. 21:59:23 John: You could just stick it in a group and bind it to a node. 21:59:34 Steven: If you want that do itthe otehr way around 21:59:36 21:59:51 ... 22:00:19 And then outside you say elsewhere. 22:00:40 Steven: The label keeps all its context, environment, relevance inside the input. 22:01:05 is that an intent-based UI element, or a presentation element? 22:01:28 showlabel seems like a presentation element 22:01:33 Erik: It's just a question: does the validity apply to the label itself? You already have them linked. You can decide to show the value or not. It's an implementation decision. We could go both ways. 22:02:09 Steven: This is about presentation. CSS should be doing this it but it isn't so we have to do something about presentation. 22:02:16 John: output is a nod toward presentation 22:02:20 Steven: Output is functional 22:02:27 John: You can link the output 22:02:29 Erik: How? 22:02:32 John: output/@for 22:02:40 Erik: or label/@for, neither we have 22:03:02 John: The approach Steven advocates that there might be an output outside the repeat gets its label inside the output. 22:03:06 Erik: Same problem. 22:03:19 s/itthe otehr/it the other/ 22:03:26 Erik: Does the label outside the repeat show or not? 22:04:00 John: I want the column headers of a table to show even when the table has no rows. If I didn't want that I would say whatever is creating the header and stick it elsewhere. 22:04:50 Leigh: What if the value isn't relevant left/right with row headers of individual values? 22:05:06 John: For A11Y I want the object I'm on to contain the row label and the column header of the table. 22:05:17 John: So the screen reader tells me in the column. 22:05:40 Erik: There are two use cases: the column header and the non-column. 22:06:37 Leigh: If you want 100% time column headers then use HTML4. If you want XForms relevance, use label. 22:06:59 Erik: So there are two cases. 22:07:26 Leigh: And if you are labeling the table use the presentation language to label the table. 22:08:08 Leigh: If you are labeling the control use label. 22:08:56 John: If we had a new UI element called label which makes an SNB but the relevance of the control (unlike all others) is not governed by the node to which it is bound but also by another node that it is the label for. 22:10:12 Erik: We don't have the node of relevant label. If an input control contains a label and the ref is an empty nodeset the label at best will be blank. Its visibility is governed by the SNB and the relevance of the control it points to. 22:10:24 John: Which I suppose we already do in the container case. 22:10:41 Erik: I agree we don't have it yet but I am not sure it's weird. 22:12:27 Leigh: 22:12:34 Erik: for isn't a good attribute for that's. 22:12:48 s/that's/that/ 22:13:27 John: That sounds like it will work for table column headers. We're just saying the label is for the other input. 22:13:48 Leigh: That's why I said it would control relevance and Erik didn't like the name. 22:13:57 John: A control that doesn't exist can't be non-relevant. 22:14:12 Erik: If it's not in any repeat iteration it doesn't exist and we consider it non-relevant. 22:14:35 John: What if you did bind to an input in a repeat and some repeat items are relevant and some aren't. 22:14:46 Erik: You could use the current index. 22:14:48 John: Yes. 22:14:58 John: That means if any are relevant. 22:15:09 Erik: It's an argument against supporting it inside repeat. 22:15:28 Erik: Zero rows is a problem, or non homogeneous ones. 22:15:36 Erik: Things aren't as obvious as they seemed initially. 22:15:47 John: Will it be possible that the label is the label for multiple items. 22:15:56 Erik: That's what you would be saying. 22:16:03 John: I mean a space-separated list of IDs. 22:16:09 Erik: It doesn't seem useful. 22:16:13 John: That's the row-label case. 22:16:49 Erik: This is a practical thing for HTML-based implementations. label/@for matches to HTML4 and screenreaders and click and so on. 22:17:03 John: What happens if you have two label/@for that are the same? Two labels for the same control? 22:17:17 Erik: I heard it causes problems for screenreaders but I'm not sure. 22:17:36 Erik: The spec says that one input must have only one label. 22:18:54 http://www.w3.org/MarkUp/Forms/wiki/Metadata_Controls 22:19:27 John: If this purely presentation why don't we leave this in HTML. Then xforms:label, if empty, the label A11Y message may come from the host language. Oh you want ot inherit the relevance. 22:20:32 Erik: It would be sad to give up because of edge use cases. label/@for is familiar for HTML users. 22:23:05 Erik: Help on a whole-page group may be better than help on a model. 22:24:50 Leigh: I think he's asking for xml:lang on all elements to control display. 22:25:14 Erik: So far concretely, does label inherit the control's relevance and does it work with repeat? 22:25:49 Erik: Who doesn't agree with the relevance propagation if the control isn't relevance what does the label do? 22:25:56 John: I agree it's not so weird. 22:26:04 Steven: I want it to work in repeat. 22:26:07 John: What exactly? 22:26:17 Steven: I don't want it to be a special case. 22:26:41 Erik: The control inside the repeat and the label outside the repeat is the special case. The label inside the repeat but outside the control is OK. 22:27:02 Erik: When you move the label outside the repeat the control is repeated but the label is not. 22:27:08 Steven: So 22:27:26 22:27:34 22:27:55 22:28:01 22:28:04 22:28:55 Leigh: So it devolves to what happens if the repeat is empty. 22:29:16 John: I think things that are column headers shouldn't go away when empty. 22:30:49 John: Just use a group that wraps the labels. 22:31:33 Leigh: Just use text then, just use span. If you want labels that go away when the control goes away, use label/@for. 22:31:39 John: I agree. 22:32:03 or use a set of outputs that show when the table is empty, so user sees column headers 22:32:25 Erik: It's certainly simpler if the labels go away when there is no iteration. 22:33:03 Erik: If I got back to the HTML implementation, you have to unroll the repeat. They would have different iDs on every single control. The table header with the label will have a for attribute pointing to what? 22:33:40 Erik: In our case we have an HTML template pointing to that hidden one. You cannot express one label pointing to multiple concrete controls. It might not be an issue independently from HTML. 22:34:17 Leigh: THen point the label/@for to the current row. 22:34:51 Nick: I don't think they will read it if you change it after. If you update the id label the screen reader already has done it. 22:35:05 Erik: Practically you put in a hidden label for the control. 22:35:25 Leigh: So that's what your processor would output. 22:35:44 Erik: The column headers would have to have column headers that change. 22:35:48 Nick: No 22:35:59 Leigh: They wouldn't becuase you have an alternative proposal. 22:36:54 Erik: So it would output the hidden labels. 22:37:16 Nick: What happens when you click on the label? 22:37:27 Erik: It would jump to the current control. 22:37:36 s/control/row control/ 22:37:52 Erik: I think you can implement it. 22:41:35 Leigh: OK I've edited the wiki. 22:42:10 Leigh: Now what about help/hint/alert? 22:43:00 Erik: The alert can be displayed many ways. If you have a visual representation then the whole thing makes sense for them as well but no so much for help. 22:43:42 Leigh: I use the hyperlink in label/@appearance="minimal" 22:44:30 Leigh: SOrry, help/@appearance="minimal" 22:45:24 Erik: and you can change the mouse cursor 22:47:02 Leigh makes the label a hyperlink to help that turns into label text which we then use JavaScript to decorate into a window opening... 22:52:14 http://xformstest.org/klotz/2011/08/pizza/pizza.xml 22:54:09 The topping entry seems a bit bizarre (small medium and large should be for size only, not also topping). The Notes field seems to contain the extra cheese 22:59:25 FIxed the topping. 23:00:30 Steven has joined #forms 23:01:03 rrsagent, here? 23:01:03 See http://www.w3.org/2011/08/30-forms-irc#T23-01-03 23:03:53 Erik: So do we use help/hint/alert with @for or not? 23:05:27 Leigh: I'm happy to wait for a second implementation of that. 23:05:31 Erik: What about betterform? 23:05:42 Erik: They have multiple labels. 23:11:21 http://lists.w3.org/Archives/Public/public-forms/2011Aug/0026.html 23:49:25 I've finished applying the 12 current XForms 1.1 errata in http://www.w3.org/MarkUp/Forms/wiki/XForms_1.1_First_Edition_Errata to the XForms 2.0 specification and to the base. 23:53:18 +1