- From: <bugzilla@wiggum.w3.org>
- Date: Fri, 29 Apr 2005 04:39:37 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1278 Summary: [XQuery] Atomic Values to be returned in XPath steps Product: XPath / XQuery / XSLT Version: Last Call drafts Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: XQuery AssignedTo: chamberl@almaden.ibm.com ReportedBy: henryluo@vibrasoft.net QAContact: public-qt-comments@w3.org This is a consolidation of some views in the www-ql@w3.org mailing list on the issue. Current spec only allows atomic values to be returned in the last step of XPath. And it is a compromise between two extremes, i.e.: 1. No atomic value to be returned in XPath People supporting this want to preserve the node selection nature of the '/' operator and XPath. And prefer to use FLWR expression to work on atomic values. However, even we go this way, we still cannot prevent the general iterator semantic, people can still construct expr like: <a/> / <b/>, let $a = any-node-expr1, $b = any-node-expr2 return $a/$b 2. Atomic values can be returned in all the steps in XPath This would make '/' a general iterator, or mapping operator. Personally I strongly support this semantic. Because it makes the semantic of '/' very simple and clean. If we introduce a 'foreach' expression under XQuery like in XSLT, then 'expr1/expr2' would be equivelent to 'foreach (expr1) return expr2'. Then '/' becomes an abbreviation, just like '//' is the abbreviation of '/descendant-or-self::node()/'. Even we don't introduce the 'foreach' expression in this version, we can still define the concept in the Semantic spec. Allowing '/' to be iterator, can help construct some compact expressions, like: concat(min(//*/local-name()), '-', max(//*/local-name())) rather than concat(min(for $n in //* return local-name($n)), '-', max(for $n in //* return local-name($n)) Generally, the most common use case would be using '/' as a mapping operator, which is available in many funcational languages that applies a function unto a sequence of values. Since we cannot eliminate the mapping semantic of '/' anywhere, why not accept it. Personally I would strongly suggest either no atomic values to returned in path expression or atomic values to returned in any step of the path. The middle way is not a good choice. It makes the semantic and implementation more complicated and can cause a lot of confusion.
Received on Friday, 29 April 2005 04:39:43 UTC