QT4 CG Meeting 132 Minutes 2025-08-12
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
- Minutes
- Summary of new and continuing actions
[0/11]
- 1. Administrivia
- 2. Technical agenda
- 2.1. PR #2116: 2112 Refine/revise the rules for get() in node tests
- 2.2. PR #2120: 2007 Revised design for xsl:array
- 2.3. PR #2156: 2092 Drop map:pair, map:of-pairs, map-pairs
- 2.4. PR #2155: 2150 Define patterns for JNodes
- 2.5. PR #2154: 2152 Revise rules for enumeration types
- 2.6. PR #2149: 2100 Make innermost, outermost, has-children, path apply to JNodes
- 2.7. PR #2147: 2143 Redesign of method calls
- 2.8. PR #2134: 1996 Lookups, KeySpecifier: Literal, ContextValueRef
- 2.9. PR #2133: 2132 error handling in logical expressions
- 3. Any other business
- 4. Adjourned
Minutes
Approved at meeting 133 on 19 August 2025.
Summary of new and continuing actions [0/11]
[ ]
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-132-01: MK to add more examples forinnermost
,outermost
,has-children
andpath
with JNodes[ ]
QT4CG-132-02: MK to double-check the signature ofinnermost
[ ]
QT4CG-132-03: MK to double-check stray text in h.i. inpath
[ ]
QT4CG-132-04: MK to add resize to the rectangle in the example of chaining method calls and flesh out the example.
1. Administrivia
1.1. Roll call [8/11]
Regrets: BTW.
[X]
David J Birnbaum (DB)[X]
Reece Dunn (RD)[X]
Christian Grün (CG)[X]
Joel Kalvesmaki (JK) [:15-][X]
Michael Kay (MK)[ ]
Juri Leino (JLO)[X]
John Lumley (JWL)[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 the agenda.
Accepted.
1.3. Approve minutes of the previous meeting
Proposal: Accept the minutes of the previous meeting.
Accepted.
1.4. Next meeting
The following meeting is scheduled for 19 August 2025.
No regrets heard.
(The CG will take a short recess in late August. We will not meet on 26 August, 2 September, or 9 September.)
1.5. Review of open action items [2/9]
(Items marked [X] are believed to have been closed via email before this agenda was posted.)
[X]
QT4CG-082-02: DN to work with NW to come to agreement on the fn:ranks proposal- Overtaken by events
[ ]
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.[X]
QT4CG-131-04: JK to double check the use of<<
in the grammar where>>
might have been intended
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 Technical Agenda below for the focus of this meeting.
1.6.1. Blocked
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 #2158: 2157 Editorial updates to F+O §5.5 (Unicode collations)
- PR #2146: Require at least one character in StringTemplateFixedPart
- PR #2145: Allow implicit whitespace in StringInterpolation
- PR #2141: Remove nested paragraphs
- PR #2137: 2136 Drop full-width < and > symbols
- PR #2135: QT4CG-131-01/02 Expand on example as actioned
Proposal: merge these PRs without discussion.
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 #1852: fn:values-except: Return atomic values that occur in A but not in B
- MK proposes closing on a value judgement; didn’t meet the minimum bar for adding the function. But that’s a personal judgement.
- JWL: Easy enough to write your own?
- MK: Yes.
- CG: Background: we had some users who were asking for the function. They noticed that
there’s no equivalent predicate solution that’s fast enough.
- … If you have a dedicated function, it’s easier to optimize. But we have maps and there are no other comments, so I’m fine with closing it.
- Issue #1698: Allow select attribute for xsl:call-template instruction
- Issue #714: Function annotations in XSLT
- JWL: If you really want to do this you can pre-process the source code that contains a map.
- MK: They wouldn’t be visible as annotations, but you can get the information.
- JWL: You can do it yourself.
- RD: That’s defining the equivalent of XQuery annotations on functions. Those are used in different places, like BaseX and other processors support REST XQ through annotations.
- MK: There are two things here; being able to define annotations. You could do that with a vendor-defined extension attribute. The other is having the annotations available dynamically for interrogation. That’s subtle enough, we can leave users to design their own.
- RD: I’ve used it in the past for roles.
- MK: You can do that with extension attributes. It was a nice idea, but we can live without it.
- RD: That means if you’re importing a function from XSLT, you can’t use the annotation mechanism in XQuery to interrogate the function.
- WP: The more I hear, the more I’m with JWL. There are ways of doing this.
- Issue #150: fn:ranks: Produce all ranks in applying a function on the items of a sequence
- PR #1062: 150bis revised proposal for fn:ranks
Proposal: close these issues and PRs without further action.
2. Technical agenda
2.1. PR #2116: 2112 Refine/revise the rules for get() in node tests
See PR #2116
Defer until later. (Maybe later today, maybe next week.)
2.2. PR #2120: 2007 Revised design for xsl:array
See PR #2120
- MK: Not ready for discussion. I need to rethink it.
2.3. PR #2156: 2092 Drop map:pair, map:of-pairs, map-pairs
See PR #2156
- MK: We have too many ways to do things; I like these functions, but they are one-liners with JNodes. So let’s simplify the spec by dropping them.
- JWL: I wonder if it’s worthwhile putting them in as examples somewhere.
- MK: We could have a rag-bag appendix of functions in F&O.
- WP: That would be awesome.
Proposal: accept this PR.
Accepted.
2.4. PR #2155: 2150 Define patterns for JNodes
See PR #2155
Defer until later.
2.5. PR #2154: 2152 Revise rules for enumeration types
See PR #2154
MK introduces the PR. Only the XPath and XQuery specs are effected.
- MK: The only material change for users is that
instance of
now does the required thing.- … We still define them as a union of singleton enumerations
- … But a singleton is no longer defined as a type derived from restriction,
that stops
instance of
working. - … This defines it as a new kind of subtype of string.
- … The main reason to change this is so that you can use
instance of
tests in XSLT Patterns because patterns don’t use coercion.
- JWL: Is there any use case where people might want to use other collations?
- MK: Maybe, but the consequences would be horrible.
Proposal: accept this PR.
Accepted.
2.6. PR #2149: 2100 Make innermost, outermost, has-children, path apply to JNodes
See PR #2149
MK introduces the PR.
- MK: This generalizes a few more functions so that they work on JNodes.
- … These could do with more examples.
ACTION: QT4CG-132-01: MK to add more examples for innermost
, outermost
, has-children
and path
with JNodes
ACTION: QT4CG-132-02: MK to double-check the signature of innermost
MK walks through the revised functions.
Some discussion of why has-children
exists at all: streaming.
ACTION: QT4CG-132-03: MK to double-check stray text in h.i. in path
Some discussion of where the “TODO” note is leading; will be resolved when we sort out the question of JNodes and sequences.
Proposal: accept this PR.
Accepted.
MK will address the actions and then merge the PR.
2.7. PR #2147: 2143 Redesign of method calls
See PR #2147
The design of methods was just too baroque; CG made a simplification proposal.
Rather than overloading the ?
operator, we have a separate operator for
invoking methods.
- MK: We introduce a new operator
?>
. We can debate how to spell it later.- … No magic semantics for
?
anymore. Instead there’s a new expression.
- … No magic semantics for
- MK: You can’t use partial function application in this case. It’s a simplification.
- CG: I think I like this solution. Mostly we had different proposals; the other syntax was a little shorter but it wasn’t as composable.
- JWL: Given the example with chaining and resize; would it not be worthwhile putting the resize method into the example.
ACTION: QT4CG-132-04: MK to add resize to the rectangle in the example of chaining method calls and flesh out the example.
- JK: One of the examples that confuses me is the rectangle example.
- … Area is defined in rectangle as a 1 arity function but it looks like you’re invoking a 0 arity function.
- … Can you use
area(.)
?
- MK: No, like the arrow syntax it implicitly passes the first argument.
- JK: If someone were to jigger the function, what are the rules?
- MK: No, the map has to be the first argument and it’s implicitly set.
- JK: More examples would help. An example that invites external parameters would also be helpful.
- RD: The only reserved names are things like
function
andswitch
. - MK: I’m not sure even those are reserved; they’re fine in the context of the record.
- JWL: Thinking about resize; it has to produce a new rectangle that has to have an area method and a resize method and that needs a real example.
- RD: You could potentially do that with a create helper.
- JWL: It doesn’t matter how you do it, you need an example people can follow.
Some discussion of how it might be done: by constructing a new map or by using map:put
.
Proposal: accept this PR.
Accepted.
2.8. PR #2134: 1996 Lookups, KeySpecifier: Literal, ContextValueRef
See PR #2134
CG introduces the PR.
- CG: In the old version a
KeySpecifier
had a few specific productions on the RHS. - CG: I generalized literals and added
VarRef
. - MK: I have slight reservations about the use of
.
. People might feel like?
is very similar to/
and/.
would do something quite different. - CG: You can use variables and in my mind is that
.
is like that. - MK: Well, yes, but it changes implicitly in places.
Proposal: accept this PR.
Accepted.
2.9. PR #2133: 2132 error handling in logical expressions
See PR #2133
- MK: I think this is a simple bug fix. We made the statement that with
and
andor
expressions that an error in the second operand is masked. We failed to carry that into the spec where we discuss those expressions. - RD: Don’t the tables make the paragraph that defines the semantic redundant?
- MK: Yes, but I think it’s still valuable.
Proposal: accept this PR.
Accepted.
3. Any other business
None heard.