@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 159 draft agenda #agenda-04-07
Draft agenda published.
Issue #2573 created #created-2573
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
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
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
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
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:
- from 5.14.2 Default Function Namespace Declaration and the 2.2.1 Static Context component "default function namespace":
f()refers to the function in "urn:test", yielding "namespace" - from the default function namespace rule: the no-namespace function is preferred, yielding "no-namespace"
Issue #2568 created #created-2568
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
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-24
Draft minutes published.
Pull request #2566 created #created-2566
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
2550 Shadow attributes in RelaxNG schema
Issue #2556 closed #closed-2556
Add an error code indicating no invisible XML processor is available
Issue #2215 closed #closed-2215
XQFO xref from xml-to-json() to element-to-map()
Issue #2555 closed #closed-2555
2215 Add "see also" links between functions
Issue #2433 closed #closed-2433
`fn:jtree`: Identity
Issue #2516 closed #closed-2516
2433 JTree function: Discuss JNode identity more fully
Issue #2531 closed #closed-2531
QT4CG-154-02 Revise rules for setting stylesheet parameters
Issue #2528 closed #closed-2528
RFC 7159 has been obsoleted
Issue #2527 closed #closed-2527
BOM required in JSON input
Issue #2533 closed #closed-2533
2528 Update RFC reference (7159 -> 8259) for JSON
Issue #540 closed #closed-540
Add fn:system-property() to XQuery
Issue #2552 closed #closed-2552
540bis Add system-properties() function
Issue #2558 closed #closed-2558
2556 errors for invisible-xml() and doc()
Issue #2549 closed #closed-2549
Pipelining file operations
Issue #2559 closed #closed-2559
2549 Functional purity
Issue #2252 closed #closed-2252
Dynamic XPath Evaluation the functional way
Issue #2325 closed #closed-2325
Specify evaluation more tight and more formal to disallow unsane cases
Issue #2526 closed #closed-2526
Facets
Issue #2544 closed #closed-2544
Drop xsl:record-type/@extensible
Issue #2545 closed #closed-2545
2544 Drop xsl:record-type/@extensible
See 5306 more statuses in yearly archives.