- From: <bugzilla@jessica.w3.org>
- Date: Sun, 03 Jan 2016 21:22:49 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29355
Bug ID: 29355
Summary: Modernize sequence filtering
Product: XPath / XQuery / XSLT
Version: Working drafts
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Requirements for Future Versions
Assignee: jim.melton@acm.org
Reporter: benito@benibela.de
QA Contact: public-qt-comments@w3.org
Target Milestone: ---
The syntax to get a subsequence in XQuery looks extremely dated.
If you compare it too languages that became recently popular, you see that they
almost all support a syntax like sequence[from:to] or sequence[from:to:step] (
e.g. array[2:5] ) to get a subsequence like Python/Go/jq, or sequence[from..to]
like Perl/D/Ruby/Swift/Rust.
A more modern sequence filtering would:
1. Allow negative numbers
$sequence[-1] to get the last value
$sequence[-2] to get the one before that ...
$sequence[$i] to get $sequence [last() + $i + 1] for $i < 0
2. Allow ranges
$sequence[ $list-of-numbers ]
as abbreviation for something like
$sequence[ position() = ($list-of-numbers ! (if (. > 0) then . else if (. < 0)
last() + . + 1 else xs:error("..") ) ) ]
Then you can at least do $sequence[2 to 4]
3. Add a by operator to skip the i-th elements. E.g. by 2 to get every second,
as in (("a", "b", "c", "d") by 2) returning ("a", "c")
With 2. and 3. you can write $sequence[2 to 10 by 3] to get the (2,5,8)-th
elements.
Except for 1. it should not break any existing script
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Sunday, 3 January 2016 21:22:53 UTC