- From: Norm Tovey-Walsh <norm@saxonica.com>
- Date: Tue, 02 Dec 2025 17:22:52 +0000
- To: public-xslt-40@w3.org
Hi folks,
Here are the draft minutes from today:
https://qt4cg.org/meeting/minutes/2025/12-02.html
QT4 CG Meeting 144 Minutes 2025-12-02
[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/3]
* [8]1. Administrivia
+ [9]1.1. Roll call [7/10]
+ [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 [0/3]
+ [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. Substantive PRs
* [18]2. Technical agenda
+ [19]2.1. PR #2247: Deferred Evaluation in XPath - the
f:generator record
+ [20]2.2. PR #2256: 2216 All atomic types become ordered
+ [21]2.3. PR #2324: 2278 bin:infer-encoding, bin:decode-string
+ [22]2.4. PR #2313: 2298 XQFO rules: definition of default
values
+ [23]2.5. PR #2301: 2198 Add cdata attribute to xsl:text and
xsl:value-of
+ [24]2.6. PR #2281: 2280 Usability of xsl:array-member
+ [25]2.7. PR #2319: 2311 Change default XSLT pattern priorities
* [26]3. Any other business
Draft Minutes
Summary of new and continuing actions [0/3]
XXX
1. Administrivia
1.1. Roll call [7/10]
Regrets: DB, CG
* [ ] David J Birnbaum (DB)
* [ ] Reece Dunn (RD)
* [ ] Christian Gr¸n (CG)
* [X] Joel Kalvesmaki (JK)
* [X] Michael Kay (MK)
* [X] Juri Leino (JLO) [x:19-]
* [X] John Lumley (JWL)
* [X] Wendell Piez (WP)
* [X] Ed Porter (EP)
* [X] Norm Tovey-Walsh (NW) Scribe. Chair.
1.2. Accept the agenda
Proposal: Accept [27]the agenda.
Accepted.
1.3. Approve minutes of the previous meeting
Proposal: Accept [28]the minutes of the previous meeting.
Accepted.
1.4. Next meeting
The next meeting is planned for 9 December 2025.
The CG will meet on 9 and 16 December, then recess for the end-of-year
holidays, with the following meeting on 6 January 2026.
1.5. Review of open action items [0/3]
* [ ] QT4CG-143-01: CG to make another attempt at binary functions.
* [ ] 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.
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 [29]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 [30]#2309: Allow SimpleMapExpr after ArrowExpr
* PR [31]#2160: 2073 data model changes for JNodes and Sequences
* PR [32]#2124: 573 Functions to Construct Trees
* PR [33]#2071: 77c deep update
* PR [34]#2019: 1776: XSLT template rules for maps and array
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 [35]#2320: 2310 Reinstate spec for infix // operator
* PR [36]#2318: 2317 Correct signature of fn:civil-timezone
Proposal: merge without discussion
Accepted.
1.6.3. Substantive PRs
The following substantive PRs were open when this agenda was prepared.
Only some of these will be discussed, as [37]shown below.
* PR [38]#2324: 2278 bin:infer-encoding, bin:decode-string
* PR [39]#2323: 2322 Generalize simplified stylesheets
* PR [40]#2319: 2311 Change default XSLT pattern priorities
* PR [41]#2313: 2298 XQFO rules: definition of default values
* PR [42]#2301: 2198 Add cdata attribute to xsl:text and xsl:value-of
* PR [43]#2283: 2276 Relax XSLT rules on Extension Attributes
* PR [44]#2282: 2278 Add function bin:infer-encoding; simplify
bin:decode-string
* PR [45]#2281: 2280 Usability of xsl:array-member
* PR [46]#2274: 407 Function items capturing XSLT context components
* PR [47]#2266: 540 system-property equivalent for XQuery
* PR [48]#2256: 2216 All atomic types become ordered
* PR [49]#2019: 1776: XSLT template rules for maps and array
2. Technical agenda
2.1. PR #2247: Deferred Evaluation in XPath - the f:generator record
See PR [50]#2256.
DN and LQ (Liam Quin) have indicated that this PR is now ready for
discussion. It's on the agenda this week only as a heads-up. I propose
that we discuss it next week. DN and LQ will join the call.
2.2. PR #2256: 2216 All atomic types become ordered
See PR [51]#2256.
MK introduces the PR.
* MK: The motivation was to get rid of exception cases and to better
align comparison and equality.
+ ... In the status quo, you can't use compare() to compare
things that might be unordered (like QNames)
+ ... Sometimes the ordering is arbitrary (true() and false()),
but they are ordered.
+ ... The ordering for durations is perhaps most problematic; it
remains as it was, but it's not an error to attempt to sort
them.
+ ... The data model impact is quite small, it just says they're
all ordered
+ ... We introduce families of atomic types
+ ... The XPath impact is largely the value comparison
operators.
+ ... The main change is that we remove a great table of
comparison functions.
+ ... Value comparisons are defined in terms of fn:compare().
o ... There's a special case for NaN.
+ ... We've lost a lot of examples with the table; I tried to
make sure we have a reasonable set.
o ... We could add more.
ACTION QT4CG-144-01: MK to consider if any now lost value comparisons
should be added as examples.
* MK: F&O now begins with an apology that it no longer defines any
operators!
* MK: I've introduced the term contextually equal if fn:compare()
returns zero (with the appropriate dynamic context)
+ ... fn:atomic-equal() is now defined in terms of compare for
numerics.
+ ... Editorial changes to fn:compare().
+ ... fn:deep-equal() now refers to fn:compare() returning zero.
+ ... fn:distinct-value() refers to contextually equal.
+ ... fn:index-of now uses the same contextually equal
comparison; that is a technical change.
o ... It compares NaN as equal to NaN.
+ ... Lots of textual change to fn:min() and fn:max(), but not
significant
+ ... fn:highest() and fn:lowest() get some editorial changes
+ ... In fn:substring(), the arithmetic no longer refers to
numeric-less-than operator.
+ ... Arithmetic is still only defined on the duration subtypes.
+ ... All the other changes are about removing the operators.
* NW: Why did we do it the way we did in 2.0?
* MK: I don't know. Someone thought it was a good idea. But now that
we've introduced the general fn:compare function so that's just a
lot of duplication.
* JWL: Are there any serious backwards incompatibilities?
* MK: The only one I'm aware of is NaN in fn:index-of().
Proposal: accept this PR.
Accepted.
(MK believes that CG agreed in principle.)
2.3. PR #2324: 2278 bin:infer-encoding, bin:decode-string
See PR [52]#2324. See also PR [53]#2282.
Wait until CG is present.
2.4. PR #2313: 2298 XQFO rules: definition of default values
See PR [54]#2313.
Wait until CG is present.
2.5. PR #2301: 2198 Add cdata attribute to xsl:text and xsl:value-of
See PR [55]#2301.
* MK: We had an external requirement to support this feature.
+ ... I tried with a PI, but NW observed that was problematic.
+ ... Here, I've added a cdata attribute to xsl:text and
xsl:value-of.
+ ... It's expressed as an intent, and may be ignored.
* NW: Much better. It'll still get lost across successive
transformations.
+ ... Is there any potential here for annotating the actual
text() node?
* MK: We could, but then you'd have to define what happens to
anything that operates on text nodes, for example what do you do
with adjacent text nodes?
* JWL: If a text node is in a variable, you're saying anything could
happen.
* MK: An implementation could potentially store text nodes with a bit
that indicates if cdata is requested.
+ ... But I'm saying it's only really likely to work if you pass
it directly to a serializer.
* JK: Looks good and interesting. Where there any updates needed for
what to do with serialization?
* MK: No, we haven't made this a property of the text node. Sequence
normalization will merge text nodes. I've basically left that
largely unspecified.
* JK: So if you have three text nodes that are adjacent, and only the
middle has the cdata attributes, what should I expect?
* MK: At the moment, I'm honoring that and only putting the middle
one in a CDATA section.
+ ... There's still complexity here, what to do with combining
characters.
+ ... I don't think we want to specify all that.
* WP: I like this a lot. I think it's okay that this is like
disable-output-escaping.
+ ... There's a bit of adjacency here with character mapping.
Some discussion of character mapping.
* MK: I wouldn't expect the CDATA tags themselves to be subject to
character mapping!
+ ... Maybe we need a bit more detail, but I'd like to keep it a
bit hand wavy.
ACTION QT4CG-144-02: MK to add notes about edge cases: sequence
normalization and character maps for example.
Proposal: accept this PR.
Accepted.
2.6. PR #2281: 2280 Usability of xsl:array-member
See PR [56]#2281.
* MK: These changes came from attempts to write tests and finding
cases where it produced the wrong answer. I made spec changes in
response to the usability experience of writing test cases. It's
also in response to comments on the original proposal.
* MK: I've introduced the term parcel again.
+ ... The parcel simplifies the polymorphism in the array
instruction.
+ ... It's now a dynamic error if you mix ordinary items and
xsl:array-member instructions.
MK walks through the examples.
* JWL: In the for-each example that has apply-templates inside it:
<xsl:array for-each="*">
<xsl:apply-templates select="."/>
</xsl:array>
* MK: There are two things it can do is create ordinary nodes or a
single array member.
* JWL: But it can't produce two array members.
* MK: That's right.
* JWL: The heterogenous problem only applies when you use for-each.
Proposal: accept this PR.
Accepted.
2.7. PR #2319: 2311 Change default XSLT pattern priorities
See PR [57]#2319.
* MK: When I wrote the issue, I thought there was a simple typo. But
I discovered that for type patterns there was previous work that
attempted to make the type patterns depend on the placement of the
type in the hierarchy.
+ ... But that makes xsl:next-match really complex.
MK reviews the priorities in the current proposal, section 6.3.3.2.
* MK: The conflict resolution rules are simplified.
* WP: I like it too. I wonder if there are any edge cases where we
need to be able to find the default priority values?
* MK: It would be useful for writing tests!
+ ... I XSLT, you have to bracket it with priorities above and
below and make sure xsl:next-match does the right thing.
Proposal: accept this PR.
Accepted.
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/2025/12-02.html#minutes
7. https://qt4cg.org/meeting/minutes/2025/12-02.html#new-actions
8. https://qt4cg.org/meeting/minutes/2025/12-02.html#administrivia
9. https://qt4cg.org/meeting/minutes/2025/12-02.html#roll-call
10. https://qt4cg.org/meeting/minutes/2025/12-02.html#agenda
11. https://qt4cg.org/meeting/minutes/2025/12-02.html#approve-minutes
12. https://qt4cg.org/meeting/minutes/2025/12-02.html#next-meeting
13. https://qt4cg.org/meeting/minutes/2025/12-02.html#open-actions
14. https://qt4cg.org/meeting/minutes/2025/12-02.html#open-pull-requests
15. https://qt4cg.org/meeting/minutes/2025/12-02.html#blocked
16. https://qt4cg.org/meeting/minutes/2025/12-02.html#merge-without-discussion
17. https://qt4cg.org/meeting/minutes/2025/12-02.html#substantive
18. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
19. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2247
20. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2256
21. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2324
22. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2313
23. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2301
24. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2281
25. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2319
26. https://qt4cg.org/meeting/minutes/2025/12-02.html#any-other-business
27. https://qt4cg.org/meeting/agenda/2025/12-02.html
28. https://qt4cg.org/meeting/minutes/2025/11-25.html
29. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
30. https://qt4cg.org/dashboard/#pr-2309
31. https://qt4cg.org/dashboard/#pr-2160
32. https://qt4cg.org/dashboard/#pr-2124
33. https://qt4cg.org/dashboard/#pr-2071
34. https://qt4cg.org/dashboard/#pr-2019
35. https://qt4cg.org/dashboard/#pr-2320
36. https://qt4cg.org/dashboard/#pr-2318
37. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
38. https://qt4cg.org/dashboard/#pr-2324
39. https://qt4cg.org/dashboard/#pr-2323
40. https://qt4cg.org/dashboard/#pr-2319
41. https://qt4cg.org/dashboard/#pr-2313
42. https://qt4cg.org/dashboard/#pr-2301
43. https://qt4cg.org/dashboard/#pr-2283
44. https://qt4cg.org/dashboard/#pr-2282
45. https://qt4cg.org/dashboard/#pr-2281
46. https://qt4cg.org/dashboard/#pr-2274
47. https://qt4cg.org/dashboard/#pr-2266
48. https://qt4cg.org/dashboard/#pr-2256
49. https://qt4cg.org/dashboard/#pr-2019
50. https://qt4cg.org/dashboard/#pr-2256
51. https://qt4cg.org/dashboard/#pr-2256
52. https://qt4cg.org/dashboard/#pr-2324
53. https://qt4cg.org/dashboard/#pr-2282
54. https://qt4cg.org/dashboard/#pr-2313
55. https://qt4cg.org/dashboard/#pr-2301
56. https://qt4cg.org/dashboard/#pr-2281
57. https://qt4cg.org/dashboard/#pr-2319
Be seeing you,
norm
--
Norm Tovey-Walsh
Saxonica
Received on Tuesday, 2 December 2025 17:22:59 UTC