@qt4cg statuses
This page displays recent status updates about the QT4CG project.
The are also captured in an RSS feed.
By year: 2026, 2025, 2024, 2023, 2022, 2021, 2020
QT4 CG meeting 183 draft agenda #agenda-10-06
Draft agenda published.
Issue #2967 created #created-2967
`fn:matching-segments`: Suggestions
- The term “segments” is somewhat uncommon in the regex terminology. Maybe
fn:match-results? - A common use seems to be to get the strings captured by the groups of a match:
let $groups := matching-segments($line, '(\S+) (\S+)( \S+)?')?groups
let $a := $groups?1?value, $b := $groups?2?value, $c := $groups?3?value
Maybe we should add a field values (of type array(xs:string?))? It could also be used for destructuring:
let $[$a, $b, c] := matching-segments($line, '(\S+) (\S+)( \S+)?')?values
Pull request #2966 created #created-2966
2965 Regex functions: bugs
Closes #2965
Issue #2965 created #created-2965
Regex functions: bugs
-
Contradiction, about newlines at the end of a string. With the
mflag, one section says^and$work around every newline. Another section (a later correction) says a newline at the very end of the string is an exception. The test suite follows the correction, so the older section should be updated to match. It should also say clearly what$does there. -
Typo in the
xflag. The list of removed whitespace characters names the carriage return twice and forgets the ordinary space. The example right below it only works if spaces are removed. -
A rule that common regex engines don’t support.
\1refers back to the text that group 1 matched. If group 1 didn’t match anything at all, the spec says\1should match the empty string. Java etc. make the whole match fail in that case, and imitating the spec’s rule takes a lot of extra machinery. I’d suggest dropping the rule, or letting each implementation decide. -
Optional: upper/lower case in
\1. With theiflag, the spec’s definition says Turkishİandiare different letters. Java treats them as the same when comparing\1. After all, this only affects a handful of special letters, so maybe the spec could simply leave it to implementations…
Issue #2866 closed #closed-2866
Data model: JNodes
Pull request #2964 created #created-2964
2937 Explain the effect of XSD 1.1 on the casting rules
Fix #2937
Pull request #2963 created #created-2963
2960 Coercion to derived string types (whitespace)
Adds a note explaining that " John " cannot be relabelled as xs:ID
Fix #2960
Pull request #2962 created #created-2962
2961 CSV functions: tweaks
I decided to not go without strict-quoting, but to allow quotes within the input string, which is the most common case, and much less controversial. FOCV0001 covers only broken quoted fields now.
Closes #2961
Issue #2961 created #created-2961
CSV functions: tweaks
- I suggest dropping
fn:csv-to-arrays:fn:parse-csv($s)?rowsreturns exactly the same result, and there is no implementation for the first function that is really cheaper. - Input with embedded quotes is not that rare (example:
Monitor, 24" wide). In some cases, this input can still be read by supplying an exoticquote-character, but I think astrict-quotingoption would be better. We could also be less strict, but by experience this results in ambiguous cases (for example, is"abc" def,xsupposed to be right or wrong?)
Issue #2960 created #created-2960
Downcasting coercion and the whiteSpace facet
The coercion rules say:
If R is derived from some primitive atomic type P, then J is relabeled as an instance of R if it satisfies all the following conditions:
- J is an instance of P.
- J is not an instance of R.
- The [datum] of J is within the value space of R.
Now consider (new test case FunctionCall-433)
declare function local:f($x as xs:NCName) { $x };
local:f(" RED ")
I think that under a strict reading of the rules, this should fail: the string " RED " is valid as an instance of xs:NCName but it is not in its value space.
We should either change the rules, or at least add a note.
Pull request #2959 created #created-2959
Clarify contrast between two notation devices, ⊑ and ⊆
Fix #2942
Issue #2942 closed #closed-2942
Globally replace U+2291 with U+2286
Pull request #2958 created #created-2958
2957 Constructor functions for records
Fix #2957
QT4 CG meeting 182 draft minutes #minutes-09-29
Draft minutes published.
Issue #2957 created #created-2957
Constructor functions for records
I propose:
(a) to make automatic creation of constructor functions available for nominative record types only (b) to make creation of a constructor function for a given record type optional (c) to use the default values defined for fields for casts and coercions as well as for the constructor function (d) to allow selected fields in a nominative record type to be declared as static, in which case the default value becomes a fixed value : the field cannot be set using the constructor function, and cannot be modified by casting, coercion, or by the "but with" operator.
Issue #2956 closed #closed-2956
2919 fn:substring-after-last
Pull request #2956 created #created-2956
2919 fn:substring-after-last
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2815 closed #closed-2815
2567 Extended and restricted record types
Issue #2955 closed #closed-2955
2919 fn:substring-before-last
Pull request #2955 created #created-2955
2919 fn:substring-before-last
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2954 closed #closed-2954
2919 fn:days-in-month
Pull request #2954 created #created-2954
2919 fn:days-in-month
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2953 closed #closed-2953
2919 fn:duration-to-seconds
Pull request #2953 created #created-2953
2919 fn:duration-to-seconds
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2952 closed #closed-2952
2919 fn:trim-space
Pull request #2952 created #created-2952
2919 fn:trim-space
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2951 closed #closed-2951
2919 fn:index-of-substring
Pull request #2951 created #created-2951
2919 fn:index-of-substring
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
Issue #2950 closed #closed-2950
2919 fn:random-number-generator?take(n)
Pull request #2950 created #created-2950
2919 fn:random-number-generator?take(n)
Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919
See 6119 more statuses in yearly archives.