QT4CG meeting 138 draft minutes, 14 October 2025

Hi folks,

Here are today’s minutes:

   https://qt4cg.org/meeting/minutes/2025/10-14.html

QT4 CG Meeting 138 Minutes 2025-10-14

   [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/0]
     * [8]1. Administrivia
          + [9]1.1. Roll call [7/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 [6/9]
          + [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
     * [18]2. Technical agenda
          + [19]2.1. PR #2239: First cut at diagrams for JNodes (completes
            QT4CG-127-01)
          + [20]2.2. PR #2232: 1935 Errors from doc-available
          + [21]2.3. PR #2228: 2012 Define array:sort-with, revise
            fn:sort-with
          + [22]2.4. PR #2227: 2079 Allow optional prefix in EQName syntax
          + [23]2.5. PR #2226: 2186 Change adaptive serialization of
            JNodes
          + [24]2.6. PR #2225: 1718 Ordered Maps: positions in callback
            functions
          + [25]2.7. PR #2240: 2237 XSLT impact of multiple schemas
          + [26]2.8. PR #2236: 2235 Tweak the rules for default function
            namespace
          + [27]2.9. PR #2208: 675 (part) Update XSLT streamability rules
     * [28]3. Any other business

Draft Minutes

Summary of new and continuing actions [0/0]

   None

1. Administrivia

1.1. Roll call [7/11]

   Regrets: DB, JWL.
     * [ ] David J Birnbaum (DB)
     * [X] Reece Dunn (RD)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK)
     * [X] Michael Kay (MK)
     * [ ] Juri Leino (JLO)
     * [X] John Lumley (JWL) [:39-]
     * [X] Wendell Piez (WP)
     * [ ] Ed Porter (EP)
     * [ ] 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 21 October 2025.

   No regrets heard.

1.5. Review of open action items [6/9]

   (Items marked [X] are believed to have been closed via email before
   this agenda was posted.)
     * [X] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
          + Overtaken by [31]#2245.
     * [X] QT4CG-127-01: NW to diagram the JTree representing arbitrary
       XDM content.
     * [X] QT4CG-128-03: NW to compare the file: module against the
       equivalent XProc 3.1 steps
     * [X] QT4CG-137-01: NW to make a concrete proposal for tagged drafts
     * [X] QT4CG-137-02: NW to try to review the spec vis-a-vis #2148

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 [32]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 [33]#2224: 2148 fn:base-uri: Raise error
     * PR [34]#2222: 2217 bin:decode-string: Input encoding
     * PR [35]#2124: 573 Functions to Construct Trees
     * PR [36]#2120: 2007 Revised design for xsl:array
     * PR [37]#2071: 77c deep update
     * PR [38]#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 [39]#2244: Fix bibliographic reference
     * PR [40]#2231: Updated status section for all documents

   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 [41]#1537: XSLT: local functions within an enclosing xsl:mode

   Proposal: close without further action.

   Accepted.

2. Technical agenda

   This agenda attempts to front-load PRs that appear to be
   straightforward and likely to meet with quick approval. Proposals for
   reordering are always in order, no pun intended.

2.1. PR #2239: First cut at diagrams for JNodes (completes QT4CG-127-01)

   See PR [42]#2239.

   Proposal: accept the PR.

   Accepted.

2.2. PR #2232: 1935 Errors from doc-available

   See PR [43]#2232.
     * MK: I think this is mostly editorial. There's clarification here
       about when an error might be raised.
          + ... It's a bit arbitrary, but I thought a consistent response
            was better than lots of error conditions.

   Proposal: accept the PR.

   Accepted.

2.3. PR #2228: 2012 Define array:sort-with, revise fn:sort-with

   See PR [44]#2228.
     * MK: The array:sort-with function has been longstanding and in
       review, I decided that editorial improvements to fn:sort-with were
       needed.
          + ... The only technical change is that at least one comparitor
            is required.
          + ... The description is narrative so that it looks less like an
            implementation.
          + ... If a comparitor raises an error, that's raised by the sort
            function.
     * MK: The array:sort-with reuses the same text, adjusted accordingly.

   Proposal: accept the PR.

   Accepted.

2.4. PR #2227: 2079 Allow optional prefix in EQName syntax

   See PR [45]#2227.
     * MK: This one came from a Saxon user request. There are various APIs
       where you can supply EQNames and the user observed that there was
       no way to provide a prefix for the QName. That meant it had no
       prefix in error messages.
          + ... Expanding the API to allow a prefix fixes this problem.
     * MK: It also effects the fn:parse-EQName function.

   MK reviews the impact in XPath.
     * MK: It's the prefix followed by the colon that's optional.
     * RD: There are two ways of specifying a qualified name, by way of an
       in-scope prefix, or to use the qualified name and specify the
       namespace URI. This would only apply in the case where the
       namespace isn't in the predefined namespaces?

   Some discussion of the problems of passing namespace contexts through
   APIs.
     * MK: Internally, the only way to define an error code in some
       contexts is with an AVT, so you need to pass in the name as a
       string.

   Some discussion of what constitutes a QName. It's a triple, a namespace
   URI, a local part, and a prefix.
     * RD: One issue I forsee is that if you have xs: or xsd: as the
       schema prefix, and you specify the namespace and a different
       prefix, which one takes priority? Is it an error?
     * MK: You're just creating a QName here, you're not putting it in any
       context.
          + ... This doesn't refer to any in-scope bindings; it's just
            creating a triple.

   Further discussion of possible confusion.
     * RD: In Dublin Core there are two namespaces, one for the elements
       and one for the terms. You could define the terms as "dc:" in the
       prolog. In your code you could bind "dc:" to the elements
       namespace.

   Some discussion of namespace fixup in serialization.
     * MK: It's already possible to use fn:QName to make arbitrary
       triples. This doesn't change that, it just gives you another way to
       do it.
     * WP: RD is identifying the original sin of namespaces...
     * RD: With fn:QName you can't do static lookup of a function, but if
       we had the extended EQName syntax, then you could try calling
       ~fn:count~...
     * MK: The spec for function lookup says that it ignores the prefix
       component.
     * NW: MK is right, there's nothing new here.
     * RD: In this case, the namespace still takes priority.
     * MK: In nearly all context, the prefix is ignored. It only matters
       when you turn it into a string.

   Some discussion of when and how the prefix is used to lookup a
   namespace binding.

   CG provides an XQuery example in which a prefix is defined more than
   once (already possible):
element {
  QName('uri', 'prefix:local')
} {
  namespace prefix { 'uri2' }
}

   Possible result (dependent on implementation):
<prefix:local xmlns:prefix="uri" xmlns:prefix_1="uri2"/>

     * CG: There's a typo in the PR.

   Proposal: accept this PR.

   Accepted.

2.5. PR #2226: 2186 Change adaptive serialization of JNodes

   See PR [46]#2226.

   MK introduces the PR.
     * MK: This is from my own experience where you get back a JNode when
       you were expecting the data.

   MK reviews the changes proposed in the PR:

   Proposal: accept this PR.

   Accepted.

2.6. PR #2225: 1718 Ordered Maps: positions in callback functions

   See PR [47]#2225.

   CG introduces the PR.
     * CG: Now that maps are ordered, there are many opportunities to use
       maps instead of sequences when you have key/value pairs.
          + ... This PR allows you to use the position.
     * MK: It took me a while to get myself reconciled to this idea, but
       now that ordering is fully entrenched for maps, I think it makes
       sense.

   Proposal: accept this PR.

   Accepted.

2.7. PR #2240: 2237 XSLT impact of multiple schemas

   See PR [48]#2240.
     * MK: This is essentially editorial; we accepted the proposal to
       allow multiple schemas to be imported.
          + ... This PR adds text to clarify what that means in places
            that didn't admit that possibility.

   MK reviews the changes.

   Proposal: accept this PR.

   Accepted.

2.8. PR #2236: 2235 Tweak the rules for default function namespace

   See PR [49]#2236.
     * MK: We made it possible to have functions without a prefix and
       those should be used in preference to the default function
       namespace.
          + ... This PR fixes a few gaps.
          + ... If you specify a default function namespace, that's the
            only one that's searched.
          + ... In XSLT, you can't define a default function namespace,
            but you're only allowed to omit the prefix on a private
            function. That means it doesn't complicate the rules for
            functions across packages.
     * JWL: Are we losing something in terms of guarding against
       accidental spelling errors and things like that.
          + ... Something about this doesn't feel quite right...
     * MK: We do regard having ambiguous references with a bit of horror;
       but most programming languages allow function names to mean
       different things in different places. There's always some sort of
       implicit qualification.
     * JWL: Could I do something like next match, or xsl:original in
       packages? Can I make my own subsequence that calls the fn: one?
     * MK: Yes, by using the namespace prefix explicitly.
     * WP: The main question for me is, should we be saying anything about
       the use case of overriding?
     * MK: Yes, a little bit of usage guidance might be good.

   Proposal: accept this PR.

   Accepted.

2.9. PR #2208: 675 (part) Update XSLT streamability rules

   See PR [50]#2208.
     * MK reviews the proposal.
     * MK: You can't put streamed nodes in a map or array
          + ... The first argument of array:slice can't be a streamed
            node, so T doesn't make sense.
          + ... I fixed a few others along the same lines.
     * MK: There was a section on maps and streaming; I've added a
       parallel section on arrays and streaming.

   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/10-14.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/10-14.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/10-14.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/10-14.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/10-14.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/10-14.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/10-14.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/10-14.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/10-14.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/10-14.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/10-14.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/10-14.html#close-without-action
  18. https://qt4cg.org/meeting/minutes/2025/10-14.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2239
  20. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2232
  21. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2228
  22. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2227
  23. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2226
  24. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2225
  25. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2240
  26. https://qt4cg.org/meeting/minutes/2025/10-14.html#pr-2236
  27. https://qt4cg.org/meeting/minutes/2025/10-14.html#h-EA605FF8-78BF-4E0E-981D-7FF7358857E0
  28. https://qt4cg.org/meeting/minutes/2025/10-14.html#any-other-business
  29. https://qt4cg.org/meeting/agenda/2025/10-14.html
  30. https://qt4cg.org/meeting/minutes/2025/10-07.html
  31. https://github.com/qt4cg/qtspecs/issues/2245
  32. https://qt4cg.org/meeting/minutes/2025/10-14.html#technical-agenda
  33. https://qt4cg.org/dashboard/#pr-2224
  34. https://qt4cg.org/dashboard/#pr-2222
  35. https://qt4cg.org/dashboard/#pr-2124
  36. https://qt4cg.org/dashboard/#pr-2120
  37. https://qt4cg.org/dashboard/#pr-2071
  38. https://qt4cg.org/dashboard/#pr-2019
  39. https://qt4cg.org/dashboard/#pr-2244
  40. https://qt4cg.org/dashboard/#pr-2231
  41. https://github.com/qt4cg/qtspecs/issues/1537
  42. https://qt4cg.org/dashboard/#pr-2239
  43. https://qt4cg.org/dashboard/#pr-2232
  44. https://qt4cg.org/dashboard/#pr-2228
  45. https://qt4cg.org/dashboard/#pr-2227
  46. https://qt4cg.org/dashboard/#pr-2226
  47. https://qt4cg.org/dashboard/#pr-2225
  48. https://qt4cg.org/dashboard/#pr-2240
  49. https://qt4cg.org/dashboard/#pr-2236
  50. https://qt4cg.org/dashboard/#pr-2208

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 14 October 2025 16:43:22 UTC