W3C home > Mailing lists > Public > www-forms@w3.org > October 2005

RE: AJAX vs. Xforms

From: Mark Birbeck <mark.birbeck@x-port.net>
Date: Wed, 26 Oct 2005 09:55:29 +0100
Message-ID: <7F3ACD5A-5DCC-4DBD-936B-F4EF99427B42@s15.mail.x-port.net>
To: "'Erik Bruchez'" <erik@bruchez.org>
Cc: <www-forms@w3.org>

Erik,

Daniel doesn't actually need the conditional events feature for this
particular use case--as you said yourself, you get one event for success and
one for failure, so he could put the toggle actions into the xforms-submit-*
handlers.

(Which is not to say that we don't need the conditional handlers.)

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/
b: http://internet-apps.blogspot.com/

Download our XForms processor from
http://www.formsPlayer.com/ 

> -----Original Message-----
> From: www-forms-request@w3.org 
> [mailto:www-forms-request@w3.org] On Behalf Of Erik Bruchez
> Sent: 26 October 2005 05:04
> To: www-forms@w3.org
> Subject: Re: AJAX vs. Xforms
> 
> 
> Daniel Swarbrick wrote:
> 
>  > Sound like a good case for XForms? You betcha! I'm pretty 
> sure I can  > do most of it with the knowledge I already 
> have, but the DB primary  > key check is stumping me.
>  >
>  > How can I get XForms to display these XML-formatted errors 
> returned  > by the server? Should I use a replace:none and 
> try to handle it with  > an event
> 
> I don't think you would be able to do that with 
> replace="none": you only get one of two events upon 
> submission: xforms-submit-done in case of success, or 
> xforms-submit-error in case of failure. No other useful 
> information is associated with those events.
> 
>  > or replace:instance (and use an alternate instance with 
> some  > <xf:output>'s)?
> 
> Yes, this is the way to handle it! See it this way: with 
> <xforms:submission replace="instance" instance="my-result" 
> .../>, you are actually calling an XML service implemented in 
> PHP. That is, you are passing information to the service as 
> XML (the submitted instance or subset thereof) and you are 
> returning information from the service as XML as well. Here 
> you are choosing to (mainly) return a list of errors.
> 
>  > Based on whether the DB insert is a success or not, my 
> page should  > display a differently-styled response - big 
> loud yellow DIV with  > bulleted (<ul>) errors if it fails, 
> or nice calm pale blue "Saved  > OK" if it succeeds. Is that 
> a case for XSLT?
> 
> I don't think so. But the result could look like this:
> 
> Model:
> 
> <xforms:bind ref="instance('my-result')"
>    relevant="... XPath that determines whether there are errors"/>
> 
> <xforms:bind ref="instance('other-instance')"
>    relevant="... not(XPath that determines whether there are 
> errors)"/>
> 
> Controls:
> 
> <xforms:group ref="instance('my-result')">
>    <xhtml:div>
>      <xhtml:ul>
>        <xforms:repeat nodeset="errors/error">
>          <xhtml:li>
>            <xforms:output ref="."/>
>          </xhtml:li>
>        </xforms:repeat>
>      </xhtml:ul>
>    </xhtml:div>
> </xforms:group>
> 
> <xforms:group ref="instance('other-instance')">
>    <xhtml:div>
>      No errors!
>    </xhtml:div>
> </xforms:group>
> 
> Currently, XForms doesn't support conditional events, even 
> though extensions have been suggested to do this. With such 
> conditions, you could also use <xforms:switch> to implement a 
> solution with something like this:
> 
> Model:
> 
> <xforms:submission ...>
>    <xforms:action ev:event="xforms-submit-done">
>      <xforms:toggle
>        exf:if="... XPath that determines whether there are errors"
>        case="errors-case"/>
>      <xforms:toggle
>        exf:if="... not(XPath that determines whether there 
> are errors)"
>        case="no-errors-case"/>
>    </xforms:action>
> </xforms:submission>
> 
> Controls:
> 
> <xforms:switch>
>    <xforms:case id="errors-case">
>      <xhtml:div>
>        <xhtml:ul>
>          <xforms:repeat nodeset="errors/error">
>            <xhtml:li>
>              <xforms:output ref="."/>
>            </xhtml:li>
>          </xforms:repeat>
>        </xhtml:ul>
>      </xhtml:div>
>    </xforms:case>
>    <xforms:case id="no-errors-case">
>      <xhtml:div>
>        No errors!
>      </xhtml:div>
>    </xforms:case>
> </xforms:switch>
> 
> But to do this, you actually need this "conditional events" 
> extension in XForms. This is, BTW, something which is badly 
> needed in the core of XForms or XML Events!
> 
>  > I've looked around a lot for some suitable examples, but 
> everything  > seems to focus on the "server-side validation 
> is now unnecessary"
>  > theme.  Well, I beg to differ. No matter how smart XForms 
> gets with  > client-side validation, the server still has to 
> attempt the DB  > insert before it knows if it's got a 
> duplicate key  > violation. Trapping this response from the 
> server is the bit I need  > help with.
> 
> I hope the above helps :-)
> 
> -Erik
> 
> 
Received on Wednesday, 26 October 2005 08:57:39 GMT

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