- From: Weston Ruter <westonruter@gmail.com>
- Date: Fri, 4 May 2007 01:51:11 -0700
- To: "John Boyer" <boyerj@ca.ibm.com>
- Cc: "HTML WG" <public-html@w3.org>, public-forms@w3.org, "Maciej Stachowiak" <mjs@apple.com>
- Message-ID: <fb8299e10705040151y46357751n2bda929ce96b258a@mail.gmail.com>
John, I meant to direct you to this working test case of the "Repeated rows" spec example which you referred to: < http://weston.ruter.net/projects/repetition-model/testsuite/002.html> Weston On 5/4/07, Weston Ruter <westonruter@gmail.com> wrote: > > Hi John, > > On 5/3/07, John Boyer <boyerj@ca.ibm.com> wrote: > > > 1) Observe first off that the template row is not differentiated from > the data > > rows, so a poor user experience results when a user deletes the template > > > row since it is no longer possible to add a new empty row. > > This is not accurate. The template cannot be deleted by invoking the > repetition behavior (see working "planet" example < > http://weston.ruter.net/projects/repetition-model/testsuite/003.html>). > The template row is differentiated from the data rows in that its > repetitionType DOM property is set to REPETITION_TEMPLATE (versus > REPETITION_BLOCK for the blocks), and furthermore in that the template node > does not appear in the repetitionBlocks NodeSet. > > > 2) Moreover, if all the rows are deleted, then how does the table ever > > become non-empty again? > > Again, only the repetition blocks are deleted; the template remains > intact. The table becomes non-empty by invoking the template's > addRepetitionBlock method. > > > 4) It's also unclear how you'd easily do some kinds of common UI > constructs > > like adding a new row relative to where the current focus is located in > the table > > or deleting a row with a button that is not in the table row. Maybe > these are > > solvable with current WF2, but they are common enough use cases to > warrant > > looking at the markup. > > I agree. I think there should be two more buttons defined for the WF2 > repetition model: add-before and add-after. When these buttons are placed > within an instantiated template (a block) then they would insert a new block > in the appropriate location (before and after, respectively). This > functionality, however, can be scripted currently by passing a refNode > argument to the addRepetitionBlock method. > > > 5) Finally, the note at the end of nested repeats about the need for > unicode > > hacks to bandage the XML non-validity problems seems another symptom of > > the need for a better solution.. > > I agree. Although perhaps HTML5 should explicitly allow left and right > square brackets in IDs since it's not XML anyway? :-) > > Weston > > > On 5/3/07, John Boyer <boyerj@ca.ibm.com> wrote: > > > > > > I think perhaps the most important bit missing from my off-the-cuff > > laundry list is a requirement that I have gotten so used to taking for > > granted that it just didn't float to the top yesterday. > > > > It's important because it seems to be a bit at odds with some of the > > technical approach taken in WF2, which in turn occurred to optimize a > > seamingly competitive need. > > > > Frankly, it's expressed in our current charter ( > > http://www.w3.org/2007/03/forms-charter.html) in the following sentence: > > "It is a goal that this work will be conducted in a task force jointly with > > the HTML WG, draw on the Web Forms 2 work (which moves from the Web > > Application Formats Working Group to the HTML Working Group) and be > > integrated into the XForms architecture (following design principles such as > > the separation of presentation from content)." > > > > The key is the parenthetic: a foundational tenet of XForms architecture > > is the separation of presentation from content. XForms has tended to > > optimize on this tenet. Part of WF2 reflects a desire to relax that tenet, > > and in a number of ways the forms working group has expressed amenability to > > that desire. > > > > WF2 on the other hand seems to optimize on backwards compatibility, > > which no one is arguing against in principle, but it seems in some places to > > be carried to the extreme of avoiding the use of better tags/attributes even > > for net new features for which only limited compatibility with html4 > > browsers can ever be hoped for. > > > > A concrete difference can be seen, for example, with the approach to > > repeating structures. In XForms a <repeat> expresses the template, and the > > *data* associated with that repeat determines how many instances of the > > template become available at run-time. In WF2 ( > > http://www.whatwg.org/specs/web-forms/current-work/#repeatExample ), it > > is shown that the UI controls are repeated in the markup itself as there is > > *no* separation of data and presentation. > > > > 1) Observe first off that the template row is not differentiated from > > the data rows, so a poor user experience results when a user deletes the > > template row since it is no longer possible to add a new empty row. > > > > 2) Moreover, if all the rows are deleted, then how does the table ever > > become non-empty again? > > > > 3) And if "mid-population" data is obtained by an ajax call, you have > > again the problem of not having an empty row template to work with. > > > > 4) It's also unclear how you'd easily do some kinds of common UI > > constructs like adding a new row relative to where the current focus is > > located in the table or deleting a row with a button that is not in the > > table row. Maybe these are solvable with current WF2, but they are common > > enough use cases to warrant looking at the markup. > > > > 5) Finally, the note at the end of nested repeats about the need for > > unicode hacks to bandage the XML non-validity problems seems another symptom > > of the need for a better solution.. > > > > What would be better is a technical approach that allows the repeating > > construct to be identified and the template to be specified, but > > prepopulation data should be provided through a separate instance. It also > > illustrates what we mean by "scale up to XForms architecture" while also > > preserving the most backwards compatibility with html4 that could reasonably > > be expected. Here is sample of the serialization of the planets and moons > > example from WF2 the way it might look with a good separation of > > presentation and data: > > > > Presentation: > > > > <ol> > > <li> > > <repeat name="planets"> > > <label for="name">Planet: </label> <input name="planet" .../> > > <h3>Moons</h3> > > <ul> > > <repeat name="moons"> > > <li> <input name="moon" /> <button type="delete">Delete > > moon</button></li> > > </repeat> > > </ul> > > <button type="insert" repeat="moons">Add moon</button> > > </repeat> > > <button type="delete">Delete planet</button> > > </li> > > </ol> > > <button type="insert" repeat="planets">Add planet</button> > > > > The data model, which is optional if you don't want to prepopulate the > > table, would look like this: > > > > <form> > > <instance> > > <data> > > <planets> > > <planet>Mars</planet> > > <moons> > > <moon>Phobos</moon> > > <moon>Deimos</moon> > > </moons> > > </planets> > > <planets> > > <planet>Neptune</planet> > > <moons> > > <moon>Triton</moon> > > <moon>Nereid</moon> > > ... > > </moons> > > </planets> > > </data> > > </instance> > > > > <ol> ... from above ... </ol> > > </form> > > > > > > The html4 browser sees an empty table and some buttons, which don't > > work. This is expected since html4 browsers won't really understand how to > > operate html5 repeats, so this is about the best that can be expected for > > "backwards compatibility". > > > > But an html5 browser now has the desired nested table, and at the same > > time all the problems I listed above go away. The template is clearly > > distinct from the data, so you can't delete the template and you can recover > > from the empty table problem. It is easy to extend the buttons to handle > > insert/delete at currently focused location because the repeats are clearly > > identified for what they are and don't do double duty as template and data. > > And the above never resorts to XML invalid content, so it is easy to > > provide "two equal serializations", one XML and the other tag soup, that > > mean the same thing. > > > > The benefits don't stop there. Aside from the runt-ime (i.e. the > > concerns of web browser makers), the above separation advantages not only > > design tools that seek to make it easier to author forms, but most > > importantly the authors of and the CPUs that have to run server-side code > > for processing these forms. For example, it is much easier to write form > > prepopulation code (e.g. a JSP) that just gets some data and drops it in > > one place in the form than it is to write the code that has to generate the > > UI controls to represent that data. Aside from being easier to write, the > > code is less brittle. And then there's the tremendously important aspect of > > the lower server load that the separation provides. The transactional > > volumes required in government to citizen forms applications are really > > critical to consider here. > > > > I could continue on about the impact of this separation on other > > language features, but this should be enough to exemplify what I see as > > being better "architectural alignment" and to substantiate why it must be > > done. > > > > John M. Boyer, Ph.D. > > STSM: Lotus Forms Architect and Researcher > > Chair, W3C Forms Working Group > > Workplace, Portal and Collaboration Software > > IBM Victoria Software Lab > > E-Mail: boyerj@ca.ibm.com > > > > Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer > > > > > > > > > > *Maciej Stachowiak <mjs@apple.com>* > > Sent by: public-html-request@w3.org > > > > 05/03/2007 10:51 AM > > To > > Maciej Stachowiak <mjs@apple.com> cc > > HTML WG <public-html@w3.org> Subject > > Re: Architectural Consistency Requirements for Forms > > > > > > > > > > > > > > > > > > On May 3, 2007, at 9:13 AM, Maciej Stachowiak wrote: > > > > > John mentioned that these thoughts were off the cuff, and he may > > > have forgotten some important points. I would appreciate it if > > > XForms experts > > > > Oops, I forgot to finish my sentence. "I would appreciate it if > > XForms experts would mention any requirements they think should be > > added to this list." > > > > Regards, > > Maciej > > > > > > > > >
Received on Friday, 4 May 2007 18:52:26 UTC