@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 172 draft minutes #minutes-07-14

14 Jul at 17:15:00 GMT

Draft minutes published.

Issue #2769 closed #closed-2769

14 Jul at 17:05:32 GMT

Repeatability of $rng?next() and $rng?permute()

Issue #2771 closed #closed-2771

14 Jul at 17:05:31 GMT

2769 Clarify repeatability of random-number-generator() results

Issue #2641 closed #closed-2641

14 Jul at 16:25:41 GMT

[Feature] Comments and parse-csv()

Issue #2778 closed #closed-2778

14 Jul at 16:25:40 GMT

2641b Add support for CSV comments

Issue #2750 closed #closed-2750

14 Jul at 16:22:39 GMT

`fn:unparsed-text`, `fn:unparsed-binary`: make them nondeterministic?

Issue #2767 closed #closed-2767

14 Jul at 16:22:38 GMT

2750 Make fn:unparsed-text, ... nondeterministic

Issue #2761 closed #closed-2761

14 Jul at 16:19:42 GMT

2758 Add rules for visibility of named types across packages

Pull request #2788 created #created-2788

14 Jul at 16:18:27 GMT
Reversion of PR 2747 which allowed `A/B?C`

Fix #2774

This PR reverts the effect of PR 2747, which introduced the ability to write the expression A/B?C, with the lookup ?C being part of the step (B?C).

As discussed in the issue, the problem is the interaction with the rules on sorting nodes into document order and deduplication. The expression "feels like" it should evaluate (A/B) ? C - typically searching a JTree to obtain a JNode that wraps a map, and then extracting the entry C from that map; but that's not the actual semantics, because assuming that ?C doesn't select JNodes) it disrupts the deduplication and sorting that (A/B) would otherwise undertake.

Issue #2569 closed #closed-2569

14 Jul at 16:16:22 GMT

Inconsistent rules for unprefixed function calls with explicit default function namespace

Issue #2757 closed #closed-2757

14 Jul at 16:16:20 GMT

2569 Rules for unprefixed function calls with explicit default function ns

Issue #2783 closed #closed-2783

14 Jul at 16:11:45 GMT

Padding strings

Issue #2784 closed #closed-2784

14 Jul at 16:11:44 GMT

2783 fn:pad-string

Issue #2257 closed #closed-2257

14 Jul at 16:11:36 GMT

Record declarations without namespace

Issue #2713 closed #closed-2713

14 Jul at 16:11:35 GMT

2257 Record declarations without namespace

Issue #2779 closed #closed-2779

14 Jul at 16:08:53 GMT

2781a Fix parsing errors in F&O and XQuery specs

Issue #2781 closed #closed-2781

14 Jul at 16:05:40 GMT

XQFO: outdated examples

Issue #2782 closed #closed-2782

14 Jul at 16:05:39 GMT

2781b XQFO: outdated examples

Issue #2299 closed #closed-2299

14 Jul at 16:05:04 GMT

Make the pipe-like operators left associative and have the same precedence

Issue #2315 closed #closed-2315

14 Jul at 16:04:56 GMT

Optimization of the workflow action checkout

Issue #2776 closed #closed-2776

14 Jul at 15:05:28 GMT

2769 repeatability of rng next

Issue #2787 created #created-2787

14 Jul at 14:26:03 GMT
Constructor functions for record types

Following acceptance of PR #2759, if declare item type is used to define a name for a record type, then the record type acquires a constructor function. The spec for "declare item type" at §5.19 refers to §4.21.5 constructor functions, but that section does not define any semantics for a constructor function for instances of a record type.

Now that item types have constructor functions, it is increasingly hard to justify having both named item types and named record types as separate features. I think we should merge them. Specifically:

  • allow all named item types to be recursive
  • allow all record declarations to define default values for fields (these can be used when coercing a map to a record type). But I would suggest that the default value must be a constant
  • allow all record declarations to define methods.

Also: do we get a constructor function if the field names are not NCNames?

QT4 CG meeting 172 draft agenda #agenda-07-14

13 Jul at 14:55:00 GMT

Draft agenda published.

Issue #2786 created #created-2786

13 Jul at 15:14:58 GMT
Clarify interoperability of fragment identifiers

The current specs take the position that fragment identifiers are implementation defined:

The effect of a fragment identifier in the supplied URI is implementation-defined. One possible interpretation is to treat the fragment identifier as an ID attribute value, and to return a document node having the element with the selected ID value as its only child.

I think this is an interoperability problem. Ignoring, or failing to correctly interpret, a fragment identifier can have a profound impact on the document processed. If the processor silently ignores fragment identifiers, I may get wildly incorrect results. In a workflow involving many documents or large documents, or both, this could be difficult to catch.

I think it would be better to say:

  1. The fragment identifier schemes supported by a processor are implementation-defined. (So, technically, implementations must enumerate the schemes they support.)
  2. Processors must report an error if they encounter a fragment identifier that uses a scheme that they do not recognize or cannot cannot be processed (because of implementation limits, or syntactic errors in the scheme, etc.)
  3. Implementations should support the xmlns and element schemes for XML documents and RFC 5147 for text resources. Obviously, they may support other schemes as well.

Issue #2785 created #created-2785

13 Jul at 09:00:02 GMT
Make XSLT tunnel parameters available dynamically as a map

I propose that the current set of tunnel parameters should be available dynamically via a new XSLT-only function tunnel-parameters(), returning a map indexed by QName.

The main benefits are:

(a) it becomes possible for an instruction to test whether a tunnel parameter exists (declaring it with required="no" and a default value is a messy and unsafe way of achieving this)

(b) it becomes possible to write template match patterns that use tunnel parameters as part of the template despatch mechanism (see issue #108)

This proposal was influenced by the discussion on #2737, though it eventually emerged from that discussion that the proposer had something rather different in mind

Pull request #2784 created #created-2784

12 Jul at 21:26:52 GMT
2783 fn:pad-string

Closes #2783

Issue #2783 created #created-2783

12 Jul at 19:32:09 GMT
Padding strings

A simple one:

XPath can format numbers and dates, but it cannot pad a string to a fixed width, although it would often be helpful when creating textual output (reports, log lines, etc.). That’s something most other languages provide.

Users must write it themselves, and the usual workarounds are easy to get wrong. substring($s || ' ', 1, 5) only works if the literal is long enough, and it truncates. $s || string-join(replicate(' ', 5 - string-length($s))) needs two functions and does not feel very intuitive.

The signature, as I would draft it:

fn:pad-string(
  $value    as item()?,
  $length   as xs:integer,
  $options  as map(*)? := {}
) as xs:string

The options could be fill (default " ") and side (end by default, start, both). Examples:

pad-string('abc', 10)                                  (: "abc       " :)
pad-string(42, 6, { 'fill': '0', 'side': 'start' })    (: "000042" :)
pad-string('Chapter 1', 20, { 'fill': '.' })           (: "Chapter 1..........." :)

Pull request #2782 created #created-2782

10 Jul at 21:21:25 GMT
2781b XQFO: outdated examples

I tagged this with »Propose Merge without Discussion« as I believe it’s safe to merge. Feedback is always welcome, though.

Issue #2781 created #created-2781

10 Jul at 21:20:04 GMT
XQFO: outdated examples

Many XQFO examples need to be fixed to be compliant with the latest changes in the spec.

Part 1: #2779 Part 2: #2782

Issue #2780 created #created-2780

10 Jul at 11:14:15 GMT
Comments on 'Functions on CSV Data' in XPath and XQuery Functions and Operators 4.0

I have some comments on 17.5 Functions on CSV Data

The paragraph starting:

The other two functions recognize column names.

There are 3 other functions not 2.

17.5.4 fn:csv-to-arrays In the examples, the results are sometimes shown as sequence of arrays enclosed in () and sometimes not. I know it's not that important, but is it a deliberate decision?

17.5.6 Record fn:parsed-csv-structure-record columns description says:

The sequence of strings will potentially be truncated if the number-of-columns option is specified, and it will potentially be reordered if the filter-columns option is specified.

I assume this is left over from a previous version and should talk about select-columns?

17.5.4 fn:csv-to-arrays and 17.5.7 fn:parse-csv Rules section says:

The input supplied in $value is CSV data, as defined in [RFC 4180].

Should this refer to the extended grammer defined in 17.5, or just not have this sentence at all. Section 17.5.10 doesn't have it.

17.5.7 fn:parse-csv trim-whitespace section: If you have {'header':true(),'trim-whitespace':false()} the 'header' fields are trimmed but not the data fields. The description of trim-whitespace needs to say something about this case.

trim-rows section: It might be better if the false part started 'No padding or trimming of fields in the rows takes place' so that it is explicit this is about field padding/trimming.

17.5.11 Illustrative examples of processing CSV data Example: Converting a CSV into an HTML-style table using fn:parse-csv I have to say that it doesn't look like anyone has tested this. Some comments are:

  1. For the $crlf variable could you make the value XSLT/XQuery agnostic by just having the part after ':='?
  2. No data is output because the default option for header, false() applies to fn:parse-csv and fn:csv-to-xml.
  3. In the XSLT versions some <xsl:template> elements have a closing tag of </xsl:function>.
  4. In the first example the code doesn't reflect the record structure.
  5. In the first example why is the namespace prefix eg declared and excluded when it isn't used.
  6. In the second XQuery example it would help if the references to the CSV XML elements used the correct namespace.

See 5751 more statuses in yearly archives.