@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 156 draft minutes #minutes-03-17

18 Mar at 11:30:00 GMT

Draft minutes published.

Pull request #2534 created #created-2534

17 Mar at 21:45:44 GMT
2408 More misc editorial changes

See #2408

Pull request #2533 created #created-2533

17 Mar at 18:36:12 GMT
2528 Update RFC reference (7159 -> 8259) for JSON

Fix #2527 Fix #2528

Issue #2475 closed #closed-2475

17 Mar at 17:37:24 GMT

JNode types, node kind tests: Unifications

Issue #2515 closed #closed-2515

17 Mar at 17:37:22 GMT

2475 Unification of type syntax

Issue #2000 closed #closed-2000

17 Mar at 17:35:54 GMT

element-to-map() - type signature of plan

Issue #2519 closed #closed-2519

17 Mar at 17:35:52 GMT

2000 Define named record types for the conversion plan

Issue #2520 closed #closed-2520

17 Mar at 17:34:45 GMT

build-dateTime, parts-of-dateTime, and the year zero problem

Issue #2522 closed #closed-2522

17 Mar at 17:34:43 GMT

2520 Atomic Data Types based on XSD 1.1

Issue #2497 closed #closed-2497

17 Mar at 17:30:42 GMT

JNodes diagrams: selector → jkey, content → jvalue

Issue #2511 closed #closed-2511

17 Mar at 17:30:41 GMT

2497 JNodes diagrams: selector → jkey, content → jvalue

Issue #2513 closed #closed-2513

17 Mar at 17:28:33 GMT

QT4CG-152-01 Add note explaining computed node constructor syntax

Issue #2403 closed #closed-2403

17 Mar at 17:25:15 GMT

Testable examples in the file spec

Issue #2514 closed #closed-2514

17 Mar at 17:25:14 GMT

2403 Use narrative results for examples in file module

Pull request #2532 created #created-2532

17 Mar at 15:23:55 GMT

QT4CG-154-01 Mark anyAtomicType as abstract in schema type diagram

Pull request #2531 created #created-2531

17 Mar at 15:04:51 GMT
QT4CG-154-02 Revise rules for setting stylesheet parameters

Looking at the issues raised by this action I decided to make a couple of changes that are not purely editorial.

  • Confirming that an xsl:param in the used package cannot be overridden by an xsl:param or xsl:variable in the using package, because it is private (the 3.0 spec contained conflicting statements here).
  • Allowing a non-static xsl:param in the used package to be initialised using a non-static expression in the using package (thus allowing parameter values to be passed through transitively).

Pull request #2530 created #created-2530

17 Mar at 12:41:56 GMT
QT4CG-155-01 Add comparison of path expressions / lookup expressions

Fulfilling the action. Editorial only.

Pull request #2529 created #created-2529

17 Mar at 12:27:08 GMT
QT4CG-155-02 Clarify that 59.9999 is valid but 60 is not

Fulfilling action QT4CG-155-02

Issue #2528 created #created-2528

17 Mar at 09:34:36 GMT
RFC 7159 has been obsoleted

The current XQFO draft makes normative reference to RFC 7159 for the definition of the JSON grammar. This spec has been obsoleted by RFC 8259. The CG may want to consider updating this reference.

The new version substantively differs in mandating exclusively mandating UTF-8 for interchange: passages assuming the acceptability of UTF-16 and UTF-32 would need to be changed. The definition of fn:json-doc already goes beyond RFC 7159 by allowing the parser to process any additional charset it wants, so I don't think this really affects anything.

Issue #2527 created #created-2527

17 Mar at 09:04:34 GMT
BOM required in JSON input

The definition of fn:parse-json says:

The input MUST consist of an optional byte order mark (which is ignored) followed by a string [...]

The wording here is unclear; is the BOM required or optional? Previous CG discussion (https://github.com/qt4cg/qtspecs/issues/1704) indicates the intent to be latter, in which case the definition should be rewritten.

Issue #2526 created #created-2526

17 Mar at 08:44:48 GMT
Facets

I propose enhancing the item type syntax to allow facets (as in XSD) to be defined for atomic types.

For example

declare item type cal:month as xs:integer with (minInclusive=1, maxInclusive=12);

declare variable $quote-character as xs:string with (minLength=1, maxLength=1) external;

The semantics are exactly as if a restricted type with the same facets were imported from a schema.

At least initially:

  • facets are allowed only on atomic types and not on xs:untypedAtomic
  • the value of the facet must be a Constant
  • we only allow facets that restrict the value space (therefore not whitespace)
  • we allow the pattern facet only on xs:string and xs:anyURI so it becomes a restriction on the value space
  • we don't allow the enumeration facet (though we could consider using it to replace our current enum type)
  • we only allow one value for each facet (so no multiple patterns)
  • we drop some of the dubious combinations such as defining length facets on xs:QName.

In the subsumption rules, the atomic type A with (FACETS) is a subtype of A.

Issue #2504 closed #closed-2504

16 Mar at 15:06:17 GMT

alternative PR#2247: Attempt at a minimalist alternative for generators.

Issue #2525 created #created-2525

16 Mar at 13:30:27 GMT
JNodes: map constructor

The first feedback on JNodes shows that people find the analogy between XML and maps/arrays really attractive. At the same time, it’s perhaps the most challenging part, as the subtle differences of the two data types need to be understood.

For example, our constructors behave differently: Whereas the node constructor includes the full node in the result…

let $xnode := document { <n>123</n> }
return document { $xnode/n },

(: result :)
document { <n>123</n> }

…the map constructor includes only the ·jvalue· and ignores the ·jkey· and, such that the following query fails:

let $jnode := { 'n': 123 }
return { $jnode/n }

Maybe we can tweak map constructors by generating single-entry maps from non-root JNodes?

let $jnode := { 'n': 123 }
return { $jnode/n }

This would enable us to do many other things, such as filtering:

let $jnode := {
  'lu': 'lunes',
  'ma': 'martes',
  'mi': 'miércoles',
  'ju': 'jueves'
}
return { $jnode/(lu, mi) }

(: result :)
{ 'lu': 'lunes', 'mi': 'miércoles' }

In addition, if required, we could introduce an explicit function to convert a JNode to a single-entry map (basically, a shortcut for map:entry(jkey(), jvalue()).

Issue #2524 created #created-2524

16 Mar at 11:35:53 GMT
JNodes, lookup expression: coercion to maps & arrays

4.3 Lookup Expressions says:

If $V is a JNode then it is coerced to the required type (map(*)|array(*)).

We should change the type to (map(*)|array(*))*. Otherwise, the following expression raises an error:

let $jnode := { 'a': ([ 0 ], [ 0 ]) }/a
return $jnode?1

Origin: https://github.com/qt4cg/qtspecs/pull/2506#discussion_r2900780344

QT4 CG meeting 156 draft agenda #agenda-03-17

16 Mar at 07:50:00 GMT

Draft agenda published.

Issue #2523 created #created-2523

16 Mar at 07:43:36 GMT
Upgrade build to use actions/checkout@v6

We're currently using @v4 which (apparently) uses a deprecated version of Node.js. Before June, we should upgrade to @v6, but I think I won't do that while I'm on vacation.

Issue #2316 closed #closed-2316

16 Mar at 07:29:11 GMT

fn:load-xquery-module: return type in function signature

Issue #2517 closed #closed-2517

16 Mar at 07:29:10 GMT

2316 Add fn-prefix to record type names

Pull request #2522 created #created-2522

15 Mar at 13:41:09 GMT
2520 Atomic Data Types based on XSD 1.1

This PR started as a fairly local change to resolve issue #2520 (year zero in build-dateTime and parts-of-dateTime) but it gradually became more ambitious.

The data model now states that the definitions of atomic types are taken from XSD 1.1. This means, for example, that xs:date includes year zero, and xs:double includes negative zero. It is still permitted to use an XSD 1.0 processor for schema processing and validation, but other operations (including casting from string) must follow the XSD 1.1 rules.

In the course of this some rules (including the rules on limits) have migrated from the XQuery and XSLT specs into the XDM specification.

Fix #2520

Issue #2521 created #created-2521

12 Mar at 14:23:25 GMT
File retrieval, URIs: fragment identifiers

Fragment identifiers are now allowed in fn:doc calls, but they are still illegal in other functions (like fn:unparsed-text), for no apparent reason. We should generally allow them.

While reviewing qt4cg/qt4tests#340, I noticed again that the error codes for fn:unparsed-text are a bit of a mess, and difficult to adhere to when using low-level I/O:

  • A dynamic error is raised [err:FOUT1170] if the $source argument contains a fragment identifier, or if it cannot be resolved to an absolute URI (for example, because the base-URI property in the static context is absent), or if it cannot be used to retrieve the string representation of a resource.
  • A dynamic error is raised [err:FOUT1190] if the value of the encoding option is not a valid encoding name, if the processor does not support the specified encoding, if the string representation of the retrieved resource contains octets that cannot be decoded into Unicode characters using the specified encoding, or if any resulting character is not a permitted character.
  • A dynamic error is raised [err:FOUT1200] if the encoding option is absent and the processor cannot infer the encoding using external information and the actual encoding is not UTF-8.

Things don’t get better with the introduction of the fallback option. I would prefer to see them merged to single error code, preferably FOUT1170, and to simplify the description to…

A dynamic error is raised [err:FOUT1170] if the the string representation of a resource cannot be retrieved.

…or to at least drop FOUT1200 and merge it with FOUT1190.

See 5207 more statuses in yearly archives.