@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 151 draft agenda #agenda-02-03

02 Feb at 12:50:00 GMT

Draft agenda published.

Issue #2431 closed #closed-2431

02 Feb at 11:20:20 GMT

Patch grammar explorer

Issue #2432 created #created-2432

02 Feb at 10:50:35 GMT
Constructor Functions: conversions

The specification says in [22.1 Constructor functions for XML Schema built-in atomic types](https://qt4cg.org/specifications/xpath-functions-40/Overview.html#constructor-functions-for-xsd-types)…

If the value passed to a constructor is not in the lexical space of the datatype to be constructed, and cannot be converted to a value in the value space of the datatype under the rules in this specification, then an dynamic error is raised [err:FORG0001].

…but it is not clear which rules in the specification are meant.

Specifically, I think we should clarify whether query like the following one are supposed to return an error or a duration:

xs:anyURI('P2000Y') => xs:yearMonthDuration()

Pull request #2431 created #created-2431

02 Feb at 10:09:11 GMT
Patch grammar explorer

On all pages: Improve display of Headlines with slightly smaller font-size.

Screenshot 2026-02-02 at 11 07 32

On rule detail pages: The Name of the Grammar is now visible in the back button of the ribbon instead of the H1 which only displays the rule name.

Screenshot 2026-02-02 at 11 08 41

On the right hand side:

  • Fix complement character class display.
  • Sequence and choice items now are indented if they do not fit on one line
  • occurrence indicators always stick to the item they belong to
  • use spans to group items and mark any character that is displayed
  • dashes in character ranges and the pipes in choices are now also recognized as part of EBNF syntax
  • literals are never wrapped into the next line
Screenshot 2026-02-02 at 11 00 45

Pull request #2430 created #created-2430

31 Jan at 22:19:21 GMT
Updates to schema for xslt

Updates the schema for XSLT 4.0:

  • Adds canonical to xsl:output and xsl:result-document
  • Adds xsl:package-location to content model of xsl:use-package.

Pull request #2429 created #created-2429

31 Jan at 16:12:30 GMT
Feature/2026 01 28 draft review

I'm suggesting two minor changes following my reading of the most recent draft specs.

Pull request #2428 created #created-2428

30 Jan at 18:29:42 GMT
2422 Drop XSLT section on embedded stylesheet modules

This doesn't actually abolish the feature, it just de-emphasises it. AFAIK, no-one actually uses it.

Issue #2427 created #created-2427

30 Jan at 15:38:24 GMT
Node construction in XPath

There was pushback on issue #573 which proposed a set of functions for constructing nodes, on the grounds that for XQuery users, this was unnecessary duplication.

A possible alternative is to add a subset of the XQuery syntax for node construction to XPath: specifically, computed node constructors, which are relatively free of hassles such as dependence on the namespace context, boundary space rules, etc.

Specifically we could add computed constructors:

ComputedConstructor::=CompDocConstructor
|  CompElemConstructor
|  CompAttrConstructor
|  CompNamespaceConstructor
|  CompTextConstructor
|  CompCommentConstructor
|  CompPIConstructorCompDocConstructor::="document" EnclosedExpr
 CompElemConstructor::="element"  CompNodeName EnclosedContentExpr
 CompAttrConstructor::="attribute"  CompNodeName EnclosedExpr
 CompNamespaceConstructor::="namespace"  CompNodeNCName EnclosedExpr
 CompTextConstructor::="text"  EnclosedExpr
 CompCommentConstructor::="comment"  EnclosedExpr
 CompPIConstructor::="processing-instruction"  CompNodeNCName EnclosedExpr

with the restriction that CompNodeName / CompNodeNCName are either expressions in curly braces, or use the new XQuery 4.0 form with a leading "#".

It is of course trivial to define a function library on top of this if someone wants the extra flexibility:

let $new-element := fn($name, $content) { element {$name} {$content} }

etc

(Incidentally, EnclosedContentExpr serves no useful purpose as it's identical to EnclosedExpr.)

We could common up the rules for "constructing simple content" and "constructing complex content" at the same time, putting them in XPath where both XQuery and XSLT can refer to them. I believe they are identical except for (a) error codes, (b) with duplicate attribute names, XQuery throws an error while XSLT takes the last.

Pull request #2426 created #created-2426

30 Jan at 13:46:11 GMT
2408 editorial omnibus

Fixes nearly everything in #2408

Issue #2424 closed #closed-2424

30 Jan at 09:46:03 GMT

More Explorer tweaks

Issue #2425 created #created-2425

29 Jan at 21:58:24 GMT
Permanent diffs for PRs

Since we link to pull requests in the spec and in test cases, I wonder whether it would be possible to publish a permanent diff showing the effect of each PR?

Essentially, the idea would be to take the HTML diff as we currently publish it, and reduce it to those sections of the specs that actually contain changes.

I would find this very useful, for example, when a PR has been accepted but is still marked with "Tests needed" - it's not easy at present to see retrospectively what tests might be required. It would also be useful, of course, when implementing the PR. But I think that all readers of the specs might find this beneficial.

Pull request #2424 created #created-2424

29 Jan at 21:48:11 GMT
More Explorer tweaks

Building on the awesome work from @ndw I just tweaked the grammar explorer layout a little more

  • layout works better on bigger and smaller screens
  • consistent navigation between all screens with back button alwasy on the navigation at the top
  • consistent sizes, paddings, colors set by CSS variables
  • output as html5 which fixes small issues with whitespace in inline elements
  • additional, minor layout improvmements
Screenshot 2026-01-29 at 22 25 40 Screenshot 2026-01-29 at 22 25 58 Screenshot 2026-01-29 at 22 26 11

Before

Screenshot 2026-01-29 at 22 41 33

After

Screenshot 2026-01-29 at 22 41 20

Pull request #2423 created #created-2423

29 Jan at 21:28:25 GMT
2421 document XSLT incompatibility with simplified stylesheets

Fix #2421

Issue #2422 created #created-2422

29 Jan at 21:11:24 GMT
XSLT: drop 3.11 Embedded Stylesheet Modules

XSLT Section 3.11 describes embedded stylesheet modules - a stylesheet rooted at an element node which is not the outermost element of a document. There are no real conformance requirements associated with this feature and it isn't widely used. I proposed we drop the section, while retaining the statement in §3.5 that a stylesheet module can be "all or part" of an XML document.

Issue #2421 created #created-2421

29 Jan at 15:43:23 GMT
XSLT edge case incompatibility with simplified stylesheet

Simplified stylesheets have changed so that the implicit template rule now does match="." rather than match="/".

This creates a theoretical incompatibility when

(a) the stylesheet is invoked supplying a node other than a document node as the input. It will now execute the (only) template rule, previously it would execute the built-in template for the node kind

(b) the simplified stylesheet module is included/imported into another stylesheet. This is a highly unlikely scenario, but it is tested by test case include-0601.

The incompatibility should be documented.

Issue #2420 closed #closed-2420

29 Jan at 13:01:11 GMT

Explorer tweaks

Pull request #2420 created #created-2420

29 Jan at 13:01:04 GMT
Explorer tweaks

h/t @line-o

Plus a few other tweaks.

Pull request #2419 created #created-2419

28 Jan at 16:21:44 GMT
2292 XSLT document() function: options parameter

Fix #2292

Issue #2414 closed #closed-2414

28 Jan at 15:26:39 GMT

Diff markup issues

Pull request #2418 created #created-2418

28 Jan at 15:20:07 GMT
2399b Add rules and advice for JSON output of special numerics

Fix #2399

Issue #2417 closed #closed-2417

28 Jan at 15:18:13 GMT

2399 Add rules/advice for JSON output of special xs:double values

Pull request #2417 created #created-2417

28 Jan at 15:15:30 GMT
2399 Add rules/advice for JSON output of special xs:double values

Fix #2399

Pull request #2416 created #created-2416

28 Jan at 12:43:47 GMT
2406 Add fn:parts-of-dateTime and fn:build-dateTime functions

Fix #2406

Issue #2415 closed #closed-2415

28 Jan at 12:26:40 GMT

Publish the grammar explorer pages

Pull request #2415 created #created-2415

28 Jan at 12:26:11 GMT

Publish the grammar explorer pages

Issue #2414 created #created-2414

28 Jan at 09:36:48 GMT
Diff markup issues

There seem to be two consistent errors in the diff markup that appears in PRs on the dashboard:

  1. When an inline <code> element is modified, the diff version shows the old code as deleted (red background), but does not show the new code.

For example:

Image
  1. When a grammar entry is modified, the text gets duplicated.

For example:

Image

Pull request #2413 created #created-2413

28 Jan at 08:44:02 GMT
2365 Drop extensible record types

This PR drops the concept of extensible record types, replacing it with a rule that coercion to a record type drops any map entries that are not defined by the record type. In effect this means that a record type used when declaring a function parameter is implicitly extensible.

The benefits of the proposal are:

  • It simplifies the spec, especially rules on type subsumption and on generation of implicit constructor functions
  • It avoids the need to declare pairs of record types, one extensible and one not.
  • It avoids all the awkward decisions about whether record types used in core functions should be extensible or not.

The rules for type patterns in XSLT are changed to invoke coercion.

Fix #1484 Fix #2365

Pull request #2412 created #created-2412

28 Jan at 00:11:10 GMT
2395 2396 Add missing "new in 4.0" entries

Fix #2395 Fix #2396

Pull request #2411 created #created-2411

27 Jan at 23:45:16 GMT
2397 add to F&O list of functions defined in XSLT

Fix #2397

Pull request #2410 created #created-2410

27 Jan at 23:16:36 GMT
2398 Fix fn:highest to match fn:lowest

Fix #2398

See 4970 more statuses in yearly archives.