QT4 CG Meeting 138 Minutes 2025-10-14
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
- Draft Minutes
- Summary of new and continuing actions
[0/0]
- 1. Administrivia
- 2. Technical agenda
- 2.1. PR #2239: First cut at diagrams for JNodes (completes QT4CG-127-01)
- 2.2. PR #2232: 1935 Errors from doc-available
- 2.3. PR #2228: 2012 Define array:sort-with, revise fn:sort-with
- 2.4. PR #2227: 2079 Allow optional prefix in EQName syntax
- 2.5. PR #2226: 2186 Change adaptive serialization of JNodes
- 2.6. PR #2225: 1718 Ordered Maps: positions in callback functions
- 2.7. PR #2240: 2237 XSLT impact of multiple schemas
- 2.8. PR #2236: 2235 Tweak the rules for default function namespace
- 2.9. PR #2208: 675 (part) Update XSLT streamability rules
- 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 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 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 #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 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.
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.
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 #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)
2.2. PR #2232: 1935 Errors from doc-available
See PR #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 #2228.
- MK: The
array:sort-with
function has been longstanding and in review, I decided that editorial improvements tofn: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 #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 #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 #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 #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 #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 #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.
- … The first argument of
- 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.