W3C home > Mailing lists > Public > public-forms@w3.org > October 2007

Re: Fw: Section 7 (PR#139)

From: Erik Bruchez <ebruchez@orbeon.com>
Date: Wed, 31 Oct 2007 13:12:11 -0700
Message-ID: <4728E19B.3030402@orbeon.com>
To: "Forms WG (new)" <public-forms@w3.org>

John & all,

he is the current text in section "7 XPath Expressions in XForms":

   "XPath expressions that are not syntactically valid, including
    attempted calls to undefined functions, result in an exception
    (4.5.4 The xforms-compute-exception Event), except for binding
    expressions, which produce a different exception (4.5.1 The
    xforms-binding-exception Event)."

What about something like this for the new text:

   "At the time of evaluation, an XPath expression must be
    syntactically correct. In addition, the namespaces the expression
    references must be in scope, the functions it references must be
    defined and the types of function parameters must match the types
    defined by the function. If any of these conditions is not
    satisfied, an exception (4.5.4 The xforms-compute-exception Event),
    is raised except for binding expressions, which produce a different
    exception (4.5.1 The xforms-binding-exception Event)."

I enumerate the aspects of the XPath 1.0 context that matter to us. I
left out variable declarations as those are not supported in XForms
1.0 and 1.1 (unfortunately), and we explicitly say so further down in
the spec. The above is more complete than the original text, and at
the same time does not attempt to define static vs. dynamic context in
XPath 1.0.

However, it does leave out what happens if an error occurs at runtime
within an extension function (see section "7.12 Extension
Functions"). Those functions I think are the only ones that could
actually "fail" *while* the function is evaluated, as all the XPath
1.0 and XForms 1.1 functions otherwise always return a result,
whatever the parameters passed to them (assuming the params match the

So I think we should add something like this to the above:

   "If an error occurs while evaluating an extension function, then an
    exception (4.5.4 The xforms-compute-exception Event), is raised
    except for binding expressions, which produce a different exception
    (4.5.1 The xforms-binding-exception Event)."

Ok, the above should cover issue 139. Comments of course are welcome.

A side note: remember John that I mentioned, wrt static errors, that
an implementation could look at all XPath expression in the document
at load time (e.g. during a "static analysis" phase of processing)? I
find in the spec some text in 7.12 to that effect:

   "Explicitly declaring extension functions enables XForms Processors
    to detect the use of unimplemented extension functions at document
    load-time, rather than throwing a fatal error during user
    interaction. Failure by authors to declare extension functions will
    result in an XForms Processor potentially halting processing during
    user interaction with a fatal error."

(This is one of those rare cases where the spec explicitly describes
the rationale for a decision. I for one would like more of those.)

Anyway, that paragraph seems to be an attempt in XForms at specifying
that processors are allowed to perform a static analysis of XPath
expressions at load time. From here to say that processors *should*
analyze all XPath expressions in the document statically in order to
provide authors and users with early error notification, there is only
a small step, which I think would be positive for XForms.


John Boyer wrote:
> Hi Erik,
> Here is a response from Michael Kay that is quite informative regarding 
> the kinds of things you would need to keep in mind while formulating a 
> fix for issue #139.
> He's clearly right about missing namespace prefixes of course (I 
> basically forgot to list that, so do double-check the actual XPath 1.0 
> context definition).
> Also, if I read correctly, he is pointing out that type mismatches can 
> occur, and could be viewed as static or dynamic.  The two examples of 
> type mismatches that he gave are parameters (e.g. count receiving a 
> string) and invalid caste operations (e.g. union of non-nodeset).
> If the wording is done well, I think we may not have to make the 
> distinction, i.e. we do not have to care whether a particular XPath 1.0 
> implementation treats these as static or dynamic.  
> I think the more careful wording should take the form of saying that at 
> all times the exception occurs *when the XPath evaluation is performed*.
> 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
> ----- Forwarded by John Boyer/CanWest/IBM on 10/24/2007 12:33 PM -----
> *"Michael Kay" <mike@saxonica.com>*
> Sent by: www-forms-editor-request@w3.org
> 10/24/2007 12:29 PM
> To
> 	"'John Boyer'" <xforms-issues@mn.aptest.com>
> cc
> 	<w3c-xml-query-wg@w3.org>, <www-forms-editor@w3.org>
> Subject
> 	RE: Section 7 (PR#139)
> That's fine.
> Undefined namespace prefixes are another possibility, in case you are
> enumerating them.
> In fact XPath 1.0 doesn't distinguish very carefully between static and
> dynamic errors, so count("xyz") is an error that can be reported either
> statically or dynamically, similarly ($x|3).
> Michael Kay
>  > -----Original Message-----
>  > From: John Boyer [mailto:xforms-issues@mn.aptest.com]
>  > Sent: 24 October 2007 20:00
>  > To: mike@saxonica.com
>  > Cc: w3c-xml-query-wg@w3.org; www-forms-editor@w3.org
>  > Subject: Re: Section 7 (PR#139)
>  >
>  > Hi Michael,
>  >
>  > The working group agrees that this is a problem and will fix
>  > it in the specification.  For XPath 1.0, the static errors
>  > appear to be limited to expression well-formedness, undefined
>  > variable references and undefined function references as
>  > issues with the [context node, position, size] are handled
>  > separately, i.e. their non-availability implies not executing
>  > the xpath and behaving as if empty nodeset were returned.
>  >
>  > Please let us know if you have any further concerns about this issue.
>  >
>  > Thank you,
>  > John Boyer
>  >
>  > >
>  > >
>  > >
>  > >     D. "XPath expressions that are not syntactically valid": should
>  > >     cover all static errors, not just syntax errors. (Other static
>  > >     errors include, for example, references to functions or
>  > variables
>  > >     not present in the context, and type errors detected
>  > statically).
>  > >
>  > >
>  > >
>  > >

Orbeon Forms - Web Forms for the Enterprise Done the Right Way
Received on Wednesday, 31 October 2007 20:12:32 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:48:26 UTC