QT4 CG Meeting 149 Minutes 2026-01-20
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
- Draft Minutes
- Summary of new and continuing actions
[0/5] - 1. Administrivia
- 2. Technical agenda
- 2.1. PR #2313: 2298 XQFO rules: definition of default values
- 2.2. PR #2387: 641 NaN/Infinity in JSON
- 2.3. PR #2376: 2337 Extend xsl:mode/@typed to handle JNodes etc
- 2.4. PR #2373: 2359 No conversion to JNode in absolute paths
- 2.5. PR #2372: 2344 Change rendition of PIs in HTML5
- 2.6. PR #2379: Use exported schema to validate function catalogs
- 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-148-02: NW to publish a dated draft after QT4CG-148-01 is complete.[ ]QT4CG-149-01: CG to draft a new PR with the common rule note.[ ]QT4CG-149-02: MK to update the PR #2372 so that the “?” are part of the comment.
1. Administrivia
1.1. Roll call [8/10]
Regrets: JWL, JK.
[X]David J Birnbaum (DB)[X]Reece Dunn (RD)[X]Christian Grün (CG)[ ]Joel Kalvesmaki (JK)[X]Michael Kay (MK)[X]Juri Leino (JLO)[ ]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 27 January 2026.
JWL gives regrets for 27 January.
1.5. Review of open action items [2/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.[X]QT4CG-148-01: NW to draft a PR that marks #2351 items as “at risk” with appropriate definitions at the top of the document[ ]QT4CG-148-02: NW to publish a dated draft after QT4CG-148-01 is complete.[X]QT4CG-148-03: NW to revise his attempt at #2313 by using the text “node” and a link to the appropriate text
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. 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.
Proposal: merge these PRs without further discussion.
Accepted.
1.6.2. 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 #2185: Request for an
fn:xprocfunction
Proposal: close this issue without further action.
Accepted.
2. Technical agenda
2.1. PR #2313: 2298 XQFO rules: definition of default values
See #2313.
(To briefly discuss CG’s comment.)
CG introduces his comment.
- CG: In my original PR, I tried to unify all the function calls, and on the other hand I fixed a few small bugs. I’d like to get rid of all the special rules. I’d like to have one general rule.
- CG: A general rule that says whenever the input is empty, the default is applied. Then we could avoid having to write all the detailed cases.
- CG: With this rule, we could possibly generate test cases for absent vs default.
- MK: For the text example where we say that the value is 0, empty, or absent.
In the XSLT spec, we talk about the value after applying defaults.
- … We could also have markup for noting that omitting the parameter is the same as setting it to empty. But I couldn’t find a good notation for it.
- CG: But if we have one specific rule, that might be enough.
- JLO: Is this about optional parameters?
- CG: It’s about the cases when an empty sequence is supplied but it should be
replaced by the default value.
- … The original purpose of the PR was to distinguish between an absent argument and an argument that’s present but is the empty sequence.
- JLO: That sounds great, but sometimes we want to say that you want to use the empty sequence and not the default value.
- RD: If I understand correctly, you’ve changed the type signature of the
defaults so that the “?” is removed from the type signature and replaced it with a default.
- … I’m kind of hesitant with that because the empty sequence means “zero”.
- … Even if we do have this rule, specifying a zero-item object can be passed to the function.
- CG: That’s what NW’s
(: Note :)markup is for. - RD: But in the function signatures, the types have changed.
- … I’m not happy with
start as xs:integer := 0if you can pass an empty sequence.
- … I’m not happy with
- CG: I think we can discard my proposal to change the signatures.
- NW: So we’ll close this PR and CG will make another?
ACTION QT4CG-149-01: CG to draft a new PR with the common rule note.
- NW will merge the markup changes for the note.
2.2. PR #2387: 641 NaN/Infinity in JSON
See #2387.
- MK: This was a suggestion from CG. Rather than failing when you have a number that’s Infinity or NaN we output some fallback representation.
MK reviews the PR and the fallback representations.
- RD: So those will be xs:decimal types?
- MK: No, they’re double or float because that’s how you get Infinity.
- … They’re legitimate JSON numbers, but they’re out of range for IEEE.
- JLO: It’s good that we begin this up again. Last time we talked about out,
there were several options. I’m not sure I like the
nullforNaN. - MK: The only other alternative is a string. Anything is a bit arbitrary. This seems like the closest approximation to me.
- JLO: What happens if you put these into JSON tools, like jq?
- MK: I haven’t tested any.
- WP: This is just the way the thing gets written out.
- MK: This is the way we serialize the JSON if it contains an Infinity.
Proposal: Accept this PR.
Accepted.
2.3. PR #2376: 2337 Extend xsl:mode/@typed to handle JNodes etc
See #2376.
MK introduces the PR.
- MK: The main problem with this is that it overloads an attribute that was
originally designed to be a boolean and is becoming more complex.
- … The
@typeddata started as a boolean; then it was extended to “strict”, “lax”, and “unspecified”. - … We’ve never really covered the case of what typed means if you are matching things that aren’t element nodes.
- … The relevant section is now extended to cover them.
- … The
Proposal: Accept this PR.
Accepted.
2.4. PR #2373: 2359 No conversion to JNode in absolute paths
See #2373.
- MK: This fixes a bug or inconsistency about whether or not a path starting with “/” triggers conversion to a JNode. I chose not.
Proposal: Accept this PR.
Accepted.
2.5. PR #2372: 2344 Change rendition of PIs in HTML5
See #2372.
- MK: Issue raised by CG. The rules we have for PIs in HTML are meaningless with HTML 5 which doesn’t recognize processing instructions.
- RD: Does this only apply to the HTML serialization?
- MK: Yes.
- CG: I was a bit surprised to have the new comment; I’d have expected the PI to be omitted.
- But that’s just one of many ways.
- RD: That depends if you’re using the HTML based parser or the XML based parser. (Some discussion of the HTML DOM and variations in parsers.)
- MK: Leaving it in is purely for diagnostics.
- RD: Or you could have an XHTML document that you load as XML and serialize as HTML5.
- JLO: Why is it a
mustbe maintained as a comment. - MK: Because on the whole we’re prescriptive unless there’s a good reason not to be.
- JLO: Would it warrant a serialization option to drop them.
(Oh goodness no.)
- WP: As an XSLT person, we can do it all in a pipeline.
- … What are HTML5 parsers instructed to do with processing instructions?
- RD: The parser parses them into comments.
Some discussion of why we need to do this: because we ought to produce things that are consistent with the HTML5 grammar.
RD displays the relevant part of the WHAT WG specification. Discussion ensues.
ACTION: QT4CG-149-02: MK to update the PR #2372 so that the “?” are part of the comment.
2.6. PR #2379: Use exported schema to validate function catalogs
See #2379.
Everyone is happy with NW or MK having to update the generated schema.
3. Any other business
Update from JLO about teaching XSLT at the CHAOS Communications Congress.
- JLO: Some people were intrigued by the idea of XSLT
- … I made a proposal to do a self-organized session
- … I got mixed reactions; “someone unironically proposed an XSLT talk at the conference, has hell frozen over?”
- … I boiled down the talk that JWL and I did at Declarative Amsterdam
- … Talked briefly about the suggestions to remove XSLT from the browser
- … (Got to talk to the researcher who made the suggestion to rescind XSLT.)
- MK: Is this because people don’t perceive it as a programming language?
- … Anything about security here you can say about Java or JavaScript
- WP: I think it’s worse than that; they just think it’s what was 20 years ago.
- … Perhaps we need a better story about some of the vulnerabilities.
- JLO: I specifically pointed out that this is a declarative programming language.
- … One person really, really stressed that if we have trusted resources, that set should be empty by default.
- … I met someone who learned XSLT on their own and liked it.
- … I also got a good question from them about mixed GTrees; why can’t have a JTree inside an XNode?
- … I think there’s maybe a way to do that.