QT4 CG Meeting 023 Minutes 2023-02-21

Table of Contents

Minutes

Approved at meeting 024 on 28 February 2023.

Summary of new and continuing actions [0/10]

  • [ ] QT4CG-002-10: BTW to coordinate some ideas about improving diversity in the group
  • [ ] QT4CG-016-08: RD to clarify how namespace comparisons are performed.
  • [ ] QT4CG-021-03: RD to change must to will in DOM notes about lowercase
  • [ ] QT4CG-021-04: RD to revise and move the note about unrecognized entities
  • [ ] QT4CG-023-01: NW to review the stylesheets for functions across XPath and XSLT
  • [ ] QT4CG-023-02: MK to write a PR to drop xsl:function-library from the spec.
  • [ ] QT4CG-023-03: MK to start a new thread for discussion function namespace flexibility
  • [ ] QT4CG-023-04: MK to review and develop a proposal for separating element and type default namespaces
  • [ ] QT4CG-023-05: NW to put record types on an agenda.
  • [ ] QT4CG-023-06: MK to revisit and make a PR for a sequence-type attribute on xsl:mode

1. Administrivia

1.1. Roll call [7/14]

Regrets: BTW, CG, EP

  • [ ] Anthony (Tony) Bufort (AB)
  • [X] Reece Dunn (RD)
  • [X] Sasha Firsov (SF)
  • [ ] Christian Grün (CG)
  • [X] Joel Kalvesmaki (JK) [:13-]
  • [X] Michael Kay (MK)
  • [X] John Lumley (JL)
  • [X] Dimitre Novatchev (DN)
  • [ ] Ed Porter (EP)
  • [ ] Liam Quin (LQ)
  • [ ] Adam Retter
  • [ ] C. M. Sperberg-McQueen (MSM) [:06-]
  • [ ] Bethan Tovey-Walsh (BTW)
  • [X] Norm Tovey-Walsh (NW). Scribe. Chair.

1.2. Accept the agenda

MK proposes specifically to review PRs 362, 353, and 354.

Proposal: Accept the agenda as amended.

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 scheduled for Tuesday, 28 February 2023.

No regrets heard.

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

  • [ ] QT4CG-002-10: BTW to coordinate some ideas about improving diversity in the group
  • [ ] QT4CG-016-08: RD to clarify how namespace comparisons are performed.
  • [X] QT4CG-021-01: NW to raise a PR addressing the points in issue #307
  • [X] QT4CG-021-02: NW to check for deprecated URI features and add options for them in fn:build-uri and fn:parse-uri
  • [ ] QT4CG-021-03: RD to change must to will in DOM notes about lowercase
  • [ ] QT4CG-021-04: RD to revise and move the note about unrecognized entities

2. Technical Agenda

2.1. Open PRs related to XSLT

2.1.1. PR #362, Drop obsolete note in XSLT regarding for-each-group/@array

See pull request #362.

MK leads discussion.

  • MK: A trivial note that’s no longer applicable.

Proposal: accept this PR.

Accepted.

2.1.2. PR #354, Combine multiple signatures of XSLT functions to use defaults

See pull request #354.

MK leads discussion.

  • MK: We did a pass over the standard XPath functions to combine signatures. I did the same to the XSLT functions.

ACTION QT4CG-023-01: NW to review the stylesheets for functions across XPath and XSLT

Proposal: accept this PR.

Accepted.

2.1.3. PR #353, issue #109 xsl note

See pull request #353 and issue #109.

MK leads discussion.

  • MK: My preferred solution is xsl:note, stripped out at the same time as comments and PIs.
    • … There’s also a change here for a main-module attribute to document the location of the main module,
  • JL: If the module is reusable, that could be wrong
  • MK: Yes.
  • MK: The whitespace stripping code has been restructured a bit.
    • … It was in the wrong place.
  • JL: When preprocessing, is there still a mechanism to get to the original stylesheet?
  • MK: Using the document function with a same-document reference has always been a bit weird. I think there’s room for implementors to do both.
  • DN: I think this is good.
  • JL: Is there an argument for an attribute version of this one?
    • … I tend to put an attribute on a param, for example, to document an element.
  • NW: I’d put an xsl:note inside the parameter
  • SF: Lots of languages have documentation capabilities. We should create a namespace for documentation and add it to the language.
  • MK: We could do that.
  • DN: Maybe we can go too deeply, but we should think about what we could document.
  • NW: These are XML documents. If you want to build a comprehensive documentation system on tp of them you can.
  • MK: If we wanted to go further, we’d start by looking at third party vocabularies.
  • JK: Oxygen has one, I have one.
  • SF: That would be a reference implementation.
  • NW: What about calling it xsl:documentation as a parallel with XML Schema and XProc?
  • MK: I prefer shorter names.
  • NW: Okay.

Proposal: Accept this PR?

Accepted.

2.2. Review of appendixes J.1.1 and J.1.2.

See J Changes since XSLT 3.0.

We’ll review the items in J.1.1. and J.1.2. with an eye towards categorizing them as:

  1. already agreed by the CG
  2. needs discussion and agreement
  3. OK to rubber-stamp without detailed review
  4. probably best withdrawn for reconsideration.

MK leads the review of J.1.1 and J.1.2 based on his email.

  1. Errata agreed against XSLT 3.0 have been applied.

These were agreed by the old WG before it disbanded and should not need further review

  1. Support for XPath 4.0 and Functions and Operators 4.0 is required. This notably means that support for XDM arrays is now required.

Hopefully uncontroversial.

  1. The xsl:if instruction acquires attributes then and else.

Accepted 8 Nov 2022 subject to action ACTION QT4CG-010-02

  1. The xsl:when and xsl:otherwise elements can be evaluated using a select expression rather than a contained sequence constructor.

Accepted 8 Nov 2022

  1. A new xsl:switch instruction is introduced.

Accepted 8 Nov 2022

  1. The xsl:item-type declaration allows names to be given to item types, which can then be referenced by name. This is particularly useful with record types, introduced in XPath 4.0.

Needs WG review; affects XQuery and XPath also

  • MK: repeating the types all the time is tedious
    • … Should it be purely a macro, or does it have some semantics such as self-reference: how far should we go?
    • … What are the scope rules? It should be another component that you can use and export, etc.
  • JL: At any level?
  • MK: I’ve only put at the top level.
    • … Shouldn’t be subject to import precedence.
  • NW: I think this is a really good idea, but what about XPath?
  • RD: There’s an equivalent declare-item-type in XQuery
    • … Issues: self-referencing, some grammar irregularities with item-type(name)
  • MK: There are lots of loose ends.
  • DN: I have mentioned elsewhere, this is a step forward, but it’s just a lexical convention. We could go further and make types into real objects in the language. Maybe we should do this, but also continue to think about making a type object.
  • MK: It would be nice if types were objects were types in the language, but it’s not going to be easy to do.

General agreement to continue this work.

  1. A new xsl:function-library declaration is introduced, allowing functions from multiple different namespaces to be called without using a namespace prefix.

MK proposes to withdraw this, the complexity probably exceeds the benefit

  • MK: I don’t think this proposal is very satisfying.
    • … One thing we can’t do is an object-oriented approach. That’s too big a change.
  • RD: One of the suggestions I made in one of DN’s propsals was when importing to be able to override the definitipn. So if you have conflicts, you can make the imported function a new function and then you have to fix it with typeswitch yourself.
  • MK: Yes, something like that would help.
  • JL: Like xsl:original?
  • MK: Maybe.
  • DN: I think there was a good proposal near the beginning of the issue. I think CG is becoming more convinced that it’s useful. If we introduce types as an object, that’s where we can store the information. Sorry if I overreacted to the question about closing some issues. The problem still exists even if you close the issue
  • MK: Yes. I think I wanted to close the threads so we can start fresh. Plus, the default is always the status quo. If there isn’t a proposal that stands a good chance of getting approval, then we always fall back in the status quo,

ACTION QT4CG-023-02: MK to write a PR to drop xsl:function-library from the spec.

ACTION QT4CG-023-03: MK to start a new thread for discussion function namespace flexibility

  1. The default namespace for element names and the default namespace for types can now be different, allowing built-in types to be referenced in unprefixed form ( as="integer" ).

Needs WG review. The main motivation was to allow more flexibility for unprefixed names in paths, e.g. matching by local name only.

  • MK: Splitting these makes it possible to have more flexibility in matching from source documents. If most stylesheets aren’t schema-aware, why not let users drop the xs: prefix.
  • RD: I’ve applied this change to my XQuery plugin and I’m happy with this change.
  • JL: Is there a possibility when you do as="integer", what would happen if you had a record type named integer
  • MK: We could, maybe should, reserve bare names for atomic types.
    • … The other thing in this area that I’ve found attractive is allowing the option of an unprefixed name to match only the local name.
    • … A practical reality is that you find different namespaces with the same local names.
  • RD: HTML allows something like this. I’ve made some proposals along these lines for similar reasons.

ACTION QT4CG-023-04: MK to review and develop a proposal for separating element and type default namespaces

  1. New instructions xsl:array and xsl:array-member allow the construction of arrays.

Needs WG review (and probably revision).

  • MK: Need more infrastructure work in XPath before we can do this. There are separate proposals for wider group review.
  • The instructions xsl:for-each, xsl:iterate, and xsl:for-each-group have attributes array and map which can be used in place of the select attribute to allow iteration over arrays or maps rather than sequences.

We've already dropped this (see below). But it remains an issue.

Same disposition as item 9.

  1. New pattern syntax (type(T), record(N, M, N)) allows matching of items by item type. Needs WG review.

ACTION QT4CG-023-05: NW to put record types on an agenda.

  1. The xsl:mode declaration acquires an attribute as="sequence-type" which declares the return type of all template rules in that mode.

Discussed 8 Nov 2022, no conclusion recorded.

ACTION QT4CG-023-06: MK to revisit and make a PR for a sequence-type attribute on xsl:mode

[ We were running out of time at this point, switching more broadly to next steps. ]

  • MK: I think we should agree that what’s in the spec is accepted unless an issue is raised.

No disagreement heard.

3. Any other business

None heard.