@qt4cg statuses
This page displays recent status updates about the QT4CG project.
The are also captured in an RSS feed.
By year: 2026, 2025, 2024, 2023, 2022, 2021, 2020
QT4 CG meeting 147 draft minutes #minutes-01-06
Draft minutes published.
Issue #407 closed #closed-407
XSLT-specific context properties used in function items
Issue #2274 closed #closed-2274
407 Function items capturing XSLT context components
Issue #1011 closed #closed-1011
fn:transform() improvements
Issue #2348 closed #closed-2348
1011 fn transform improvements
Issue #2339 closed #closed-2339
Default priority of match="element(A|B)"
Issue #2335 closed #closed-2335
Make `jnode()` like `element()`
Issue #2334 closed #closed-2334
XSLT: Parenthesized subexpressions within Patterns
Issue #2297 closed #closed-2297
XSLT pattern ambiguities with typed matches
Issue #2336 closed #closed-2336
2334 Revise XSLT pattern syntax and semantics
Issue #2048 closed #closed-2048
Untrusted execution, and security more generally
Pull request #2358 created #created-2358
2357 Standardize on element() rather than element(*)
Fix #2357
Issue #2357 created #created-2357
element() vs element(*) in function signatures
We use element(*) and element() interchangeably in function signatures. I propose we standardise on the simpler form, element().
Ditto attribute().
Issue #2356 created #created-2356
Clarification on scope of variables in xsl:for-each-group/(@split-when|@merge-when)
A user experimenting with xsl:for-each-group/@split-when with my 4->3 source-code transformer, inferred that the variable $group was available within the sequence constructor of the grouping instruction.
(Unfortunately due to an error in my transformer code $group was within scope in the sequence constructor, though with the wrong value ;-) - this has since been corrected.)
A close and detailed reading of the spec shows that $group and $next are implied as only in scope for the evaluation of the @split-when expression. Might I suggest that there is a small note emphasising this is the case? Similar clarification may be worthwhile for @merge-when too.
QT4 CG meeting 147 draft agenda #agenda-01-06
Draft agenda published.
Issue #2355 created #created-2355
bin:infer-encoding error conditions
The spec says
If no effective encoding could be chosen, an error is raised.
It's not clear what error is raised.
Under Error conditions, it says
[[bin:invalid-encoding] is raised if $encoding is invalid for the given input.
Does this mean that the function must ensure that the input can be successfully decoded using the returned encoding? This seems wasteful, since decode-string() is going to repeat this test. If it doesn't mean this, what does it mean?
Issue #2276 closed #closed-2276
XSLT extensibility rules are unnecessarily strict
Issue #2354 created #created-2354
`fn:append`
It is trivial to append items to a sequence, but it is a bit counterintuitive to do so the functional way, for example within chains:
(1, 3, 5)
=> fn { ., 7, 9 }()
=> string-join(',')
I propose adding a simple fn:append function, as counterpart of array:append:
(1, 3, 5)
=> append((7, 9))
=> string-join(',')
It is easier to prepend items: we already have fn:insert-before (and array:insert-before).
Issue #2353 created #created-2353
Markup problem in rendering grammar productions in HTML
there's also some kind of markup problem that means the links within the grammar don't always work properly.
Originally posted by @michaelhkay in https://github.com/qt4cg/qtspecs/issues/2345#issuecomment-3661848071
The problem is that some local links are incorrect (don't work), and some items don't have links.
For example, in 4.1 Namespace Declarations,
in the line "declare" "default" "element" "namespace" URILiteral,
The html source code for "URILiteral" is:
<a href="#doc-xpath40-DefaultElementNamespaceDecl-URILiteral doc-xpath40-NamespaceDecl-URILiteral">URILiteral</a>
(note a space in the fragment identifier in href)
The code for the first occurrence of URILiteral at the left side is:
<a id="doc-xpath40-DefaultElementNamespaceDecl-URILiteral"></a>
<code><a href="#prod-xpath40-URILiteral">URILiteral</a></code>
(seems correct)
And the code for the second occurrence of URILiteral at the left side is:
<a id="doc-xpath40-NamespaceDecl-URILiteral"></a>
<code>URILiteral</code>
(one anchor is missing, is this intentional?)
The XML source is:
<scrap role="xpath">
<prodrecap ref="DefaultElementNamespaceDecl"/>
<prodrecap ref="NamespaceDecl"/>
</scrap>
Issue #2352 created #created-2352
Trusted execution: Questions
I am trying to understand the exact implications of the trusted execution mode that we have recently introduced. The spec says:
2.3 External Resources and Security
[Definition: The static context includes a boolean property called trusted that determines whether external resources are available.] This may take the following values:
- false: No external resources are available other than resources explicitly made available by the caller through some trusted implementation-defined mechanism.
In the interests of security, the default for these options is false.
How will the rules be interpreted by Saxon? For example,
- What is meant by »external resources«? Does it refer to remote resources (
https://abc.de/fgh.xml) or also to local files? - How would the behavior change if the default is changed to
true? - What could be done to allow or disallow access to local files?
Issue #2351 created #created-2351
Current Drafts: What will we keep, what may be dropped?
As our current specifications are still in the draft stage, we cannot guarantee that any added or changed features will be part of the final specification. However, as 4.0 features are increasingly used in production code, we should try to revert shaky candidates sooner rather than later.
We can collect possible candidates in this issue:
fn:sequence-joinhas just been renamed tofn:insert-separator(#2329)- Do we need syntactic sugar for filtering maps and arrays? #2312
- We have recently dropped
map:pairsandmap:of-pairs. Do we still needarray:membersandarray:of-members? If yes, should we define a record type forrecord(value)?
Pull request #2350 created #created-2350
708 An alternative proposal for generators
This proposal has two ingredients
(a) a single function generate-sequence() that produces a sequence of states from an initial state and a function that computes one state from the previous state
(b) a definition of pipelining (aka lazy evaluation) and (currently incomplete) rules requiring certain operations to have a pipelined implementation.
Issue #2327 closed #closed-2327
Name of sequence-join() function
Issue #2278 closed #closed-2278
bin:decode-string() revisited
Issue #2324 closed #closed-2324
2278 bin:infer-encoding, bin:decode-string
QT4 CG meeting 146 draft minutes #minutes-12-16
Draft minutes published.
Issue #2329 closed #closed-2329
2327 Rename sequence-join as intersperse
Issue #2283 closed #closed-2283
2276 Relax XSLT rules on Extension Attributes
Issue #2322 closed #closed-2322
Relax the rules for simplified stylesheets
Issue #2323 closed #closed-2323
2322 Generalize simplified stylesheets
See 4829 more statuses in yearly archives.