Re: function-available gone?

Hi Elliotte,

Answers inline below.

Cheers,
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





Elliotte Harold <elharo@metalab.unc.edu> 
07/13/2007 03:12 AM

To
John Boyer/CanWest/IBM@IBMCA
cc
www-forms@w3.org
Subject
Re: function-available gone?






John Boyer wrote:

> 1) the form author would have to set up an event handler to run the 
> XPath that called the function-available() function.

No, they just would have needed to use the if function in their XPath.

jb: every 'if' function is in an xpath that must be caused to run by 
something.  Above, I was getting at the fact that you must set up the 
conditions to cause that to happen.  To discover that you lack the 
equipment to run the form on startup, you do need to capture 
xforms-model-construct, for example, and then do an action that runs an 
XPath.  An easy action would be a message informing the user that the form 
will suck wind because the function is missing, but being able to halt the 
form is even better.  The mechanism as of Jan. 2002 is streamlined to do 
that.

> 2) The form author would have needed a way to generate a processing halt 

> if the function returned false. 

Or they could have called a different expression instead,

jb: Assuming a different expression existed.  If one has an alternate 
expression involving the core functions, there would be little need to 
bother with the alternate execution path that calls the extension 
function.  So I have to assume you want to call different extension 
functions on a per XForms processor basis.  See below.


> By comparison, the current method allows the XForms processor to 
> determine very early in the lifecycle of the document (i.e. before 
> running any XPaths) whether or not the necessary functions are 
> available.  It is also a much easier way to make such a statement 
> compared to the function method outlined above.
> 

How does one use the current machinery to take one path if a function is 
available and another if the function is not? Assume I do not want to 
halt procesing just because an extension function is missing.

jb: One doesn't do that right now because it was not (at the time) 
considered to be a very important use case.  About the only use for it is 
to create hack code that says "if processor A, f(x), else if processor B, 
g(x), else..." which smacks of the IE vs. Netscape fiasco all over again. 
Extensions allow the implementers to experiment with possible new 
functions for the standard and to deploy software, make money, and 
otherwise survive the here and now.  But they tend to be limited to 
systems deployed by that XForms provider, where 99% adherence to XForms 
provides 99% of the business advantage.  Meanwhile, maybe the hack stuff 
will be inevitable, but we've at least made some effort to suppress it. 

Cheers,
JB
-- 
Elliotte Rusty Harold  elharo@metalab.unc.edu
Java I/O 2nd Edition Just Published!
http://www.cafeaulait.org/books/javaio2/
http://www.amazon.com/exec/obidos/ISBN=0596527500/ref=nosim/cafeaulaitA/

Received on Friday, 13 July 2007 16:19:14 UTC