@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 160 draft agenda #agenda-04-14

13 Apr at 11:00:00 GMT

Draft agenda published.

Issue #2579 closed #closed-2579

10 Apr at 09:54:20 GMT

Accept narrative errors in generated tests

Pull request #2579 created #created-2579

10 Apr at 08:48:49 GMT
Accept narrative errors in generated tests

If an fos:result contains errorref elements, allow those errors to be accepted as a pass.

Pull request #2578 created #created-2578

09 Apr at 20:44:03 GMT
2561 Explain and define methods and method calls

Fix #2561

Pull request #2577 created #created-2577

09 Apr at 18:37:32 GMT
2575 Make xs:error available unconditionally

Fix #2575

Issue #2576 created #created-2576

08 Apr at 09:51:14 GMT
parse-json() option to match record types

I propose adding an option to parse-json and json-doc whose value is a list of named record types that might occur within the JSON; if a JSON object is read during parsing, it will be matched against these named record types, and if it matches, the result is a record (with type annotation) rather than an ordinary map.

This should make it easier to process the parsed JSON using XSLT match patterns (or XQuery typeswitch).

Issue #2575 created #created-2575

07 Apr at 20:11:27 GMT
xs:error function

F+O §22.4 says

In the case of an implementation that supports XSD 1.1, there is a constructor function associated with the built-in union type xs:error.

We should make the existence of this function unconditional.

QT4 CG meeting 159 draft minutes #minutes-07-04

07 Apr at 15:55:00 GMT

Draft minutes published.

Issue #2553 closed #closed-2553

07 Apr at 15:50:40 GMT

File Module: delete empty directories

Issue #2570 closed #closed-2570

07 Apr at 15:50:39 GMT

2553 File Module: delete empty directories

Issue #2572 closed #closed-2572

07 Apr at 15:50:21 GMT

2312 Drop map:keys-where

Pull request #2574 created #created-2574

07 Apr at 13:44:00 GMT
2550 Shadow attributes in RELAX NG grammar (alt)

Attempt to tidy up the RELAX NG grammar

  1. Removed constraints on attributes vs. shadow attributes
  2. Generally removed co-constraints except for simple, required attributes
  3. Added a few more data types

I’m thinking about trying to translate the XSD asserts into Schematron rules, but I guess that can be a separate PR if I make it work

QT4 CG meeting 159 draft agenda #agenda-04-07

06 Apr at 14:50:00 GMT

Draft agenda published.

Issue #2573 created #created-2573

02 Apr at 17:11:45 GMT
Generated test case for codepoints-to-string(0)

This test case is marked as having a "narrative" result, but the narrative result allows a dynamic error, and the generated test case doesn't allow for this.

Pull request #2572 created #created-2572

02 Apr at 11:04:18 GMT
2312 Drop map:keys-where

I propose dropping the map:keys-where function.

One of the suggestions in issue #2312.

The function isn't needed very often, and it's easily achieved in other ways. For example, to find all the keys of entries that are non-empty, you could use map:keys-where($map, fn($k, $v){exists($v)}), but it's just as easy to use

map:filter($map, fn($k, $v){exists($v)}) => map:keys()

or

map:for-each($map, fn($k, $v){$k[exists($v)]})

or

for key $k value $v in $map where exists($v) return $k

or

map:keys($map)[exists($map(.))]

Issue #2571 created #created-2571

02 Apr at 10:59:41 GMT
generate-qt3-test-set.xsl: examples with narrative results

With having looked at the details, I assume that example with narrative results should be excluded from the generated tests.

For example, a test is generated for system-properties()?#schema-aware (which is: true for a schema-aware processor, otherwise false.):

<test-case name="fo-test-fn-system-properties-002">
  <description>Test case for fn:system-properties</description>
  <created by="Michael Kay using generate-qt3-test-set.xsl" on="2026-03-31"/>
  <environment ref="global"/>
  <test>
    system-properties()?#schema-aware
  </test>
  <result>
    <assert>true()</assert>
  </result>
</test-case>

Pull request #2570 created #created-2570

02 Apr at 08:47:58 GMT
2553 File Module: delete empty directories

Clarification for empty directories (which should always be deleted, as defined earlier).

Closes #2553

Issue #2569 created #created-2569

01 Apr at 22:13:19 GMT
Inconsistent rules for unprefixed function calls with explicit default function namespace

The spec appears to give conflicting rules for resolving unprefixed function calls when an explicit default function namespace is declared.

Example:

declare default function namespace "urn:test";
declare function f() { "namespace" };
declare function Q{}f() { "no-namespace" };
f()

Two readings seem possible:

Issue #2568 created #created-2568

01 Apr at 09:41:13 GMT
Error codes for fn:build-dateTime

Is err:FODT0006 really necessary? Why does it need to be distinct from the existing err:FORG0001, Invalid value for cast/constructor? Other error codes make it possible to distinguish between a date/time formatting error (err:FOFD1340, err:FOFD1350), an invalid combination of date/time components (err:FODT005) and other date-related errors. If the purpose of err:FODT0006 is to be more targeted, dedicated to an invalid value for a component of a date/time, then shouldn't it be general to the same circumstances in all date/time constructor functions rather than specific to fn:build-dateTime?

Similarly, if the invalid value is for the timezone component, then I'd like to propose that err:FODT0003 invalid timezone value should be re-used instead of the more generic err:FODT0006.

Issue #2567 created #created-2567

01 Apr at 08:56:36 GMT
Allow one named record type to extend another

In both XQuery and XSLT, it would be useful to allow one named record type to be declared as an extension of another, to avoid duplication between the definitions.

QT4 CG meeting 158 draft minutes #minutes-03-31

01 Apr at 07:00:00 GMT

Draft minutes published.

Pull request #2566 created #created-2566

31 Mar at 23:03:29 GMT
1979 Records with type annotations

First cut for review: the PR probably needs further passes before it is ready for acceptance.

We introduce the idea of records, being maps that have a type annotation which is a specific record type. A map acquires the type annotation when it is coerced to the record type. A map that has a record type annotation (a "record") throws a type error if map:get() (or a lookup expression) requests a key that is not one of the declared field names for that type. The type error can be raised statically.

map:put() applied to a record is constrained to produce a record with the same type annotation. (I've no objection to the "with" operator for this, but that can be done separately.)

Optional fields in record types are dropped; in a record, there is no distinction between an absent field and a field whose value is the empty sequence. There is no longer any need for this distinction, and eliminating it simplifies things a lot. (But we will need to decide whether to treat the fields as present or absent when serialising to JSON).

Fix #1979

Issue #2551 closed #closed-2551

31 Mar at 16:38:40 GMT

2550 Shadow attributes in RelaxNG schema

Issue #2556 closed #closed-2556

31 Mar at 16:34:12 GMT

Add an error code indicating no invisible XML processor is available

Issue #2215 closed #closed-2215

31 Mar at 16:30:41 GMT

XQFO xref from xml-to-json() to element-to-map()

Issue #2555 closed #closed-2555

31 Mar at 16:30:40 GMT

2215 Add "see also" links between functions

Issue #2433 closed #closed-2433

31 Mar at 16:22:51 GMT

`fn:jtree`: Identity

Issue #2516 closed #closed-2516

31 Mar at 16:22:49 GMT

2433 JTree function: Discuss JNode identity more fully

Issue #2531 closed #closed-2531

31 Mar at 16:22:10 GMT

QT4CG-154-02 Revise rules for setting stylesheet parameters

Issue #2528 closed #closed-2528

31 Mar at 16:21:22 GMT

RFC 7159 has been obsoleted

See 5318 more statuses in yearly archives.