QT4CG meeting 135 draft minutes, 23 September 2025

Hello,

Here are the draft minutes from today’s meeting:

   https://qt4cg.org/meeting/minutes/2025/09-23.html

QT4 CG Meeting 135 Minutes 2025-09-23

   [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/9]
     * [8]1. Administrivia
          + [9]1.1. Roll call [10/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/9]
          + [14]1.6. Review of open pull requests and issues
               o [15]1.6.1. Blocked
               o [16]1.6.2. Substantive PRs
     * [17]2. Technical agenda
          + [18]2.1. PR #2202: New rules for schema-attribute and
            schema-element subtyping
          + [19]2.2. PR #2200: 657 Allow user-defined functions in no
            namespace
          + [20]2.3. PR #2176: 2130 encore: precedes-or-is, follows-or-is
          + [21]2.4. PR #2175: 2093 Rearrange the order and grouping of
            functions
          + [22]2.5. PR #2160: 2073 data model changes for JNodes and
            Sequences
          + [23]2.6. PR #2071: 77c deep update
          + [24]2.7. PR #2155: 2150 Define patterns for JNodes
     * [25]3. Any other business
          + [26]3.1. FYI: the path to standardization...
          + [27]3.2. Logo discussion
     * [28]4. Adjourned

Draft Minutes

Summary of new and continuing actions [0/9]

     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-127-01: NW to diagram the JTree representing arbitrary
       XDM content.
     * [ ] QT4CG-128-03: NW to compare the file: module against the
       equivalent XProc 3.1 steps
     * [ ] QT4CG-131-01: MK to add a non-schema aware result.
     * [ ] QT4CG-131-02: MK to expand on the $E := <e A="p q r"... example
     * [ ] QT4CG-131-03: MK to change "invert" to "transpose" in the
       matrix example.
     * [ ] QT4CG-133-01: MK to correct the use of "Expr" in examples for
       get()
     * [ ] QT4CG-135-01: MK to correct attribute rule 5/d to use the
       schema component name

1. Administrivia

1.1. Roll call [10/11]

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

   None heard.

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

   (Items marked [X] are believed to have been closed via email before
   this agenda was posted.)
     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-127-01: NW to diagram the JTree representing arbitrary
       XDM content.
     * [ ] QT4CG-128-03: NW to compare the file: module against the
       equivalent XProc 3.1 steps
     * [ ] QT4CG-131-01: MK to add a non-schema aware result.
     * [ ] QT4CG-131-02: MK to expand on the $E := <e A="p q r"... example
     * [ ] QT4CG-131-03: MK to change "invert" to "transpose" in the
       matrix example.
     * [ ] QT4CG-133-01: MK to correct the use of "Expr" in examples for
       get()
     * [X] QT4CG-134-01: MK to open an issue about the error code for =?>

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]#2124: 573 Functions to Construct Trees
     * PR [33]#2120: 2007 Revised design for xsl:array
     * PR [34]#2019: 1776: XSLT template rules for maps and array

1.6.2. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [35]#2202: New rules for schema-attribute and schema-element
       subtyping
     * PR [36]#2200: 657 Allow user-defined functions in no namespace
     * PR [37]#2176: 2130 encore: precedes-or-is, follows-or-is
     * PR [38]#2175: 2093 Rearrange the order and grouping of functions
     * PR [39]#2160: 2073 data model changes for JNodes and Sequences
     * PR [40]#2071: 77c deep update
     * PR [41]#2155: 2150 Define patterns for JNodes
     * PR [42]#2123: 2051: XSLT group by cluster
     * PR [43]#2120: 2007 Revised design for xsl:array
     * PR [44]#2019: 1776: XSLT template rules for maps and array

2. Technical agenda

2.1. PR #2202: New rules for schema-attribute and schema-element subtyping

   See PR [45]#2202.

   Mike introduces the PR.
     * MK: This arose when I wrote some new subtyping tests that failed.
          + ... I discovered that Saxon had for years treating
            schema-attribute(x) as a subtype of attribute(x).
          + ... The rules appear to be incomplete.
          + ... Then I discovered that the actual semantics of
            schema-element in particular weren't especially well
            specified.
          + ... There are some bugs in the old Bugzilla with background.
          + ... This is the result of attempting to tidy things up.
     * MK: In Schema Element Tests we change "declared in" to "referenced
       by the {type definition}". This makes it clear that it takes into
       consideration substitution groups.
          + ... Haven't considered XSD 1.1 where you can have multiple
            substution groups
          + ... Added a note to explain the intent of schema-element(N).
     * MK: In the subtyping rules, schema-element(N) is now defined to be
       a subtype of element().
          + ... Rules are added to define the subtyping
          + ... Similar, but simpler changes apply to attributes.

   ACTION QT4CG-135-01: MK to correct attribute rule 5/d to use the schema
   component name
     * MK: It turned out to be a fairly small change, even if it took a
       day to figure it out!

   Proposal: Accept this PR.

   Accepted.

   Mike to complete his action and then merge the PR.

2.2. PR #2200: 657 Allow user-defined functions in no namespace

   See PR [46]#2200.
     * MK: This was originally raised by CG, trying to get rid of the
       local: element namespace in XQuery. It's annoying in XSLT that you
       need a function namespace.
          + ... You can now define a no-namespace function and the search
            path looks first for user functions and then in the default
            namespace.
          + ... If you declare a function with the same name as a standard
            function, on your head be it.
          + ... But you might do that on purpose; for example to have
            current-date return a date without a timezone.
     * MK reviews the detail in the specifications
          + ... There's already a case where a no-namespace can introduce
            constructor functions without a namespace.
     * NW: I'm not objecting to this proposal, but I don't like it. I just
       want to be on record as saying I think it's a mistake. I think the
       usability will be reduced because of confusion about the names.
     * WP: Will we be able to get warnings if we define functions that
       already exist?
     * MK: In nearly every programming language, it's possible to define
       functions that mask system functions.
     * WP: This could introduce a new weakness where it's hard to debug.
     * MK: No it wouldn't be hard to do.
     * RD: It should also be possible to put warnings in IDEs.
     * JWL: Are there any additional security concerns?
          + ... Your ability in a package to redefine a function that
            returns the base URI, for example? Could that cause issues?
     * MK: Interesting. I'd be reluctant to give an unequivocal answer.
     * JLO: It could allow users to write compatibility layers. But it I
       also see the potential for issues. Warnings would reduce the
       usefulness.
          + ... Is it the case that functions with no namespaces can only
            be defined in a main module?
     * MK: There's no restriction in XSLT. In XQuery, public functions
       defined in a module have to be in the module namespace.
     * RD: Implementors can always configure warnings; it might be useful
       for an XSLT or XQuery function, for example.
          + ... You could qualify all of the functions with fn: so that
            it's clear this is a system call.
     * JK: I lean on the skeptical side. What I haven't heard is the
       rationale that motivated the original decision and why that's
       deemed no longer salient.
     * CG: Thanks for the PR. Many of our users don't understand why they
       need a `local:~ prefix to write simple scripts. If you declare
       variables, you don't need a prefix, but you don't need them for
       functions. This would help unify them. You can declare variables
       for functions, so some people do that to avoid the local:
       namespace.
          + ... In library modules, private code without namespaces
            applies to variables and would now apply to functions.

   Proposal: Accept the PR.

   Accepted.

2.3. PR #2176: 2130 encore: precedes-or-is, follows-or-is

   See PR [47]#2176.
     * MK: The comments weren't objections, just exploring alternatives.
     * JK: We introduced precedes and follows as synonyms for << and >>.
          + ... And for is-not. That's four of the six possibilities.
          + ... This PR adds precedes-or-is and follows-or-is to fill the
            gap.
     * JLO: I think I would be all for it. The only thing I'd like to see
       is a good example.
     * JK: Oh, okay. I'm often working on documents where I have an anchor
       point where I don't want to apply processing either before or after
       this point.
          + ... Sometimes I want to include the anchor and sometimes I
            don't.
          + ... This is just really convenient.
     * MK: I've seen this sometimes too.
     * JWL: It's an analogy with axis; we've added preceding-or-self and
       preceding-sibling-or-self.
          + ... I can't see any objections.

   Proposal: Accept the PR.

   Accepted.

2.4. PR #2175: 2093 Rearrange the order and grouping of functions

   See PR [48]#2175.
     * NW: I think this is editorial.
     * MK: Yes, it is.
          + ... We had a comment that said there was no reason for the
            order and grouping.
          + ... I think this is better, but of course there's no "right"
            answer.
     * JWL: You've moved the errors and diagnostics to the end; is that
       similar in the other specs?
     * MK: I think it's the nature of those functions.
     * JWL: Oh, I see. Right.
     * JLO: Where do higher order functions get moved?
     * MK: So many of our functions are higher order, it doesn't make
       sense to have a section about that.
          + ... Sequence functions now includes a section about basic
            higher-order functions.
          + ... That's where they occur now.
     * JLO: Why are sequences first when they're more complicated?
     * MK: Because that's more top-down; everything in the type hierarchy
       is a sequence.
     * CG: I think the revised version is really much better. The old
       version contained obvious inconsistencies.

   Proposal: Accept the PR.

   Accepted.

2.5. PR #2160: 2073 data model changes for JNodes and Sequences

   See PR [49]#2160.

   Not ready to discuss.

2.6. PR #2071: 77c deep update

   See PR [50]#2071.

   Not ready to discuss.

2.7. PR #2155: 2150 Define patterns for JNodes

   See PR [51]#2155.

   MK introduces the PR.
     * MK: You may recall that my first attempt at this change had
       ambiguity problems. I think those are resolved now.
          + ... This is about the syntax of patterns for matching JNodes
          + ... Patterns fall into four groups: PredicatePattern,
            TypePattern, XNodePattern
       (the traditional sort; renamed), and JNodePattern.
          + ... We change how parenthesis are matched so that they're
            easier to combine.
     * MK: Node patterns are moved but not significantly changed; some
       things have been reorganized.
     * MK: The JNodePattern section is new. It mirrors the way XNode
       patterns work, with either a JNodeSelectorPattern and a
       JNodePatternContent
          + ... Variables are not allowed in the key. If you think about
            template matching in XSLT, it could have been allowed but it
            would have to be global.
          + ... Matching content is either * or a SequenceType, often a
            record type.
     * MK: There's not a substantial change in priorities but some text
       has been rearranged.
          + ... There's an attempt at some very simple classification.
     * MK: There's more work to be done, but this is a first step.
          + ... The remaining work is about apply-templates, on-no-match
            etc.
     * JWL: There's a caution that we seem to have a two-arity predicate
       but we also have a one-arity function named jnode(). You'll get
       ambiguity if that's not a reserved name.
          + ... That could certainly cause some confusion. From one of our
            earlier pieces, when you're putting functions into
            no-namespace, then the rules about which ones you cannot use
            still have to be written. For example, if and item are not
            valid function names.
     * MK: Yes. Overriding the name jnode to mean two different things in
       different context seemed less confusing than having different
       names.

   Proposal: Accept the PR.

   Accepted.

3. Any other business

3.1. FYI: the path to standardization...

   The W3C held a meeting about Community Groups recently. One observation
   from that meeting is that the W3C does not consider Community Groups to
   be an appropriate place to do standards work. They're envisioned as
   incubators that lead to the formation of regular Working Groups or
   migration of the work to another standards development organization.

   I pointed out that there is no W3C Activity for XML-related
   standardization. One place to discuss this would be at the Technical
   Plenary but that's in Kobe, Japan this year and I don't think anyone in
   this CG is planning to go. (It will be in Dublin, Ireland next year and
   I will plan to go.)

   More discussion, with an eye towards forming a Working Group is
   expected in the following months. I have no prediction about how that
   will proceed.

3.2. Logo discussion

   Some discussion of the logo. JLO asks if it can just be an outline. BTW
   reports that she tried it and it doesn't really work. You need the
   "highlight" on the bulb.
     * MK: It's a little bit of puzzle and you feel good when you've
       worked it out.

4. Adjourned

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/09-23.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/09-23.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/09-23.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/09-23.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/09-23.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/09-23.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/09-23.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/09-23.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/09-23.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/09-23.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/09-23.html#substantive
  17. https://qt4cg.org/meeting/minutes/2025/09-23.html#technical-agenda
  18. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2202
  19. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2200
  20. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2176
  21. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2175
  22. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2160
  23. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2071
  24. https://qt4cg.org/meeting/minutes/2025/09-23.html#pr-2155
  25. https://qt4cg.org/meeting/minutes/2025/09-23.html#any-other-business
  26. https://qt4cg.org/meeting/minutes/2025/09-23.html#h-D3B23E1A-D8D5-4665-BFFA-CA6AD0E02FEC
  27. https://qt4cg.org/meeting/minutes/2025/09-23.html#h-00FD579B-4F11-4525-8690-3C5F80D83049
  28. https://qt4cg.org/meeting/minutes/2025/09-23.html#adjourned
  29. https://qt4cg.org/meeting/agenda/2025/09-23.html
  30. https://qt4cg.org/meeting/minutes/2025/09-16.html
  31. https://qt4cg.org/meeting/minutes/2025/09-23.html#technical-agenda
  32. https://qt4cg.org/dashboard/#pr-2124
  33. https://qt4cg.org/dashboard/#pr-2120
  34. https://qt4cg.org/dashboard/#pr-2019
  35. https://qt4cg.org/dashboard/#pr-2202
  36. https://qt4cg.org/dashboard/#pr-2200
  37. https://qt4cg.org/dashboard/#pr-2176
  38. https://qt4cg.org/dashboard/#pr-2175
  39. https://qt4cg.org/dashboard/#pr-2160
  40. https://qt4cg.org/dashboard/#pr-2071
  41. https://qt4cg.org/dashboard/#pr-2155
  42. https://qt4cg.org/dashboard/#pr-2123
  43. https://qt4cg.org/dashboard/#pr-2120
  44. https://qt4cg.org/dashboard/#pr-2019
  45. https://qt4cg.org/dashboard/#pr-2202
  46. https://qt4cg.org/dashboard/#pr-2200
  47. https://qt4cg.org/dashboard/#pr-2176
  48. https://qt4cg.org/dashboard/#pr-2175
  49. https://qt4cg.org/dashboard/#pr-2160
  50. https://qt4cg.org/dashboard/#pr-2071
  51. https://qt4cg.org/dashboard/#pr-2155

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 23 September 2025 17:25:24 UTC