- From: <bugzilla@wiggum.w3.org>
- Date: Tue, 27 Nov 2007 13:19:00 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5288 Summary: [XQuery] XPST0005 and conditinoal expressions Product: XPath / XQuery / XSLFO / XSLT Version: Recommendation Platform: PC OS/Version: Windows NT Status: NEW Severity: normal Priority: P2 Component: XQuery AssignedTo: chamberl@almaden.ibm.com ReportedBy: tim@cbcl.co.uk QAContact: public-qt-comments@w3.org err:XPST0005 is defined in XQuery as During the analysis phase, it is a static error if the static type assigned to an expression other than the expression () or data(()) is empty-sequence(). Consider the expression: if (...) then () else fn:error('err:MyError') The static type of this expression is empty-sequence(), which is the union of 'none' and 'empty-sequence()', as noted in paragraph 2 of http://www.w3.org/TR/xquery-semantics/#sec_content_models According to the definition of XPST0005, this should raise XPST0005 at static type checking, rather than possibly calling fn:error at run time. A suitably constructed typeswitch could also exhibit this behaviour. Is this intentional? A glance at the XQuery Update Facility shows that this is a problem here too, as the updating operations have static type empty-sequence(). I note that this error is only ever tested in XQTS when a step in a path expression is found to be empty-sequence() (a case specifically mentioned in the XQuery specification). Other than the cases mentioned above, I think it may also be thrown during static type checking of 'for', 'for/at', 'let', variable references and function calls. Since implementations are allowed to use static type checking extensions (which might infer a static type of empty-sequence() when the standard rules cannot), testing of this error code could be quite tricky.
Received on Tuesday, 27 November 2007 13:19:06 UTC