@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

05 Oct at 12:20:00 GMT

Draft agenda published.

Issue #2967 created #created-2967

03 Oct at 10:00:15 GMT
`fn:matching-segments`: Suggestions
  1. The term “segments” is somewhat uncommon in the regex terminology. Maybe fn:match-results?
  2. 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

01 Oct at 16:45:00 GMT
2965 Regex functions: bugs

Closes #2965

Issue #2965 created #created-2965

01 Oct at 16:40:19 GMT
Regex functions: bugs
  1. Contradiction, about newlines at the end of a string. With the m flag, 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.

  2. Typo in the x flag. 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.

  3. A rule that common regex engines don’t support. \1 refers back to the text that group 1 matched. If group 1 didn’t match anything at all, the spec says \1 should 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.

  4. Optional: upper/lower case in \1. With the i flag, the spec’s definition says Turkish İ and i are 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

01 Oct at 15:43:43 GMT

Data model: JNodes

Pull request #2964 created #created-2964

01 Oct at 15:30:24 GMT
2937 Explain the effect of XSD 1.1 on the casting rules

Fix #2937

Pull request #2963 created #created-2963

01 Oct at 14:43:20 GMT
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

01 Oct at 13:42:41 GMT
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

01 Oct at 13:05:59 GMT
CSV functions: tweaks
  1. I suggest dropping fn:csv-to-arrays: fn:parse-csv($s)?rows returns exactly the same result, and there is no implementation for the first function that is really cheaper.
  2. Input with embedded quotes is not that rare (example: Monitor, 24" wide). In some cases, this input can still be read by supplying an exotic quote-character, but I think a strict-quoting option would be better. We could also be less strict, but by experience this results in ambiguous cases (for example, is "abc" def,x supposed to be right or wrong?)

Issue #2960 created #created-2960

01 Oct at 10:58:10 GMT
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

29 Sep at 20:32:03 GMT
Clarify contrast between two notation devices, ⊑ and ⊆

Fix #2942

Issue #2942 closed #closed-2942

29 Sep at 20:19:47 GMT

Globally replace U+2291 with U+2286

Pull request #2958 created #created-2958

29 Sep at 18:48:39 GMT
2957 Constructor functions for records

Fix #2957

QT4 CG meeting 182 draft minutes #minutes-09-29

29 Sep at 16:30:00 GMT

Draft minutes published.

Issue #2957 created #created-2957

29 Sep at 17:11:46 GMT
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

29 Sep at 17:01:00 GMT

2919 fn:substring-after-last

Pull request #2956 created #created-2956

29 Sep at 17:00:44 GMT
2919 fn:substring-after-last

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2815 closed #closed-2815

29 Sep at 16:59:55 GMT

2567 Extended and restricted record types

Issue #2955 closed #closed-2955

29 Sep at 16:58:21 GMT

2919 fn:substring-before-last

Pull request #2955 created #created-2955

29 Sep at 16:57:47 GMT
2919 fn:substring-before-last

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2954 closed #closed-2954

29 Sep at 16:55:13 GMT

2919 fn:days-in-month

Pull request #2954 created #created-2954

29 Sep at 16:54:56 GMT
2919 fn:days-in-month

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2953 closed #closed-2953

29 Sep at 16:54:38 GMT

2919 fn:duration-to-seconds

Pull request #2953 created #created-2953

29 Sep at 16:54:23 GMT
2919 fn:duration-to-seconds

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2952 closed #closed-2952

29 Sep at 16:52:48 GMT

2919 fn:trim-space

Pull request #2952 created #created-2952

29 Sep at 16:52:31 GMT
2919 fn:trim-space

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2951 closed #closed-2951

29 Sep at 16:51:50 GMT

2919 fn:index-of-substring

Pull request #2951 created #created-2951

29 Sep at 16:51:32 GMT
2919 fn:index-of-substring

Accepted (see https://qt4cg.org/meeting/minutes/2026/09-29.html). Issue: #2919

Issue #2950 closed #closed-2950

29 Sep at 16:50:41 GMT

2919 fn:random-number-generator?take(n)

Pull request #2950 created #created-2950

29 Sep at 16:50:03 GMT
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.