W3C home > Mailing lists > Public > www-forms@w3.org > January 2006

RE: empty instance generates link exception?

From: Mark Birbeck <mark.birbeck@x-port.net>
Date: Fri, 6 Jan 2006 16:18:38 -0000
Message-ID: <123FF0F3-0A6C-4A04-A964-C119BA0D716C@s15.mail.x-port.net>
To: <jeacott@hardlight.com.au>
Cc: <www-forms@w3.org>

Jason,

> also,
> from
> 	http://www.w3.org/TR/xforms/slice4.html#evt-modelConstructDone
> 
> it gives detail about what must happen when an instance never 
> exists, so presumably its possible to start out with zero instances.
> either this or we are placed in the ludicrous situation of 
> having to provide a dummy instance which is then completely 
> ignored whilst we load new instances after the form has started.
> if both of these options is impossible then  the condition 
> handled by this clause can never be reached.
> they cant have it both ways! ;-)
> am I missing something obvious here?

This is what is meant by "lazy authoring", which I was referring to in the
previous post, and it generally relies on the instance not existing.

In passing, it's worth saying that contrary to the generally held view that
XForms is more difficult than HTML forms, the following is a perfectly
valid, and fully working, XForms form:

  <html
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:xf="http://www.w3.org/2002/xforms"
  >
    <head>
      <title>Lazy Authoring</title>
    </head>
    <body>
      <xf:input ref="fn">
        <xf:label>First Name:</xf:label>
      </xf:input>
      <xf:input ref="sn">
        <xf:label>Surname:</xf:label>
      </xf:input>
      <xf:output value="concat(fn, ' ', sn)">
        <xf:label>Your full name is:</xf:label>
      </xf:output>
    </body>
  </html>

As with any other XForm, as you edit the values in 'fn' and 'sn', so the
calculated value on the output changes automatically, but obviously with no
need for scripting.

For lazy authoring to work, it's the lack of an instance that's key, not the
model. So the following will also work--a model with no instance:

  <html
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  >
    <head>
      <title>Lazy Authoring</title>
      <xf:model>
        <xf:bind nodeset="biscuits" type="xsd:boolean" />
      </xf:model>
    </head>
    <body>
      <xf:input ref="fn">
        <xf:label>First Name:</xf:label>
      </xf:input>
      <xf:input ref="sn">
        <xf:label>Surname:</xf:label>
      </xf:input>
      <xf:output value="concat(fn, ' ', sn)">
        <xf:label>Your full name is:</xf:label>
      </xf:output>
      <xf:input ref="biscuits">
        <xf:label>Do you like biscuits?:</xf:label>
      </xf:input>
    </body>
  </html>

This combines two features of XForms; the first is that lazy authoring has
the effect of creating an instance automatically, and the second is that if
you don't specify an instance in your XPath expressions, then the 'first'
instance is used, and if you don't specify a model, the first model is used.

If anyone wants to comment, add examples, develop the explanation, etc.,
then the above text has been placed in a new topic on the XForms Wiki at:

  http://www.xforms-wiki.com/bin/view/Main/XformsLazyAuthoring

Regards,

Mark


Mark Birbeck
CEO
x-port.net Ltd.

e: Mark.Birbeck@x-port.net
t: +44 (0) 20 7689 9232
w: http://www.formsPlayer.com/

Download our XForms processor from
http://www.formsPlayer.com/
Received on Friday, 6 January 2006 16:19:12 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 10 March 2012 06:22:02 GMT