QT4 CG Meeting 152 Minutes 2026-02-10
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
- Minutes
- Summary of new and continuing actions
[0/5] - 1. Administrivia
- 2. Technical agenda
- 2.1. PR #2452: 2450 Add jnode((), *) to match root JNodes
- 2.2. PR #2451: 2444 Make match="*" and match="N" match element nodes only
- 2.3. PR #2449: 2445 Add rules for xsi namespace elements in element-to-map
- 2.4. PR #2446: 2427 Add computed node constructors to XPath
- 2.5. PR #2441: 2434 Fix inconsistencies with GNode tests in axis steps
- 3. Any other business
Minutes
Approved at meeting 153 on 17 February 2026.
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 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 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 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.
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 #2440: 2432 Clarify effect of coercion on constructor functions
- PR #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 #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 #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
JRootSelectorinJNodeType. 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 #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"ismatch="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 #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.
- … There is some special handling of
- 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:nilsays 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 #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
NodeConstructoris one of thePrimaryExpr; it’s only allowed to be aComputedConstructor.
- … A
- 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 #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.