- From: Norm Tovey-Walsh <norm@saxonica.com>
- Date: Tue, 06 Jan 2026 17:29:37 +0000
- To: public-xslt-40@w3.org
[ Reposted with the correct subject. Apologies for that. ]
Hello,
Here are the draft minutes from today’s meeting:
https://qt4cg.org/meeting/minutes/2026/01-06.html
QT4 CG Meeting 147 Minutes 2026-01-06
[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 [7/13]
+ [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/4]
+ [14]1.6. Review of open pull requests and issues
o [15]1.6.1. Close without action
* [16]2. Technical agenda
+ [17]2.1. PR #2336: 2334 Revise XSLT pattern syntax and
semantics
+ [18]2.2. PR #2348: 1011 fn transform improvements
+ [19]2.3. PR #2266: 540 system-property equivalent for XQuery
+ [20]2.4. PR #2274: 407 Function items capturing XSLT context
components
* [21]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-147-01: MK to fix the change markup entry for
fn:curent-merge-group; it refers to the wrong function name.
* [ ] QT4CG-147-02: NW to chase up DN and LQ about follow-up to the
generator discussion
1. Administrivia
1.1. Roll call [7/13]
Regrets: CG.
* [X] David J Birnbaum (DB)
* [X] Reece Dunn (RD)
* [ ] Sasha Frisov (SF)
* [ ] Christian Gr¸n (CG)
* [ ] Joel Kalvesmaki (JK)
* [X] Michael Kay (MK)
* [ ] Juri Leino (JLO)
* [X] John Lumley (JWL)
* [X] Alan Painter (AP
* [X] Wendell Piez (WP)
* [ ] Ruvim Pinka (RP)
* [ ] Ed Porter (EP)
* [X] Norm Tovey-Walsh (NW) Scribe. Chair.
1.2. Accept the agenda
Proposal: Accept [22]the agenda.
MK observes that #2336 should have been at the top of the agenda.
Accepted with that change.
1.3. Approve minutes of the previous meeting
Proposal: Accept [23]the minutes of the previous meeting.
Accepted.
1.4. Next meeting
The next meeting is planned for 13 January 2026.
No regrets heard.
JWL gives regrets for 20, 27 January.
1.5. Review of open action items [1/4]
* [ ] 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-146-01: NW to attempt to provide a markup solution for
argument defaults
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 [24]Technical Agenda below for
the focus of this meeting.
1.6.1. 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 [25]#2048: Untrusted execution, and security more generally
Proposal: close this issue without further action.
Accepted.
2. Technical agenda
2.1. PR #2336: 2334 Revise XSLT pattern syntax and semantics
See PR [26]#2336.
MK introduces the PR.
* MK: Primarily about XSLT, but there are one or two knock-on effects
on the XPath grammar.
+ ... One is completely trivial; the pattern syntax now reuses
the fragment for constants so it's been rearranged a bit.
o ... 2.6.6 Constants has been drawn out into a section of
their own.
+ ... The other is not so trivial; in the interest of alignment,
I've changed the syntax for JNode types to work like patterns.
You can specify first the selector, then the type. That brings
pattersn and types into alignment for JNodes. Let's look at
that first.
* MK: The JNodeType production is changed; it now has two parts, a
selector property followed by a content type. That aligns with
JNode patterns and element tests.
+ ... The selector has to be a constant, that again aligns with
elements.
+ ... If you want to use the selector with a type, that implies
that it's statically known.
* MK: The other changes are to XSLT.
+ ... The way patterns work has been restructured a bit.
+ ... Predicate patterns aren't new, but we've changed the way
the semantics are described.
+ ... I've changed the syntax for type patterns, it was getting
too messy.
+ ... I gave up trying to write some types in type() and some
outside. They're now all uniformly a tilde followed by an item
type.
* MK: Type patterns are now simple conceptually; you can't combine
them with union and intersect.
* MK: The third kind of pattern are ~GNodePattern~s. You can now use
paths for both JTrees and XTrees and the semantics are defined in
the same way.
+ ... This removes the ambiguity of parenthesis in JNode
patterns.
* MK: The meaning of GNode pattern has been generalized to handle
JNodes.
* MK: Changing the intersect and excepts back to the way it was also
removes the backwards incompatibility that we introduced. But also
reintroduces the problem that except doesn't always mean what you
might think it means.
* MK: There are no longer special rules for intersect and except in
priorities.
MK reviews the priorities outlined in the spec.
* JWL: In 6.3.2.2, the fifth example in type patterns, the
jnode(address... example is missing a closing ).
+ ... I've run some tests on the grammar and I don't see any
ambiguities.
* JWL: We don't use tilde anywhere else, right?
* MK: I think that's right. At one stage we had a separate syntax for
JTrees but we abandoned that.
* JWL: The * in the selectors and content things, is there an
argument for saying that that is a wildcard production? Or is that
too complex?
+ ... When I'm doing the grammar conversions, there isn't a
production for the *, it's just text.
+ ... If we made it a specific production, then it would be
clearer in the grammar.
* MK: There's a related problem when you just have a name there; you
have to remember that it was a bare name because you don't know
until runtime if it's being used as an element name or not. (Is it
a QName in the default namespace or a plain name?)
+ ... The semantics get a little bit complex in that case.
* JWL: It's just a suggestion.
* RD: We do something similar for element and attribute tests,
because they were missing the *:name production.
* JWL: That might be what I'm thinking wildcard is set to. I'll
review and send some mail.
Proposal: Accept this PR.
Accepted.
* JWL: In the example that has a record with a * at the end is a
production for an extensibility key. I think we've got reasonable
stuff about trying to make things grammar productions.
* RD: See also:
+ [27]https://qt4cg.org/specifications/xquery-40/xpath-40.html#d
oc-xpath40-ItemType-NameTest
+ [28]https://qt4cg.org/specifications/xquery-40/xpath-40.html#p
rod-xpath40-Wildcard
* JWL: You need to know that a star was present which is unlike
tilde.
2.2. PR #2348: 1011 fn transform improvements
See PR [29]#2348.
* MK: I think the issue here describes a wider range of things; I
just picked some low-hanging fruit.
* MK: The first thing is adding a source-location option.
+ ... We needed this in Saxon to allow fn:transform to do
streaming.
* MK: ... We add the option to write outputs to persistent storage
(the filesystem)
+ ... We resisted this previously because it's a side effect;
let's just bite the bullet.
Proposal: Accept this PR.
Accepted.
2.3. PR #2266: 540 system-property equivalent for XQuery
See PR [30]#2266.
Some discussion of whether or not this is awaiting further work...
2.4. PR #2274: 407 Function items capturing XSLT context components
See PR [31]#2274.
MK introduces the PR. Essentially, it handles the XSLT bits of the
context the same way we handle the XPath bits. When you bind a function
item to something like regex groups, then it explicitly captures the
regex groups as part of the bound context in that function item rather
than throwing some sort of error. It's just an alignment thing with the
XPath context functions.
* MK: The detail mainly involves removing rules.
Proposal: Accept this PR.
Accepted.
ACTION QT4CG-147-01: MK to fix the change markup entry for
fn:curent-merge-group; it refers to the wrong function name.
* JWL: Inside a function that captures the regex group, is it
available for the whole function?
Some discussion of a complex case with a partial function bound to an
XSLT function with the capturing group.
* MK: None of this is especially useful, it just follows the general
rule and removes some special cases.
Proposal: Accept this PR.
Accepted.
3. Any other business
* NW: Are we ready to create a checkpointed version?
General agreement that we are.
* MK: Are we going to try to keep track of changes.
Some discussion. We'll try to be diligent about putting dates in the
change summaries.
* JWL: Should we check with CG and or JLO first?
* NW: I can.
* MK: In terms of program of work, how do we tackle generators?
ACTION QT4CG-147-02: NW to chase up DN and LQ about follow-up to the
generator discussion
Some further discussion.
* RD: DN's approach is more of an external library approach. But the
proposal I made is in effect providing a single function that
allows you to create programmatic sequences from a generator style
or iterator style.
* MK: That's basically the proposal I took and ran with.
* NW to put MK's proposal on the agenda for next week to see if we
can get a better understanding of it.
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/01-06.html#minutes
7. https://qt4cg.org/meeting/minutes/2026/01-06.html#new-actions
8. https://qt4cg.org/meeting/minutes/2026/01-06.html#administrivia
9. https://qt4cg.org/meeting/minutes/2026/01-06.html#roll-call
10. https://qt4cg.org/meeting/minutes/2026/01-06.html#agenda
11. https://qt4cg.org/meeting/minutes/2026/01-06.html#approve-minutes
12. https://qt4cg.org/meeting/minutes/2026/01-06.html#next-meeting
13. https://qt4cg.org/meeting/minutes/2026/01-06.html#open-actions
14. https://qt4cg.org/meeting/minutes/2026/01-06.html#open-pull-requests
15. https://qt4cg.org/meeting/minutes/2026/01-06.html#close-without-action
16. https://qt4cg.org/meeting/minutes/2026/01-06.html#technical-agenda
17. https://qt4cg.org/meeting/minutes/2026/01-06.html#pr-2336
18. https://qt4cg.org/meeting/minutes/2026/01-06.html#pr-2348
19. https://qt4cg.org/meeting/minutes/2026/01-06.html#pr-2266
20. https://qt4cg.org/meeting/minutes/2026/01-06.html#pr-2274
21. https://qt4cg.org/meeting/minutes/2026/01-06.html#any-other-business
22. https://qt4cg.org/meeting/agenda/2026/01-06.html
23. https://qt4cg.org/meeting/minutes/2025/12-16.html
24. https://qt4cg.org/meeting/minutes/2026/01-06.html#technical-agenda
25. https://github.com/qt4cg/qtspecs/issues/2048
26. https://qt4cg.org/dashboard/#pr-2336
27. https://qt4cg.org/specifications/xquery-40/xpath-40.html#doc-xpath40-ItemType-NameTest
28. https://qt4cg.org/specifications/xquery-40/xpath-40.html#prod-xpath40-Wildcard
29. https://qt4cg.org/dashboard/#pr-2348
30. https://qt4cg.org/dashboard/#pr-2266
31. https://qt4cg.org/dashboard/#pr-2274
Be seeing you,
norm
--
Norm Tovey-Walsh
Saxonica
Received on Tuesday, 6 January 2026 17:29:45 UTC