@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 145 draft minutes #minutes-12-09

09 Dec at 17:25:00 GMT

Draft minutes published.

Issue #2332 closed #closed-2332

09 Dec at 17:10:54 GMT

2195 Misc XSLT editorial fixes

Issue #2330 closed #closed-2330

09 Dec at 17:08:41 GMT

XSLT Pattern Syntax: in ArgumentP, generalize Literal to Constant

Issue #2331 closed #closed-2331

09 Dec at 17:08:40 GMT

2330 In XSLT Patterns, allow Constants rather than Literals

Issue #2326 closed #closed-2326

09 Dec at 17:06:28 GMT

xsl:text/@cdata edge cases and interactions

Issue #2328 closed #closed-2328

09 Dec at 17:06:27 GMT

2326 Expand spec of new `cdata` attribute

Issue #2337 created #created-2337

09 Dec at 12:14:41 GMT
XSLT xsl:mode/@typed attribute

The attribute xsl:mode/@typed needs to be extended (or at least clarified) to explain how non-nodes and JNodes are handled.

Pull request #2336 created #created-2336

08 Dec at 17:58:04 GMT
2334 Revise XSLT pattern syntax and semantics

Fix #2330 Fix #2334 Fix #2336

Currently work-in-progress

This PR changes the syntax and semantics of JNode types, tests, and patterns, bringing them closer into line with each other and with the corresponding constructs for XNodes. It also fixes problems of grammar ambiguity.

JNode types are revised to take the form jnode(selector-value, content-type), mirroring the syntax of element and attribute types, and bringing them into line with JNode patterns. This also enables JNode patterns to be integrated with XNode patterns, using common syntax and semantics.

Subtyping rules for JNode types are added.

When types are used for selection in a JTree, the type must now be a JNode type, not the content type. For example, in place of $array/map(*), you need to write $array/jnode(*, map(*)). While more verbose, this syntax is more consistent with selection in XTrees, and is more powerful. (It also offers potential extensibility to eliminate the get(X) construct).

In XSLT patterns, union/except/intersect now apply only to node patterns (reverting a 4.0 enhancement which caused parsing difficulties). The semantics of except and intersect have also reverted to the 3.0 semantics.

XSLT type patterns are now uniformly written ~ItemType, rather than using the bare item type in some cases (such as record types), and the more verbose syntax type(ItemType) in other cases.

QT4 CG meeting 145 draft agenda #agenda-12-09

08 Dec at 11:00:00 GMT

Draft agenda published.

Issue #2335 created #created-2335

06 Dec at 13:45:55 GMT
Make `jnode()` like `element()`

Is it possible to make the JNodeType form similar to ElementTest and JNodePattern (in XSLT)?

ElementTest has the form:

ElementTest 	::= 	"element" "(" (NameTestUnion ("," TypeName "?"?)?)? ")"
NameTestUnion 	::= 	(NameTest ++ "|")

And JNodePattern currently has the form:

JNodePattern ::="jnode" "(" JNodePatternSelector "," JNodePatternContent ")" Predicate*
JNodePatternSelector 	::= 	"*" | NCName | Constant

But JNodeType has the form:

JNodeType 	::= 	"jnode" "(" SequenceType? ")"

I think, this introduces an inconsistency.

The expected forms are:

JNodePattern ::= JNodeType Predicate*
JNodeType 	::= 	"jnode" "(" (JNodePatternSelector ("," JNodePatternContent )? )? ")"
JNodePatternContent 	::= 	"*" | SequenceType

Probably, JNodePatternContent is not needed, since JNodePattern jnode() should be equal to jnode(*,*) in the current spec. Then, SequenceType should be used instead of JNodePatternContent in JNodeType:

JNodePattern ::= JNodeType Predicate*
JNodeType 	::= 	"jnode" "(" (JNodePatternSelector ("," SequenceType )? )? ")"

This form is not only more consistent, but also it provides a more concise way to select GNodes by matching both their selector property and their jnode() type:

  • $g / jnode( foo ) will be equivalent to $g / foo [ self::jnode() ]
  • $g / jnode( foo, xs:integer ) will be equivalent to $g / foo [ self::jnode() ][ jnode-content() instance of xs:integer ]
  • $g / jnode( *, xs:integer ) will be equivalent to $g / jnode() [ jnode-content() instance of xs:integer ]

Probably, JNodePatternSelector can be changed to JNodeSelectorUnion to support unions like NameTestUnion in ElementTest:

JNodeType 	::= 	"jnode" "(" (JNodeSelectorUnion ("," SequenceType )? )? ")"
JNodeSelectorUnion ::= JNodeSelector ++ "|"
JNodeSelector ::= "*" | NCName | Constant

Side note: It appears that despite of the name ElementTest, an expression of the ElementTest production represents a type, the same as JNodeType.


This topic was also discussed a bit in #2099 (comment), and the analogy was mentioned in #2150: "An analogy with element(N, T) might suggest match="jnode(K, V)" where K constrains the selector property of the JNode, and V constrains its content property".

Issue #2334 created #created-2334

05 Dec at 18:47:36 GMT
XSLT: Parenthesized subexpressions within Patterns

We seem to have a problem with parenthesized subexpressions / sub patterns within a pattern.

We have an extra-grammatical rule:

The content of any ParenthesizedPattern within an XNodePattern that contains a / or // operator (other than within a predicate) must itself parse as an XNodePattern.

This appears to rule out parenthesized sub-expressions that contain both a "/" and a "|" operator, for example a/(b/@x | c/@x)

The rule is obviously pretty bizarre, and the reason we have it is so that any XNodePattern is a syntactically valid XPath expression, which ensures that we can define the semantics of the pattern in terms of the semantics of XPath expressions.

Ideally we would have different productions for a parenthesised pattern at the top level, and a parenthesised expression within an XNodePattern, but we know that leads to ambiguities (or at any rate, a need for unbounded lookahead). But the current rule isn't an adequate solution.

Issue #2333 closed #closed-2333

05 Dec at 00:08:18 GMT

Data Model: `dm:empty-sequence` signature

Issue #2333 created #created-2333

04 Dec at 23:02:24 GMT
Data Model: `dm:empty-sequence` signature

In XQuery and XPath Data Model 4.0, the section 3.2.1 empty-sequence Constructor defines dm:empty-sequence() as:

  • dm:empty-sequence() as item()*
    The dm:empty-sequence constructor returns a sequence containing no items.

Why is the return type specified as item()* and not empty-sequence()? Is this an oversight or intentional?

Note that 4.2 Type System mentions a sequence of exactly zero items (emphasis mine):

  • [Definition: A sequence type constrains the set of permitted sequences, by defining the permitted item types and the permitted number of items in the sequence (exactly zero, exactly one, zero-or-more, one-or-more, zero-or-one).]

Pull request #2332 created #created-2332

04 Dec at 19:00:43 GMT
2195 Misc XSLT editorial fixes

Addresses issues raised in issue #2195

Pull request #2331 created #created-2331

04 Dec at 12:32:21 GMT
2330 In XSLT Patterns, allow Constants rather than Literals

Fix #2330

Issue #2330 created #created-2330

04 Dec at 11:53:38 GMT
XSLT Pattern Syntax: in ArgumentP, generalize Literal to Constant

In the XSLT pattern syntax, an ArgumentP is constrained to be either a variable reference or a Literal.

Elsewhere in the pattern syntax, we allow a Constant rather than a Literal. A Constant additionally allows (a) a negative number, and (b) true() and false().

ArgumentP is used where the pattern starts with a function call, which must be one of doc(), id(), element-with-id(), key(), or root(). Of these only key() can take a non-string argument, and it's unlikely that booleans or negative numbers will be useful very often, but it's worth making the change in the interests of consistency.

Pull request #2329 created #created-2329

03 Dec at 23:45:02 GMT
2327 Rename sequence-join as intersperse

Reverts the function to its original name.

The name sequence-join seems to be based on a false analogy with string-join (which joins multiple strings with an optional separator) and array-join (which joins multiple arrays with an optional separator). The sequence-join function is quite different, it does not join multiple sequences. The name intersperse far better describes what the function actually does.

Pull request #2328 created #created-2328

03 Dec at 20:35:51 GMT
2326 Expand spec of new `cdata` attribute

Fix #2326

Issue #2288 closed #closed-2288

03 Dec at 17:00:06 GMT

XSLT implicit document nodes

Issue #2327 created #created-2327

02 Dec at 23:08:33 GMT
Name of sequence-join() function

I had some trouble finding the sequence-join function because I couldn't remember what we ended up callling it.

The name seems very poorly chosen for a function that doesn't join sequences. It was chosen, I'm sure, by analogy with string-join(), but whereas string-join does actually join multiple strings, and array-join joins multiple arrays, sequence-join does not join multiple sequences. The old name intersperse seems better.

That's assuming we need the function at all -- it seems of fairly modest value.

Issue #2326 created #created-2326

02 Dec at 20:49:53 GMT
xsl:text/@cdata edge cases and interactions

During review of the CDATA proposal today it was suggested that we should offer some rules or at least guidance on the interaction of xsl:text/@cdata with other features:

  • Sequence normalization (esp merging of adjacent text nodes)
  • cdata-section-elements
  • Unicode normalisation
  • character maps

QT4 CG meeting 144 draft minutes #minutes-12-02

02 Dec at 17:15:00 GMT

Draft minutes published.

Issue #2256 closed #closed-2256

02 Dec at 17:08:16 GMT

2216 All atomic types become ordered

Issue #2301 closed #closed-2301

02 Dec at 17:06:12 GMT

2198 Add cdata attribute to xsl:text and xsl:value-of

Issue #2280 closed #closed-2280

02 Dec at 17:04:10 GMT

Usability problems with xsl:array-member

Issue #2281 closed #closed-2281

02 Dec at 17:04:09 GMT

2280 Usability of xsl:array-member

Issue #2311 closed #closed-2311

02 Dec at 17:02:04 GMT

XSLT default priorities for patterns

Issue #2319 closed #closed-2319

02 Dec at 17:02:03 GMT

2311 Change default XSLT pattern priorities

Issue #2317 closed #closed-2317

02 Dec at 16:59:57 GMT

Arguments of fn:civil-timezone

Issue #2318 closed #closed-2318

02 Dec at 16:59:56 GMT

2317 Correct signature of fn:civil-timezone

See 4776 more statuses in yearly archives.