QT4 CG Meeting 153 Minutes 2026-02-17

Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests

Table of Contents

Summary of new and continuing actions [0/5]

  • [ ] QT4CG-143-02: MK to try to recover the ability to extract formal equivalences into tests
  • [ ] QT4CG-143-03: JK to look for C14N test suites.
  • [ ] QT4CG-144-01: MK to consider if any now lost value comparisons should be added as examples.
  • [ ] QT4CG-149-01: CG to draft a new PR with the common rule note.
  • [ ] QT4CG-150-01: NW to ask Jirka for a room at XML Prague for Tuesday/Wednesday
  • [ ] QT4CG-150-04: NW to see about a status update on PR #2345; possibly schedule discussion
  • [ ] QT4CG-151-01: MK to fix the typo in the build-dateTime function.
  • [ ] QT4CG-151-03: NW to investigate why records are formatted incorrectly in XSLT
  • [ ] QT4CG-152-01: MK to add a note about the new and old syntax for names in PR #2446
  • [ ] QT4CG-153-01: MK to investigate the indentation problem.
  • [ ] QT4CG-153-02: MK to turn my suggestions on #1949 into a PR.

Draft Minutes

1. Administrivia

1.1. Roll call [9/10]

Regrets: DB.

  • [ ] David J Birnbaum (DB)
  • [X] Reece Dunn (RD)
  • [X] Christian Grün (CG)
  • [X] Joel Kalvesmaki (JK)
  • [X] Michael Kay (MK)
  • [X] Juri Leino (JLO)
  • [X] John Lumley (JWL)
  • [X] Alan Painter (AP
  • [X] Wendell Piez (WP)
  • [X] Norm Tovey-Walsh (NW) Scribe. Chair.

1.2. Accept the agenda

Proposal: Accept the agenda.

Accepted.

1.3. Approve minutes of the previous meeting

Proposal: Accept the minutes of the previous meeting.

Accepted.

1.4. Next meeting

The next meeting is planned for 3 March 2026.

We will not meet on 24 February.

1.5. Review of open action items [1/10]

  • [ ] QT4CG-143-02: MK to try to recover the ability to extract formal equivalences into tests
  • [ ] QT4CG-143-03: JK to look for C14N test suites.
  • [ ] QT4CG-144-01: MK to consider if any now lost value comparisons should be added as examples.
  • [ ] QT4CG-149-01: CG to draft a new PR with the common rule note.
  • [ ] QT4CG-150-01: NW to ask Jirka for a room at XML Prague for Tuesday/Wednesday
  • [X] QT4CG-150-03: NW to setup an agenda item to review open issues
  • [ ] QT4CG-150-04: NW to see about a status update on PR #2345; possibly schedule discussion
  • [ ] QT4CG-151-01: MK to fix the typo in the build-dateTime function.
  • [ ] QT4CG-151-03: NW to investigate why records are formatted incorrectly in XSLT
  • [ ] QT4CG-152-01: MK to add a note about the new and old syntax for names in PR #2446

1.6. Review of open pull requests and issues

This section summarizes all of the issues and pull requests that need to be resolved before we can finish. See Technical Agenda below for the focus of this meeting.

1.6.1. Blocked

The following PRs are open but have merge conflicts or comments which suggest they aren’t ready for action.

  • PR #2350: 708 An alternative proposal for generators
  • PR #2345: 2299 Expand pipeline to allow arrow expression in path expression
  • PR #2313: 2298 XQFO rules: definition of default values
  • PR #2266: 540 system-property equivalent for XQuery
  • PR #2247: 716 Deferred Evaluation in XPath - the f:generator record
  • PR #2160: 2073 data model changes for JNodes and Sequences
  • PR #2071: 77c deep update
  • PR #2019: 1776: XSLT template rules for maps and array

1.6.2. Merge without discussion

The following PRs are editorial, small, or otherwise appeared to be uncontroversial when the agenda was prepared. The chairs propose that these can be merged without discussion. If you think discussion is necessary, please say so.

  • PR #2446: 2427 Add computed node constructors to XPath

Proposal: merge without discussion.

Accepted.

1.6.3. Close without action

It has been proposed that the following issues be closed without action. If you think discussion is necessary, please say so.

  • Issue #2234: Replace `a/get(XX)` with `a/?(XX)`

Proposal: close with no further action.

Accepted.

1.6.4. Substantive PRs

The following substantive PRs were open when this agenda was prepared.

  • PR #2457: Improved use of fos:result
  • PR #2456: Stylesheet handling of fos:result/@narrative

2. Technical agenda

2.1. Improvements to FOS

See PR #2457 Improved use of fos:result, and PR #2456: Stylesheet handling of fos:result/@narrative

MK introduces the infrastructure changes.

  • MK: We made a schema change to allow results in the function catalog to be annotated as narrative. A narrative result isn’t testable. The stylesheets handle that attribute; formatting without the code font. And when QT tests are generated from that example, we generate a “passing” test as long as it is syntactically valid.
    • … And #2457 makes use of that markup in the F&O function catalog.
    • … The next stage will be to apply it there as well.
  • JLO: We have now some narrative results, could we have both?
  • MK: For different examples of the same function. For a single result, you’d have to use the old mechanism.
  • CG: I like the change; editorially, the text may need to be adjusted with respect to indentation.

ACTION QT4CG-153-01: MK to investigate the indentation problem.

Proposal: accept this PR.

Approved.

2.2. Issue #2460: read-text and invalid XML characters

See issue #2460: read-text and invalid XML characters

Perhaps we can decide what needs to be done here.

  • MK: Sounds like it’s going the right way.
  • JLO: Looks nice; but should we have a single character type?
  • RD: We have a character, but it isn’t used in an XSD type.

Some discussion of codepoint vs. string vs. character.

  • CG: How do you represent a non-permitted character?

Ok, we do need to make it a code point!

  • CG: The return type should be untyped atomic. It gives you more flexibility.
  • NW: Okay.
  • JLO: Can we also replace it with nothing?
  • NW: I thought that was the empty string, but it’ll have to be xs:untypedAtomic?

2.3. Other issue triage

NW proposes a three broad categories: close it; nice to have; leave it as is, we have to do it. This is a coarse triage only.

  • JK: One small suggestion is to sort chronologically.
  • NW: Ok, then we start with #77.

2.3.1. #77 Allow manipulation of maps and arrays

See #77

  • MK: There’s been a lot of work in this area, and more is needed, but it’s not clear if this is the right issue.

2.3.2. #272 Setting parameter values in xsl:use-package

See #272

  • MK: It’s still nice to have.

2.3.3. #285 Stability of collections

See #285

  • MK: As CG says, this is a minefield.
  • NW: Are we going to ship without it?
  • MK: Implementations have been pragmatic in the past and will probably continue to do so.
  • NW: Nice to have?

2.3.4. #540 Add fn:system-property() to XQuery

See #540

  • MK: I tried to address this; but it didn’t go very well.
    • … We could extend the system function to sort out the difference between compile time and runtime propertiers.

2.3.5. #641 Serialization fallback

See #641

  • NW: We’ve done some work on this.
  • MK: I think I’m going to propose dropping this one.

Marked close with out further action.

2.3.6. #675 XSLT streaming rules for new constructs

See #675

This one has to be done.

2.3.7. #1045 Functions to manage namespace usage

See #1045

  • MK: The problem of this one is the open-endedness of it. Do you do a very general thing or something more targeted?

Marked close with out further action.

2.3.8. #1225 Generalization of Deep Updates

See #1225

  • MK: We have the problem about the status of the XQuery Update spec; if we’re doing anything on that specification, we need to do housekeeping to bring it in line with the specs. XQuery Update 3.0 was abandoned.

Marked close with out further action.

2.3.9. #1234 Seralization Parameters: Indentation, Whitespace, Newlines

See #1234

  • CG: I’ll try to write a PR for this one. Many implementations have ways of doing this.

2.3.10. 1251 Allow sequence constructor in extension instructions that are implemented with named templates

See #1251

Marked close with out further action.

2.3.11. 1310 add fn:match-groups() function

See #1310

  • MK: The fn:analyze-string function was an intent to do this; but it relies on an XML representation of the results.
    • … The aim here would be a single function that gives you all the data in the form of maps of arrays.
  • JWL: Can this be written entirely in XPath?
  • MK: You might have to apply the regex more than once; and there are things that aren’t easily available like “how many groups are there?”

2.3.12. 1459 Function properties and arities

See #1459

  • CG: The properties don’t reflect what’s currently available.

2.3.13. 1479 Default element namespace in XQuery: interaction of 'fixed' and '##any'

See #1479

  • MK: I think there’s a potential bug here; we should come back to it.

2.3.14. 1506 Type declarations: Constructor functions?

See #1506

  • CG: For record declarations, we have implicit constructor functions. Do we want to have something similar for things like enums?
  • MK: I think that creates a false impression that enums are more strongly typed than they are.

Marked close with out further action.

2.3.15. 1528 Computed node constructors: observations

See #1528

  • CG: Mostly this is about shortening the list of excluded keywords.
  • MK: That’s certainly a much nicer list.
  • NW: Can we test this?
  • MK: Verifying that this is a complete maximal and minimal list is much harder to check.

Leave it the way it is.

2.3.16. 1584 Review the XML Schema and RELAX NG schemas for XSLT 4.0 for compatibility

See #1584

  • NW: Before we’re done, we’ll have to check this with care.

2.3.17. 1697 Add documentary names to callback function signatures

See #1679

  • MK: This is an editorial suggestion.

Leave it the way it is. (It’s marked nice to have.)

  • JWL: We have to be very careful that we don’t give users the impression that they can use them as keyword arguments.
  • NW: That suggests a different rendering of some sort.

2.3.18. 1702 Node Updates: Functions

See #1702

Marked close with out further action.

2.3.19. 1777 Shallow copy in XSLT with maps and arrays

See #1777

  • MK: We must do this.

2.3.20. 1920 Parse functions: determinism

See #1920

Consensus we should just do it.

2.3.21. 1948 fn:element-to-map:

See #1948

  • MK: We’ve made some progress on this, but I’m not sure of the status.

Leave it the way it is.

2.3.22. 1949 fn:element-to-map: Updated Feedback

See #1949

Leave it the way it is.

ACTION QT4CG-153-02: MK to turn my suggestions on #1949 into a PR.

2.3.23. 1979 Records: Type Safety

See #1979

  • CG: Now that records aren’t extensible, we can close this?
  • MK: The main thing is updates; do you want to have a restriction that you can’t update the record?

Nice to have.

2.3.24. 2000 element-to-map() - type signature of plan

See #2000

Nice to have.

2.3.25. 2018 Type-checking the result of xsl:apply-templates

See #2018

  • MK: I’m going to do more work in this area. We can drop this as a separate issues.

2.3.26. 2039 Generalize context item to context value in XSLT

See #2039

  • NW: How is this only a nice to have?
  • MK: We have restrictions in various places about the item type when you call a template.
    • … The spec is coherent, but it’s a bit odd that context values can be generalized in some places but not other.

2.3.27. 2052 fn:collation-available: $usage

See #2052

  • CG: I have no idea how to implement this.
    • … I’ll raise a PR to drop it.

3. Any other business

None heard.