QT4CG meeting 152 draft minutes, 10 February 2026

Hello,

Here are the draft minutes from today’s meeting:

   https://qt4cg.org/meeting/minutes/2026/02-10.html

QT4 CG Meeting 152 Minutes 2026-02-10

   [1]Meeting index / [2]QT4CG.org / [3]Dashboard / [4]GH Issues / [5]GH
   Pull Requests

Table of Contents

     * [6]Draft Minutes
     * [7]Summary of new and continuing actions [0/5]
     * [8]1. Administrivia
          + [9]1.1. Roll call [9/10]
          + [10]1.2. Accept the agenda
          + [11]1.3. Approve minutes of the previous meeting
          + [12]1.4. Next meeting
          + [13]1.5. Review of open action items [1/11]
          + [14]1.6. Review of open pull requests and issues
               o [15]1.6.1. Blocked
               o [16]1.6.2. Merge without discussion
               o [17]1.6.3. Close without action
     * [18]2. Technical agenda
          + [19]2.1. PR #2452: 2450 Add jnode((), *) to match root JNodes
          + [20]2.2. PR #2451: 2444 Make match="*" and match="N" match
            element nodes only
          + [21]2.3. PR #2449: 2445 Add rules for xsi namespace elements
            in element-to-map
          + [22]2.4. PR #2446: 2427 Add computed node constructors to
            XPath
          + [23]2.5. PR #2441: 2434 Fix inconsistencies with GNode tests
            in axis steps
     * [24]3. Any other business

Draft Minutes

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-02: Everyone review the "nice to have" tags and
       object where they wish
     * [ ] 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. Administrivia

1.1. Roll call [9/10]

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

1.2. Accept the agenda

   Proposal: Accept [25]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

   Proposal: Accept [26]the minutes of the previous meeting.

   Accepted.

1.4. Next meeting

   The next meeting is planned for 17 February 2026.

   DB gives regrets for 17 February.

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

     * [ ] 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-02: Everyone review the "nice to have" tags and
       object where they wish
     * [ ] 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.
     * [X] QT4CG-151-02: NW to generate compiled schema, merge #2404.
     * [ ] QT4CG-151-03: NW to investigate why records are formatted
       incorrectly in XSLT

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 [27]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 [28]#2313: 2298 XQFO rules: definition of default values
     * PR [29]#2266: 540 system-property equivalent for XQuery
     * PR [30]#2160: 2073 data model changes for JNodes and Sequences
     * PR [31]#2071: 77c deep update
     * PR [32]#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 [33]#2440: 2432 Clarify effect of coercion on constructor
       functions
     * PR [34]#2439: Fix prefix on bin:int-octets example function

   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 [35]#2436: `jnode` type: arguments (spec vs. tests)

   Proposal: close without further action.

   Accepted.

2. Technical agenda

2.1. PR #2452: 2450 Add jnode((), *) to match root JNodes

   See PR [36]#2452.
     * MK: This arose in the context of match patterns in XSLT. What's the
       equivalent of "/" for a JNode tree?
          + ... There wasn't a convenient way of doing it; I proposed a
            change to the type syntax to cover this case and keep them
            aligned.
     * MK: We get a JRootSelector in JNodeType. I considered "/", but CG
       proposed "()".
          + ... I took the opportunity to clarify the text a bit.

   MK reviews the clarified rules.

   Some discussion of the differences between "*" for XNode and JNode
   trees.
     * MK: Added some more examples.
     * MK: It migrates into XSLT patterns as well.

   Proposal: accept this PR.

   Accepted.

2.2. PR #2451: 2444 Make match="*" and match="N" match element nodes only

   See PR [37]#2451.
     * MK: The current rules for axis steps are that an axis step of "*"
       will match an element if you're starting at an XNode and a JNode
       with any selector starting at a JNode.
          + ... I found it was hard to implement the semantics for that,
            especially with streaming. You can't do precise type checking.
            And it's a bit of a usability problem.
          + ... If you have a lot of match="N" predicates and you add
            support for JNodes somewhere, that changes all the semantics.
            That's a probably going to introduce bugs.
     * MK: Match="*" and match="N" have been clarified to say they don't
       match JNodes. To match JNodes you have to be explicit.
          + ... XSLT 3.x tried to identify the leading steps but it didn't
            work. I've fixed that.
          + ... We add new magic that if the node test is an EQName or
            Wildcard, we wrap it in an element test. So match="N" is
            match="element(N)"
          + ... A few examples are updated.
     * MK: It was tricky to get right, but it's a fairly small change.

   MK observes that this doesn't effect path expressions; it only applies
   to XSLT match patterns.

   Proposal: accept this PR.

   Accepted.

2.3. PR #2449: 2445 Add rules for xsi namespace elements in element-to-map

   See PR [38]#2449.
     * MK: We had examples that we clearly ignored xsi: attributes, but I
       couldn't find anything in the spec to justify that.
          + ... There is some special handling of xsi:nil.
          + ... This PR makes the text reflect the examples.
     * MK: Adds a new section, 14.5.3 Attributes in the xsi namespace.

   MK reviews the new rules in the section.
     * JLO: What example does this apply to?
     * MK: The attributes that you get in the xsi namespace are all to
       control schema validation.
          + ... It's unlikely you'd want those in your JSON; they don't
            mean anything in that world.
          + ... xsi:nil says that the contents of this element are nil;
            like null in SQL.
          + ... The schema location and type attributes tell you where to
            find the schema and how subtyping works.
          + ... If you're in a vocabulary that uses xsi:type, you're
            probably best-off doing some pre-transformation to put that
            information in a more sensible form for the JSON.

   Proposal: accept this PR.

   Accepted.

2.4. PR #2446: 2427 Add computed node constructors to XPath

   See PR [39]#2446.
     * MK: I've proposed that we add functions to create nodes to XPath
       several times. I've had pushback on the grounds that if you're in
       XQuery, there are now two ways to do it.
          + ... I prefer to use functions, but in the interest of not
            having that duplication, this adds a subset of XQuery
            capability to XPath.
          + ... It doesn't add direct constructors, that makes it simpler.
          + ... It doesn't introduce some of the options that XQuery gives
            you, such as whether or not to inherit namespaces. This
            proposal takes the default options.
     * MK: The main difficulty was actually integrating the text into the
       spec!
     * MK: The constructed element namespace rule moves into XPath.
          + ... A NodeConstructor is one of the PrimaryExpr; it's only
            allowed to be a ComputedConstructor.
     * MK: New section, 4.13 Node Constructors
          + ... Seven kinds of nodes.
          + ... I've pulled out a section a bout constructing complex
            content that was previously five levels deep.
          + ... A more amibitious scheme would be to have a single set of
            rules for XPath, XQuery, and XSLT. I haven't tried to do that
            (yet).
     * MK: It's the rules we're familiar with...flatten arrays, merge
       items, etc.
          + ... That's the same as the XQuery rules with default options.
     * MK: Next is the specific grammar; it's subsetted so that the name
       part must either be a QName literal or a computed expression. We
       haven't retained the option of a bare name without the hash. That
       gave us syntax ambiguity problems in XQuery.
     * MK: There's a lot of text, but most of it is old text rearranged.

   MK would like a more comprehensive review, so perhaps not merge it
   today.
     * MK: In XQuery, there are a few editorial changes.
          + ... The examples have been changed to use the new #name
            syntax.
     * MK: So XQuery doesn't change technically, just some editorial
       changes.
     * JWL: The use of QName literal in XQuery doesn't mean it's
       deprecated does it?
          + ... It's a preference, I wonder if that needs to be
            emphasized. We don't want users to think they have to change
            all their code!
     * MK: I can certainly add a note.

   ACTION QT4CG-152-01: MK to add a note about the new and old syntax for
   names in PR #2446

   Proposal: will put this in the "merge without discussion list" next
   week

2.5. PR #2441: 2434 Fix inconsistencies with GNode tests in axis steps

   See PR [40]#2441.
     * MK: Allows child::gnode(), removed self::array(*), allow functions
       that accept to the context item to accept GNodes.
     * JWL: Does that mean that the self: axis test can be used on a
       JNode?
     * MK: Yes.

   Proposal: accept this PR.

   Accepted.

3. Any other business

   None heard.

References

   1. https://qt4cg.org/meeting/minutes/
   2. https://qt4cg.org/
   3. https://qt4cg.org/dashboard
   4. https://github.com/qt4cg/qtspecs/issues
   5. https://github.com/qt4cg/qtspecs/pulls
   6. https://qt4cg.org/meeting/minutes/2026/02-10.html#minutes
   7. https://qt4cg.org/meeting/minutes/2026/02-10.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2026/02-10.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2026/02-10.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2026/02-10.html#agenda
  11. https://qt4cg.org/meeting/minutes/2026/02-10.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2026/02-10.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2026/02-10.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2026/02-10.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2026/02-10.html#blocked
  16. https://qt4cg.org/meeting/minutes/2026/02-10.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2026/02-10.html#close-without-action
  18. https://qt4cg.org/meeting/minutes/2026/02-10.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2026/02-10.html#pr-2452
  20. https://qt4cg.org/meeting/minutes/2026/02-10.html#pr-2451
  21. https://qt4cg.org/meeting/minutes/2026/02-10.html#pr-2449
  22. https://qt4cg.org/meeting/minutes/2026/02-10.html#pr-2446
  23. https://qt4cg.org/meeting/minutes/2026/02-10.html#pr-2441
  24. https://qt4cg.org/meeting/minutes/2026/02-10.html#any-other-business
  25. https://qt4cg.org/meeting/agenda/2026/02-10.html
  26. https://qt4cg.org/meeting/minutes/2026/02-03.html
  27. https://qt4cg.org/meeting/minutes/2026/02-10.html#technical-agenda
  28. https://qt4cg.org/dashboard/#pr-2313
  29. https://qt4cg.org/dashboard/#pr-2266
  30. https://qt4cg.org/dashboard/#pr-2160
  31. https://qt4cg.org/dashboard/#pr-2071
  32. https://qt4cg.org/dashboard/#pr-2019
  33. https://qt4cg.org/dashboard/#pr-2440
  34. https://qt4cg.org/dashboard/#pr-2439
  35. https://github.com/qt4cg/qtspecs/issues/2436
  36. https://qt4cg.org/dashboard/#pr-2452
  37. https://qt4cg.org/dashboard/#pr-2451
  38. https://qt4cg.org/dashboard/#pr-2449
  39. https://qt4cg.org/dashboard/#pr-2446
  40. https://qt4cg.org/dashboard/#pr-2441

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 10 February 2026 19:00:08 UTC