QT4 CG Meeting 135 Minutes 2025-09-23
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
- Minutes
- Summary of new and continuing actions
[0/9]
- 1. Administrivia
- 2. Technical agenda
- 2.1. PR #2202: New rules for schema-attribute and schema-element subtyping
- 2.2. PR #2200: 657 Allow user-defined functions in no namespace
- 2.3. PR #2176: 2130 encore: precedes-or-is, follows-or-is
- 2.4. PR #2175: 2093 Rearrange the order and grouping of functions
- 2.5. PR #2160: 2073 data model changes for JNodes and Sequences
- 2.6. PR #2071: 77c deep update
- 2.7. PR #2155: 2150 Define patterns for JNodes
- 3. Any other business
- 4. Adjourned
Minutes
Approved at meeting 136 on 30 September 2025.
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 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 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 Technical Agenda below for the focus of this meeting.
1.6.1. Blocked
1.6.2. Substantive PRs
The following substantive PRs were open when this agenda was prepared.
- PR #2202: New rules for schema-attribute and schema-element subtyping
- PR #2200: 657 Allow user-defined functions in no namespace
- PR #2176: 2130 encore: precedes-or-is, follows-or-is
- PR #2175: 2093 Rearrange the order and grouping of functions
- PR #2160: 2073 data model changes for JNodes and Sequences
- PR #2071: 77c deep update
- PR #2155: 2150 Define patterns for JNodes
- PR #2123: 2051: XSLT group by cluster
- PR #2120: 2007 Revised design for xsl:array
- PR #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 #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 ofattribute(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.
- … I discovered that Saxon had for years treating
- 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 ofelement()
.- … 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 #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.
- … You could qualify all of the functions with
- 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 #2176.
- MK: The comments weren’t objections, just exploring alternatives.
- JK: We introduced
precedes
andfollows
as synonyms for<<
and>>
.- … And for
is-not
. That’s four of the six possibilities. - … This PR adds
precedes-or-is
andfollows-or-is
to fill the gap.
- … And for
- 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
andpreceding-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 #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 #2160.
Not ready to discuss.
2.6. PR #2071: 77c deep update
See PR #2071.
Not ready to discuss.
2.7. PR #2155: 2150 Define patterns for JNodes
See PR #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 aJNodePatternContent
- … 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 aSequenceType
, 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
anditem
are not valid function names.
- … 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,
- 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.