QT4 CG Meeting 141 Minutes 2025-11-11
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
Draft Minutes
Summary of new and continuing actions [0/2]
[ ]QT4CG-140-02: MK to add a note about dealing with binary in parse-cvs and parse-json[ ]QT4CG-141-01: MK to follow up on a comment by JWL on #2269
1. Administrivia
1.1. Roll call [9/11]
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]Wendell Piez (WP)[X]Ed Porter (EP)[ ]Bethan Tovey-Walsh (BTW)[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 18 November 2025.
1.5. Review of open action items [1/2]
[X]QT4CG-140-01: NW to make sure that the new spec is in the dashboard.[ ]QT4CG-140-02: MK to add a note about dealing with binary in parse-cvs and parse-json
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 #2272: 2253 Add examples for Q{uri}prefix:local
- PR #2270: 2267 Fix inconsistency in XQuery unprefixed function declarations
- PR #2269: 2268 Correct equivalent expression for for-each-pair
Proposal: merge without discussion.
Accepted.
ACTION QT4CG-141-01: MK to follow up on a comment by JWL on #2269
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 #2265: XDM 4.0: a question about mutability/immutability of sequence types
- Issue #2203: Drop XSLT Streaming?
- Issue #1953: Make generation of constructor function for named record types optional
Proposal: close without further action.
Accepted.
2. Technical agenda
2.1. PR #2277: 2195 Editorial Omnibus
See PR #2277.
- MK: CG has added check boxes; let’s merge the changes we’ve got and press on.
- CG: Many of the comments refer to typos and don’t need much work.
- … Some issues need a more thorough review
- MK: Yes, if you find something non-trival, it should probably be an issue in its own right.
Proposal: accept this PR, but leave the issue open.
Accepted.
2.2. PR #2273: 2219 A method can be applied to multiple maps
See PR #2273.
MK reviews the PR
- MK: I think this PR only points out consequences of the spec as its written.
It doesn’t make any changes.
- … We want maps and arrays to behave like nodes, so we have to allow functions to behave that way (because maps and arrays are functions).
- … We also want it to work that way so you don’t have to do a test for empty.
- JWL: The CSV to arrays example uses csv-to-arrays() which produces a sequence of arrays, which is a sequence of functions, that’s subtle!
- JLO: I’m often using a different form of that, using
?to lookup something. It fails when we have an empty sequence. - MK: No, empty maps to empty now.
MK continues the review.
- MK: There was a suggestion that each application of
=?>could return zero or more functions, but I haven’t changed that. Each application must return exactly one, but there can be multiple maps on the left. - JWL: You normally expect the context item to be consumed fairly quickly.
- MK: Yes, but it’s okay here because the function doesn’t change the context item.
- CG: I need to think about the last example; on the right there are function items. Is that okay? Wouldn’t they need more parentheses.
- NW: I hate it, I agree we have to do it, but I hate it.
- JLO: The result would be a sequence of all the function calls.
- MK: It’s exactly like the first example.
- JLO: I often use the
!operator so that I can return sequences of stuff. - JWL: That means you could have maps of dispatch functions to process bits and pieces, couldn’t you?
- MK: Yes, it opens up all sorts of amazing things.
- CG: What about this example:
let $math := { 'n': -123, 'abs': fn { abs(?n) } } return ( (: ✓ works :) $math ? abs($math), (: ✓ works :) $math =?> abs(), (: ✓ works :) $math ? wrong(), (: ✓ fails :) $math =?> wrong() )
- CG: I think the last two cases should do the same thing.
- … A map can have functions that do or don’t require maps as the first argument.
- MK: Yes. I’d just like to retain a few places where you can get static errors
if you misspell things.
- … This is saying methods should work a bit like static function calls. So there’s some chance of producing a static error.
- JLO: What does “works” mean for
$math ? wrong()? - CG: It returns an empty sequence.
- JLO: I sort of think that shouldn’t work, but also why it should.
- CG: The lookup expression is used for many things; if you use it to call functions, you’ll have those challenges. If you’re just using it for lookups, you maybe don’t want errors. But it can be missleading if you’re calling functions.
Proposal: accept this PR.
Accepted.
- CG: Can we keep 2219 open then?
2.3. PR #2266: 540 system-property equivalent for XQuery
See PR #2266.
MK introduces the PR.
- MK: I added some magic environment variables.
- NW: Why is this better than
fn:system-property()? - MK: The system property function expects QNames in the XSL namespace.
- … I think that could be terribly confusing.
- NW: Fair enough, I’m not going to lie down in the road over this.
- WP: I guess I have similar concerns to NW.
- I see the problem with namespaces, but it seems like we should be doing it the same way.
- MK: I reviewed the list of system properties and some are very XSLT-specific.
- … There are things like the vendor URL that isn’t really sufficient.
Some discussion of the actual list of properties proposed.
- WP: I think my question is about user migration.
- MK: It doesn’t take away system property in XSLT.
- JLO: I think a function like this is needed; every processor has a function
that does something like this.
- … Why isn’t this one function that returns a map?
- MK: Because this is the way the environment variables function works.
- … We’d probably do that differently if we were adding it today, but I just wanted an incremental change.
- … And we could add this to a 3.0 or 3.1 processor without introducing a non-conformity.
- JLO: I’d be in favor of a system properties function that just did this new behavior.
- CG: I think I agree with JLO; if we have a custom function, we can add implementation defined properties.
- RD: Why can’t we use system property again?
- MK: It’s use of the XSL namespace.
- RD: If we did adopt that function, couldn’t we keep them separate.
- MK: It creates a lot of complexity in something like a
use-whenattribute, is that in the XSLT context or the XPath context? What about inxsl:evaluateor inload-query-module. - MK: Let’s see what it looks like if we add a new
system-properties
2.4. PR #2259: 938 Canonical serialization
See PR #2259.
- JK: It’s not ready to vote on, but I could use some feedback.
- … The design choice is to add a new parameter named
canonicalthat takesyesornoand allows canonicalization on XML and JSON, but could also be extended to XHTML. - … Most parameters in serialization get suspended if you say
canonical=yes. But what aboutuse-character-maps.
- … The design choice is to add a new parameter named
- MK: I think you should. If you canonical, then the output should be canonical XML rather than something else. And from an implementation perspective, it’s very muddled what order you do things in them.
- JK: I’ve written that the substitution occurs much earlier than C14N.
- MK: But that means you have to literally implement as proposed, doing a non-canonical serialization and then reparse. And gives rise to new possible errors.
- NW: You could do the double-parsing by hand if you needed to.
- JK: That’d be similar to Unicode normalization. But the C14N specs opt out of that. You have to supply that as a parameter.
2.5. PR #2120: 2007 Revised design for xsl:array
See PR #2120.
MK reviews the PR.
- MK: This takes into account some of JK’s comments on the previous proposal.
- … It attempts to provide a single instruction that meets all use cases.
- MK: I’ve reintroduced
xsl:array-memberas a sub-instruction - MK: I start with the use cases…
MK walked through the documented use cases.
- JWL: I’m happy that
xsl:array-memberis back. It’s much clearer.- … If you have an array with a
for-eachbut noselectand the sequence constructor contains multiplexsl:array-memberchildren, what happens?
- … If you have an array with a
- MK: Excellent question. (Reviewing the rules) In that case, it has no effect. Each evaluation of the sequence constructor gives you one member.
- JWL: Does that mean
xsl:array-memberis not permitted when you have noselect? - MK: I thought about that, but thought maybe a warning was better.
- … YOu might be right. The orthogonality isn’t perfect.
- JK: I’m also happy to have
xsl:array-memberback. I think arrays are more conducive to mapping over XML structures.- … I’d like to see the
xsl:array-memberwith a different parent.
- … I’d like to see the
Proposal: accept this PR.
Accepted.
3. Any other business
Tutorial feedback.
- NW: I thought it was great.
- WP: They did an awesome job. Will the results be published?
- JWL: The notes and slides and workbench should remain available.
- MK: What feedback did you get at the conference?
- JLO: All very positive. And thanks to everyone for the hard work!
- JWL: It was the BaseX fiddle that really made it possible for people to try things out!
- WP: People were very positive about JNodes.
- CG: I thought it was very informative and helpful.
- JLO: Jirka asked me if we want to do it again at XML Prague.