- From: Mark Birbeck <mark.birbeck@x-port.net>
- Date: Wed, 26 Oct 2005 09:55:29 +0100
- 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 UTC