- From: Ulrich Nicolas Lissé <unl@dreamlab.net>
- Date: Thu, 08 Nov 2007 21:11:49 +0100
- To: John Boyer <boyerj@ca.ibm.com>
- CC: ebruchez@orbeon.com, "Forms WG (new)" <public-forms@w3.org>
Hi John, yes, of course you are right about count(). Thanks for spotting this. Bad example, but I hope my intent was clear at least: When we require strict type matching, we ignore auto conversion, e.g. string-length(/some/node) would yield an xforms-compute-exception because string-length() expects a parameter of type string. This would obviously be too restrictive. Regards, Uli. John Boyer wrote: > > Hi Uli, > > I fixed this by removing the part about function parameters. This I did > because count("x") actually isn't an error, I believe. I believe it > should just produce NaN. But doesn't count(number("7")) also produce > NaN? > > 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 > > > > > *Ulrich Nicolas Lissé <unl@dreamlab.net>* > Sent by: public-forms-request@w3.org > > 11/02/2007 03:01 PM > > > To > ebruchez@orbeon.com > cc > "Forms WG (new)" <public-forms@w3.org> > Subject > Re: Fw: Section 7 (PR#139) > > > > > > > > > > Erik, all, > > this all sounds quite perfect to me, except for function parameters: In > XPath 1.0 function arguments are converted automatically to the required > type ([1]). So count("x") is surely an error, but count("7") is not > because it is equivalent to count(number("7")). > > I think it is too restrictive to require the types of function > parameters to match the types defined by the function because it ignores > automatic type conversion (which hampers static analysis as well). > > Regards, > Uli. > > [1] http://www.w3.org/TR/xpath#section-Function-Calls > > Erik Bruchez wrote: >> >> 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 >> types). >> >> 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. >> >> -Erik >> >> 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). >>> > > >>> > > >>> > > >>> > > >>> >>> >> >> > > > -- > Ulrich Nicolas Lissé > > -- Ulrich Nicolas Lissé
Received on Thursday, 8 November 2007 20:12:17 UTC