@qt4cg statuses

This page displays recent status updates about the QT4CG project.

The are also captured in an RSS feed.

By year: 2025, 2024, 2023, 2022, 2021, 2020

QT4 CG meeting 133 draft minutes #minutes—08-19

19 Aug at 16:10:00 GMT

Draft minutes published.

Issue #2139 closed #closed-2139

19 Aug at 15:56:36 GMT

Binary comparisons

Issue #2168 closed #closed-2168

19 Aug at 15:56:35 GMT

2139 Make hexBinary and base64Binary fully comparable

Issue #2162 closed #closed-2162

19 Aug at 15:55:02 GMT

QT4CG-132-04 Expand the rectangle?area example

Issue #2143 closed #closed-2143

19 Aug at 15:48:05 GMT

JNodes and Methods

Issue #1714 closed #closed-1714

19 Aug at 15:48:00 GMT

sibling:: axis. Action Item QT4CG-097-03

Issue #350 closed #closed-350

19 Aug at 15:47:52 GMT

CompPath (Composite-objects path) Expressions

Issue #119 closed #closed-119

19 Aug at 15:47:46 GMT

Allow a map's key value to be any sequence

Issue #106 closed #closed-106

19 Aug at 15:47:41 GMT

Decorators' support

Issue #34 closed #closed-34

19 Aug at 15:47:36 GMT

Proposal to introduce the set datatype in XPath 4

Issue #2164 closed #closed-2164

19 Aug at 15:45:35 GMT

Fix return type in `fn:parse-csv` signature

Issue #2072 closed #closed-2072

19 Aug at 15:14:09 GMT

JNodes: accessing properties

Issue #2170 closed #closed-2170

18 Aug at 15:46:50 GMT

The current "?>" method call operator is ugly, difficult to read, difficult to find and understand. We have much better alternatives.

Issue #2170 created #created-2170

18 Aug at 15:17:43 GMT
The current "?>" method call operator is ugly, difficult to read, difficult to find and understand. We have much better alternatives.

The current "?>" method call operator is ugly, difficult to read, difficult to find and understand. We have much better alternatives.

One obvious big improvement is to have ==> .

This is:

  1. Readable.
  2. Distinctly distinguishable.
  3. Understandable and intuitive for anyone who has used an OOP language (C++, C#, Java)
  4. Expresses the similarity with the => operator. The same way => provide the LHS item as the first argument of the RHS function, the similar, and extended, in appearance ==> provides the LHS map/object as an implicit argument to the RHS method.
  5. Because of 1, 2, 3, and 4 above, very little additional learning and understanding effort is required from the XPath user.

Proposed action: Replace the ugly, difficult to read, difficult to find and understand operator "?>" with ==> .

QT4 CG meeting 133 draft agenda #agenda-08-19

18 Aug at 10:00:00 GMT

Draft agenda published.

Issue #1938 closed #closed-1938

16 Aug at 18:10:47 GMT

Invoking coerced methods

Issue #2169 created #created-2169

16 Aug at 17:34:08 GMT
Longest-token rule incorrectly produces `StringInterpolation` delimiter

StringInterpolation currently defines a two-character token, curly right brace + backtick, to follow Expr as a terminator:

StringInterpolation ::= "`{" Expr? "}`"

On other occasions, Expr is followed by a single right curly brace:

EnclosedExpr ::= "{" Expr? "}"

The following applies to tokenization (the "longest-token" rule):

If the current position is not the end of the input, then return the longest literal terminal or variable terminal that can be matched starting at the current position, regardless whether this terminal is valid at this point in the grammar.”

My concern is that input like

<a>{42}`</a>

is going to be mis-tokenized under the longest-token rule: after 42, the next (longest) token is the two-character StringInterpolation terminator, which however is not a valid terminator of the EnclosedExpr serving as CommonContent of the direct element constructor.

Proposed fix

My proposal is to replace the two-character tokens that introduce and terminate StringInterpolation with single backticks around an EnclosedExpr with no intervening whitespace:

StringInterpolation ::= "`" EnclosedExpr "`"   /* ws: explicit */

This replaces both of the two-character delimiters of StringInterpolation, while still describing the intended language, but without causing the longest-token rule to produce a token that cannot be handled afterwards.

Issue #1736 closed #closed-1736

15 Aug at 08:52:40 GMT

Add option retain-order=false when constructing maps

Pull request #2168 created #created-2168

14 Aug at 19:33:46 GMT
2139 Make hexBinary and base64Binary fully comparable

Fix #2139

hexBinary and base64Binary become mutually comparable under all comparison operators: which may affect backward compatibility.

Pull request #2167 created #created-2167

14 Aug at 17:59:08 GMT
2166 Reinstate lost text for lookup expressions

Fix #2166

Issue #2166 created #created-2166

14 Aug at 09:40:28 GMT
Lookup expressions: we have deleted too much text

In reverting many of the features previously added to lookup expressions (for example deep lookup and lookup modifiers) we seem to have accidentally lost text that actually defines what the different key specifiers mean; we're left with lots of examples but no actual specification.

I was reading to see what the current spec says about array bound checking: it appears to say nothing.

Issue #2165 created #created-2165

14 Aug at 08:58:55 GMT
Treat expression: inconsistencies, questionable uses

Related: Michael’s observation in https://github.com/qt4cg/qtspecs/issues/2163#issuecomment-3185618064.

The current spec says for treat:

XPath 4.0 provides an expression called treat that can be used to modify the static type of its operand.

It further mentions the static analysis phase, which has been removed from the specs; maybe we should remove these references.

There are hardly any uses of the expression in the current spec. One is for Absolute Path Expressions:

An expression of the form /PP (that is, a path expression with a leading /) is treated as an abbreviation for the expression self::gnode()/(fn:root(.) treat as (document-node()|jnode())/PP.

The use seems confusing, as in many cases self::gnode() can only be evaluated at runtime. Maybe we could rewrite it to a variant that coerces the node? It would generally be easier for optimizers to rewrite paths when there is no need to differentiate between treat and coercion (and I have never seen code that catches XPDY0050).

Indeed I think it would be helpful to have a coerce to expression, even if people will rarely use it explicitly. It would allow us to remove all remaining uses of treat as (except, of course, for the expression itself), and we could simplify various examples that use variable declarations only for coercing values.

Pull request #2164 created #created-2164

13 Aug at 13:51:40 GMT
Fix return type in `fn:parse-csv` signature

In f2e1f48, fn:parse-csv was changed to return an empty sequence, when its first argument is an empty sequence. This is however not reflected in the function's return type, which is here changed to parsed-csv-structure-record?.

Issue #2163 created #created-2163

12 Aug at 21:45:35 GMT
Method calls: `?>` or` =?>`

I propose using =?> for method calls rather than ?>

(a) I lilke the association with => to call a function item with an implicit first argument; =?> combines selection of an item from a map (?) with function invocation (=>)

(b) ?>, while technically unambiguous, smells strongly of XML processing instructions

Issue #2100 closed #closed-2100

12 Aug at 21:32:04 GMT

JNodes: functions

Issue #2149 closed #closed-2149

12 Aug at 21:32:03 GMT

2100 Make innermost, outermost, has-children, path apply to JNodes

Pull request #2162 created #created-2162

12 Aug at 20:54:16 GMT
QT4CG-132-04 Expand the rectangle?area example

Expands the explanation of the example of method chaining

QT4 CG meeting 132 draft minutes #minutes—08-12

12 Aug at 16:20:00 GMT

Draft minutes published.

Issue #2132 closed #closed-2132

12 Aug at 16:16:40 GMT

Error handling in and/or expressions

Issue #2133 closed #closed-2133

12 Aug at 16:16:39 GMT

2132 error handling in logical expressions

See 4417 more statuses in yearly archives.