- From: Norm Tovey-Walsh <norm@saxonica.com>
- Date: Wed, 09 Sep 2026 10:45:59 +0100
- To: public-xslt-40@w3.org
Hello,
Here are the minutes from yesterday’s meeting. Apologies for the delay.
https://qt4cg.org/meeting/minutes/2026/09-08.html
QT4 CG Meeting 179 Minutes 2026-09-08
[1]Meeting index / [2]QT4CG.org / [3]Dashboard / [4]GH Issues / [5]GH
Pull Requests
Table of Contents
* [6]Summary of new and continuing actions [0/7]
* [7]Draft Minutes
* [8]1. Administrivia
+ [9]1.1. Roll call [8/11]
+ [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/7]
+ [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
o [18]1.6.4. Substantive PRs
o [19]1.6.5. Required for V4.0
* [20]2. Technical agenda
+ [21]2.1. PR #2797: 2699 fn:element-to-map: validation
+ [22]2.2. PR #2831: 2809 fn:deep-equal, debug option:
nondeterminism
+ [23]2.3. PR #2868: 2867 fn:current everywhere
+ [24]2.4. PR #2869: 2820 Revise cast expressions to avoid the
need for occurrence indicators
+ [25]2.5. PR #2875: 2874 Formal equivalencies: bugs
+ [26]2.6. PR #2878: 2073 JNodes and Sequences
+ [27]2.7. PR #2881: 2873 fn:update: another attempt
* [28]3. Any other business
Summary of new and continuing actions [0/7]
* [ ] QT4CG-143-02: MK to try to recover the ability to extract
formal equivalences into tests
* [ ] QT4CG-167-07: NW to review tests for interpolated strings with
edge cases in mind
* [ ] QT4CG-167-09: NW to close all "nice to have" issues at the end
of October if they haven't progressed
* [ ] QT4CG-170-01: RD to draft a proposal that attempts to address
the lexical issues differently.
* [ ] QT4CG-176-01: NW to see about improving the linking for record
types.
* [ ] QT4CG-177-01: NW to put the progress graphs back in the
minutes.
* [ ] QT4CG-179-01: CG to fix the typo "or absent" in 14.6.5.
Draft Minutes
1. Administrivia
1.1. Roll call [8/11]
AP, BTW give regrets.
* [X] David J Birnbaum (DB)
* [X] Reece Dunn (RD)
* [X] Christian Gr¸n (CG)
* [X] Joel Kalvesmaki (JK) [:04-]
* [X] Michael Kay (MK)
* [ ] Juri Leino (JLO)
* [X] John Lumley (JWL)
* [ ] Alan Painter (AP)
* [X] Wendell Piez (WP)
* [ ] Bethan Tovey-Walsh (BTW)
* [X] Norm Tovey-Walsh (NW) Scribe. Chair.
1.2. Accept the agenda
Proposal: Accept [29]the agenda.
Accepted.
1.3. Approve minutes of the previous meeting
Proposal: Accept [30]the minutes of the previous meeting.
Accepted.
1.4. Next meeting
The next meeting is planned for 15 September.
AP gives regrets for 15 September.
1.5. Review of open action items [1/7]
* [ ] QT4CG-143-02: MK to try to recover the ability to extract
formal equivalences into tests
* [ ] QT4CG-167-07: NW to review tests for interpolated strings with
edge cases in mind
* [ ] QT4CG-167-09: NW to close all "nice to have" issues at the end
of October if they haven't progressed
* [ ] QT4CG-170-01: RD to draft a proposal that attempts to address
the lexical issues differently.
* [ ] QT4CG-176-01: NW to see about improving the linking for record
types.
* [ ] QT4CG-177-01: NW to put the progress graphs back in the
minutes.
* [X] QT4CG-178-01: CG to review the functx library for uses of
node()
+ All the existing functions do what they do what the did before
even with our GNode refactoring
+ JNodes cause something unexpected, but that's to be expected.
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 [31]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 [32]#2071: 77c deep update
* PR [33]#2247: 716 Deferred Evaluation in XPath - the f:generator
record
* PR [34]#2350: 708 An alternative proposal for generators
* PR [35]#2760: 2521 URIs: unify handling of fragment identifiers
* PR [36]#2789: 2787 XQuery changes to merge declare record and
declare type
* PR [37]#2815: 2567 Extended and restricted record types
* PR [38]#2862: 2861 Clarify CSV serialization edge cases
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 [39]#2892: 2891 Oxford comma: inconsistencies
* PR [40]#2890: 2872 Refine supports-dtd option
* PR [41]#2889: 2887 Fix bad JSON example
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 [42]#2879: Rename fn:system-properties()?#supports-xinclude
to match scope
Proposal: close with no further action.
Accepted.
1.6.4. Substantive PRs
The following substantive PRs were open when this agenda was prepared.
* PR [43]#2797: 2699 fn:element-to-map: validation
* PR [44]#2831: 2809 fn:deep-equal, debug option: nondeterminism
* PR [45]#2868: 2867 fn:current everywhere
* PR [46]#2869: 2820 Revise cast expressions to avoid the need for
occurrence indicators
* PR [47]#2875: 2874 Formal equivalencies: bugs
* PR [48]#2878: 2073 JNodes and Sequences
* PR [49]#2881: 2873 fn:update: another attempt
* PR [50]#2885: 2849 xs:integer vs. restricted subtypes
* PR [51]#2886: 1459 Function properties and arities
1.6.5. Required for V4.0
The following issues are labeled "required for V4.0".
* Issue [52]#1777: Shallow copy in XSLT with maps and arrays
* Issue [53]#675: XSLT streaming rules for new constructs
2. Technical agenda
Let's continue our oldest-to-newest pass from last week.
2.1. PR #2797: 2699 fn:element-to-map: validation
See PR [54]#2797
CG introduces the PR.
* CG: This PR enforces validation for the plan that's supplied.
+ ... The option is named "liberal" and when it's false,
conversion will fail when the type cannot be applied to the
value.
* MK: In 14.6.5, I don't think the type entry can be absent.
* CG: My proposal would be to allow it to be absent.
* MK: But things in a record cannot be absent.
* CG: Okay, so it's an empty sequence.
ACTION QT4CG-179-01: CG to fix the typo "or absent" in 14.6.5.
Proposal: accept this PR.
Accepted.
2.2. PR #2831: 2809 fn:deep-equal, debug option: nondeterminism
See PR [55]#2831
* CG: There's nothing new about this one. It's to make fn:deep-equal
nondeterministic if the debug option is true.
* CG: We could accept this PR, then the behavior would be the same
for fn:doc and fn:deep-equal
+ ... But there's a broader question, in #2848
Leave open until we have a comprehensive solution.
Some discussion of nondeterminism as a property of the runtime. MK is
uneasy; the data model says it's a property of the function. But there
are other functions that have unstable forms.
* MK: We could describe trace, message, and so on as inconsequential
output.
* WP: In terms of language theory, isn't this stuff out of band by
definition?
+ ... I think we have to exclude that.
* RD: Then you get a similar effect if you have a deterministic
function that takes a callback function and you call trace in that.
* MK: Yes, that's a similar issue.
* RD: In async languages, there's the concept of async functions and
red/blue functions and propagating properties. And isn't the I/O
monad nondeterministic in Haskell?
* NW: Saying trace output is inconsequential seems like the easy
answer.
* JWL: If you say that the output of the function doesn't depend on
the message, but what happens if you put that message in a file and
read it back later?
* MK: That's why it's useful to have a label for it and explain what
we mean.
2.3. PR #2868: 2867 fn:current everywhere
See PR [56]#2868
* CG: The reason for this PR was MK's PR that introduced the context
value keywords that can be used in default parameters to reference
the value that is the context value from the calling function.
* CG: This syntax seems a bit limiting and only applies to XQuery, so
maybe we could make the current() function available everywhere.
CG describes the semantics in the specification.
* CG: It becomes similar to global variables. With current() you can
refer to the context value as well.
* CG: I considered binding different values to current, but it would
have more profound consequences.
* MK: And would be inconsistent with XSLT!
* JWL: In the item ! current()/@default-category example, I think
it's important to say that the value comes from the context item,
not the item!
* MK: The problem here is partly the way the text is rendered. It's
not always clear if the description goes with the previous or next
example.
* WP: Some rewording here would be useful here.
CG asks JWL to propose some improved prose.
Okay, we'll put this on the agenda next week as "propose to merge
without discussion" after those editorial changes have been made.
2.4. PR #2869: 2820 Revise cast expressions to avoid the need for occurrence
indicators
See PR [57]#2869
* MK: We accepted a proposal to extend cast expressions to array, map
and record types.
+ ... Gunther identified some ambiguity in the syntax.
+ ... I've revised thie syntax to avoid that ambiguity.
* MK: It gets rid of the occurrence indicator from a cast target.
+ ... The cast target now includes an optional "?" at the end.
* MK: You can no longer follow it by an arbitrary occurrence
indicator.
* MK: The semantics are updated so that you're casting an atomic
item.
* MK: You can't cast a sequence, but you can cast an array that
contains sequences.
* MK: Casting to lists hasn't changed, but the prose has been
improved.
* MK: Internal casting to a sequence is slightly more complicated
than you might expect.
* MK: Casting to an array type invokes the internal cast to a
sequence.
* MK: It works similarly for casting to a map type.
* MK: And for casting to a record type.
* MK: The rule for records doesn't currently allow default values,
we'll have to update this if/when that proposal is accepted.
Proposal: accept this PR.
Accepted.
2.5. PR #2875: 2874 Formal equivalencies: bugs
See PR [58]#2875
* CG: This one is basically editorial. I looked at all the formal
equivalance rules. I checked if they could be parsed and matched
the rules.
+ ... Some needed to be updated.
Proposal: accept this PR.
Accepted.
* RD: Would it help to run the code through a pretty printer?
2.6. PR #2878: 2073 JNodes and Sequences
See PR [59]#2878
Not ready for discussion this week.
2.7. PR #2881: 2873 fn:update: another attempt
See PR [60]#2881
* CG: There's an existing PR from MK about updating that uses a
function with the same name.
* CG: This PR describes another fn:update function.
CG reviews the examples.
* RD: In the examples, why is there an arrow operator to jvalue at
the end?
* CG: To make the serialization consistent. We generate tests for
these.
* MK: Deep equal isn't going to dereference a JNode.
* RD: So in practice, calling jvalue is optional? Could that be added
as a note?
* CG: There are existing issues on how to deal with the serialization
of JNodes.
+ ... It may change, and so may the examples.
* MK: But we don't use serialization to compare, we use
fn:deep-equals
* RD: Could the test be modified to indicate that they return a JNode
and have the test driver do it?
+ ... The examples would be cleaner.
* MK: You could wrap a call to JTree around the result as an
alternative.
No takers for updating the tests as described.
* WP: Awesome. I'll need to review the examples with more care.
* MK: You've packed a lot of power into a single function with a very
simple signature.
+ ... There's a lot of overloading and I haven't quite got my
head around how it works.
+ ... When are you replacing the value and when are you
replacing the node itself?
+ ... Can you explain that?
CG reviews the rules for the function.
* MK: I think it would be good to split the description for XNodes
and JNodes.
* WP: I'd like to know more about the requirements.
+ ... A Query language or Transformation language that has this
inside it is interesting.
* RD: There was an XQuery update facility to do a similar sort of
thing.
+ ... When using updates tied to a database, you can use XQuery
to implement REST endpoints, so you need some way to update
data there
+ ... And also it can be useful when doing more complicated
queries that are transformative or generating aggregated
results.
* MK: In the case of maps and arrays, this is doing something that's
very hard to do any other way.
+ ... In the context of XML, we have a range of solutions
already, but some things are still remarkably difficult to do.
Consider again in the future.
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/09-08.html#new-actions
7. https://qt4cg.org/meeting/minutes/2026/09-08.html#minutes
8. https://qt4cg.org/meeting/minutes/2026/09-08.html#administrivia
9. https://qt4cg.org/meeting/minutes/2026/09-08.html#roll-call
10. https://qt4cg.org/meeting/minutes/2026/09-08.html#agenda
11. https://qt4cg.org/meeting/minutes/2026/09-08.html#approve-minutes
12. https://qt4cg.org/meeting/minutes/2026/09-08.html#next-meeting
13. https://qt4cg.org/meeting/minutes/2026/09-08.html#open-actions
14. https://qt4cg.org/meeting/minutes/2026/09-08.html#open-pull-requests
15. https://qt4cg.org/meeting/minutes/2026/09-08.html#blocked
16. https://qt4cg.org/meeting/minutes/2026/09-08.html#merge-without-discussion
17. https://qt4cg.org/meeting/minutes/2026/09-08.html#close-without-action
18. https://qt4cg.org/meeting/minutes/2026/09-08.html#substantive
19. https://qt4cg.org/meeting/minutes/2026/09-08.html#required-40
20. https://qt4cg.org/meeting/minutes/2026/09-08.html#technical-agenda
21. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2797
22. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2831
23. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2868
24. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2869
25. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2875
26. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2878
27. https://qt4cg.org/meeting/minutes/2026/09-08.html#pr-2881
28. https://qt4cg.org/meeting/minutes/2026/09-08.html#any-other-business
29. https://qt4cg.org/meeting/agenda/2026/09-08.html
30. https://qt4cg.org/meeting/minutes/2026/09-01.html
31. https://qt4cg.org/meeting/minutes/2026/09-08.html#technical-agenda
32. https://qt4cg.org/dashboard/#pr-2071
33. https://qt4cg.org/dashboard/#pr-2247
34. https://qt4cg.org/dashboard/#pr-2350
35. https://qt4cg.org/dashboard/#pr-2760
36. https://qt4cg.org/dashboard/#pr-2789
37. https://qt4cg.org/dashboard/#pr-2815
38. https://qt4cg.org/dashboard/#pr-2862
39. https://qt4cg.org/dashboard/#pr-2892
40. https://qt4cg.org/dashboard/#pr-2890
41. https://qt4cg.org/dashboard/#pr-2889
42. https://github.com/qt4cg/qtspecs/issues/2879
43. https://qt4cg.org/dashboard/#pr-2797
44. https://qt4cg.org/dashboard/#pr-2831
45. https://qt4cg.org/dashboard/#pr-2868
46. https://qt4cg.org/dashboard/#pr-2869
47. https://qt4cg.org/dashboard/#pr-2875
48. https://qt4cg.org/dashboard/#pr-2878
49. https://qt4cg.org/dashboard/#pr-2881
50. https://qt4cg.org/dashboard/#pr-2885
51. https://qt4cg.org/dashboard/#pr-2886
52. https://github.com/qt4cg/qtspecs/issues/1777
53. https://github.com/qt4cg/qtspecs/issues/675
54. https://qt4cg.org/dashboard/#pr-2797
55. https://qt4cg.org/dashboard/#pr-2831
56. https://qt4cg.org/dashboard/#pr-2868
57. https://qt4cg.org/dashboard/#pr-2869
58. https://qt4cg.org/dashboard/#pr-2875
59. https://qt4cg.org/dashboard/#pr-2878
60. https://qt4cg.org/dashboard/#pr-2881
--
Norm Tovey-Walsh
Saxonica
Received on Wednesday, 9 September 2026 09:46:07 UTC