@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 163 draft agenda #agenda-05-05
Draft agenda published.
Pull request #2614 created #created-2614
2613 make xsl:array-member create a JNode
Fix #2613
Issue #2613 created #created-2613
XSLT: result of xsl:array-member
xsl:array-member returns a "parcelled" value that is subsequently used by xsl:array to form a mamber of an array. The parcelled value is currently represented as a zero-arity function.
I propose to change this so the result is represented as a JNode.
The disadvantage of the current approach is that the representation used by xsl:array-member doesn't correspond to the representation used by any of the standard mechanisms used for decomposing an array into its members. So it's fine for constructing a brand-new array, but not for operations like adding or removing members to an existing array. This makes it hard to find a good way of transforming arrays using template rules.
With this change, we would be able to do something like
<xsl:variable name="$array" select="parse-json($cities)/*"/>
<xsl:variable name="$subarray" as="array(map(*))>
<xsl:array>
<xsl:sequence select="$array[?country='UK']"/>
<xsl:array-member select="{'name': 'Douglas', 'country': 'Isle of Man'}"/>
</xsl:array>
</xsl:variable>
to construct an array that combines members selected from an existing array with newly constructed members,
The basic changes are:
- xsl:array-member returns a parentless JNode that encapsulates the selected value.
- xsl:array takes a sequence of items. Each item becomes one member of the array. If the item is a JNode, it is unwrapped to use its
jvalueproperty. Thejkeyandjparentandjpositionproperties are ignored.
This then raises the question of whether we should do the same for xsl:map and xsl:map-entry. Symmetry suggests we should. But there are a couple of complications: firstly, we have to think about backwards compatibility, since xsl:map-entry is present in XSLT 3.0. Secondly, the JNode produced by xsl:map-entry would have a key but no parent, which is a novelty in terms of the current data model, and we would need to reassure ourselves that this has no unintended consequences.
Issue #2612 created #created-2612
`fn:char`, XML 1.1: support \b and \f
The JSON parser detects the backslash-escape sequences \b for backspace and \f for form feed. With the extension to XML 1.1, we should probably also allow these for fn:char.
Some more escape sequences exist for beep et al. (https://en.wikipedia.org/wiki/Escape_sequences_in_C), but they may raise more questions than giving answers.
Pull request #2611 created #created-2611
2598 New function fn:regex
Fix #2598
Pull request #2610 created #created-2610
2584 Absolute path expressions starting at map or array
Fix #2584
Pull request #2609 created #created-2609
QT4CG-156-03 Revise text on JNode identity
I've tried to incorporate feedback from the discussion, though my notes and the official minutes fail to capture all the points that were made.
Pull request #2608 created #created-2608
2312 Removal of Map/Array Filter (somewhat sigh)
Closes #2312
Pull request #2607 created #created-2607
2314 fn:error: return type xs:error
Closes #2314
Pull request #2606 created #created-2606
2605 file:copy, file:move: define behavior when target is inside source dir
Closes #2605
Issue #2605 created #created-2605
`file:copy`, `file:move`: define behavior when target is inside source directory
The current spec for file:copy and file:move does not address the case where $source is a directory and $target is located inside it. A naive implementation of the recursive rules can enter an infinite loop or even corrupt the file system.
Example:
file:copy("/data/foo", "/data/foo/bar")
file:move("/data/foo", "/data/foo/bar")
Pull request #2604 created #created-2604
Action QT4CG-160-01 Methods and Method Calls
I'm not quite sure what "markup error" the action was referring to, but I've proof-read the relevant section and fixed a couple of typos.
Pull request #2603 created #created-2603
2602 EXPath file and binary modules as optional features
Fix #2602.
The EXPath file and binary modules become optional conformance features in XQuery and XSLT.
Interrogatives for these features are added to the system-property() and system-properties() functions.
Fulfils action QT4CG-158-02
Issue #2602 created #created-2602
Clarify conformance status of bin and file libraries
I propose to define support for these libraries as "optional features" in the conformance rules for XQuery 4.0 and XSLT 4.0.
Pull request #2601 created #created-2601
2568 Error code changes for dateTime functions
Replaces https://github.com/qt4cg/qtspecs/pull/2599 to fix #2568
Error code FODT0006 is retained but reserved only for reporting when the value of hours is 24. This is the only rule that applies to a valid combination of components, that diverges from the existing rules for the date/time constructors.
Issue #2599 closed #closed-2599
2568 Error code changes for dateTime functions
Issue #2600 created #created-2600
Add options record as second parameter to `fn:collection` and `fn:uri-collection`
Add a new function signatures
fn:collection($source as xs:string := (), $options as map(*)? (:default-on-empty:) ) as item()*
fn:uri-collection($source as xs:string := (), $options as map(*)? (:default-on-empty:) ) as xs:string*
similar to the newly added functions in XQuery 4.0 adding options parameters to existing functions like fn:doc#2.
For collection and uri-collection I see the following:
- recurse: traverse collection trees down into its subcollections
- stable: this is already vaguely mentioned in the spec and would benefit from a clearer specification
- type: (aka media-type or content-type) while the allowed values will be implementation defined the key should be standardised
This is a follow-up to https://github.com/qt4cg/qtspecs/issues/1021
Issue #2592 closed #closed-2592
fn:parse-json: parsing numbers
Issue #2593 closed #closed-2593
2592 Change number-parser option to number-format
Pull request #2599 created #created-2599
2568 Error code changes for dateTime functions
- Deleting
err:FODT0006 - Updating the information about errors thrown by
fn:build-dateTime - No change to the text for
fn:parts-of-dateTime, as it doesn't currently include a section on errors. This is consistent with the current expectation that neitherfn:parts-of-dateTimenor the implicit constructor forfn:dateTime-recordwill check that the values supplied represent a valid date/time datatype.
As outlined in issue #2568, this represents a proposal to drop err:FODT0006, which is currently only expected to be thrown by fn:build-dateTime.
Like the functions for extracting components of dates and times, fn:build-dateTime essentially orchestrates casting from one date/time-related datatype to another date/time-related datatype; determining which standard date/time constructor needs to be used and supplying the relevant arguments. The errors thrown by date/time constructors are already defined: most commonly err:FORG0001 but also err:FODT0003 for an out-of-range timezone value. My suggestion is that, as with the functions for extracting components of dates and times, there is no need for an error code specific to fn:build-dateTime.
err:FODT0005 would remain unchanged and still be thrown by fn:build-dateTime if the combination of arguments supplied can't be mapped to a date/time datatype.
QT4 CG meeting 162 draft minutes #minutes-04-28
Draft minutes published.
Issue #2345 closed #closed-2345
2299 Expand pipeline to allow arrow expression in path expression
Issue #2489 closed #closed-2489
fn:parts-of-dateTime, fn:parse-uri: names & types
Issue #1310 closed #closed-1310
add fn:match-groups() function
Issue #2470 closed #closed-2470
1310 Function fn:matching-segments
Issue #2598 created #created-2598
Add regex() function
Add a regex($pattern, $flags) function to construct a "compiled" regular expression. This gives a clear signal that the same regular expression might be used repeatedly; it avoids relying on caching, which can be unnecessarily expensive and is not predictable across implementations.
Two possible ways this might work:
(a) allow the result of the regex() function to be used as an argument to functions such as matches(), tokenize(), etc, in place of the $pattern and $flags arguments
(b) make the regex() function return a record with methods matches(), tokenize(), replace() etc whose functionality corresponds to the existing functions.
The second approach seems easier to fit into the type system. With the first approach, it's unclear what kind of value the regex() function should return.
Issue #2597 created #created-2597
XSLT syntax scraps recurse too deeply
Some of the syntax scraps in the XSLT spec recurse much too deeply, see for example 6.3.2.1 Predicate Patterns
In the XPath/XQuery specs, the expansion stops when a construct is reached whose name appears at the head of its own scrap. This doesn't work for XSLT patterns because the expansion is in a different spec.
Pull request #2596 created #created-2596
2580 Map patterns
Fix #2580
Pull request #2595 created #created-2595
DM edits on XML Schema data types
Edits here were motivated by several points that caused me confusion tonight:
- 4.1.2 and 4.1.5 had duplicate text, an indication that they belong next to each other.
- In 4.1.2 there were no pointers to the definitions of the datatypes discussed.
- The fifth bullet point in 4.1.2 is not a schema type (which is the topic of the unordered list). The material belongs outside the list.
- The fifth bullet point claims that XDM defines two data types, but it doesn't. And it doesn't mention another data type discussed in predefined data types.
- There is a long discussion of
xs:errorin the XPath specs, but the reader of this section has no clue on wherexs:erroris defined or explained.
Etc. I suspect my draft here still has problems, but I hope it's an improvement.
QT4 CG meeting 162 draft agenda #agenda-04-28
Draft agenda published.
See 5376 more statuses in yearly archives.