@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 146 draft minutes #minutes-12-16
Draft minutes published.
Issue #2329 closed #closed-2329
2327 Rename sequence-join as intersperse
Issue #2283 closed #closed-2283
2276 Relax XSLT rules on Extension Attributes
Issue #2322 closed #closed-2322
Relax the rules for simplified stylesheets
Issue #2323 closed #closed-2323
2322 Generalize simplified stylesheets
Issue #2341 closed #closed-2341
JSON Canonical Serialization
Issue #2342 closed #closed-2342
2341 Canonical JSON serialization
Issue #2282 closed #closed-2282
2278 Add function bin:infer-encoding; simplify bin:decode-string
Issue #2343 closed #closed-2343
format-integer() says nothing about negative numbers
Issue #2346 closed #closed-2346
2343 Add examples of format-integer with negative numbers
Issue #2340 closed #closed-2340
fn:compare: dateTime types, absent components
Issue #2347 closed #closed-2347
2340 Add a note explaining 1972-01-01
Issue #2349 created #created-2349
Revert `array:join`
Due to fn:sequence-join being re-renamed (#2329), I suggest reverting array:join and dropping the $separator parameter.
Pull request #2348 created #created-2348
1011 fn transform improvements
Fix #1011
I dropped the idea of adding options for validating the source document prior to transformation -- it got too complicated.
Pull request #2347 created #created-2347
2340 Add a note explaining 1972-01-01
Explains briefly why 1972-01-01 was chosen
Fix #2340
Pull request #2346 created #created-2346
2343 Add examples of format-integer with negative numbers
Fix #2343
Issue #2309 closed #closed-2309
2299 Allow SimpleMapExpr after ArrowExpr
Pull request #2345 created #created-2345
2299 Expand pipeline to allow arrow expression in path expression
Fix #2299 Supersedes PR #2309
Allow an arrow expression in a path expression (and, by implication, in a simple map expression):
$x => B() / foo ! bar => C() ! baz / quz
This implementation does not change the relative precedence of / and !.
In this implementation we divide UnaryExpr to SignedUnaryExpr (always with a leading unary sign) and UnsignedUnaryExpr (always without a leading unary sign). And the new feature is supported only in the latter case, since in the former case we cannot avoid ambiguity:
- an expression
- aaa => B() / ccc => D()can be parsed both:- as
(- aaa ) => B() / ccc => D() - and as
- ( aaa => B() / ccc ) => D() - because
aaa => B()is the left-hand side operand of/; see also a comment.
- as
Issue #2344 created #created-2344
HTML Serialization: Processing Instructions
I was surprised to find the following rule in the serialiation spec for the html method:
The HTML output method must terminate processing instructions with > rather than ?>. It is a serialization error [err:SERE0015] to use the HTML output method when > appears within a processing instruction in input tree.
I could not find equivalent rules in other HTML specs. For example, the DOM Parsing and Serialization says in 3.2.1.7 XML serializing a ProcessingInstruction node:
Let markup be the concatenation of the following, in the order listed:
Are there specific reasons for omitting the last question mark?
Next, what about whitespace if the value is missing? The test Serialization-xhtml-58 implies that the space character should be discarded if the xhtml output method is used. Does this also apply to html, or is it up to the implementation?
Issue #2343 created #created-2343
format-integer() says nothing about negative numbers
The spec for format-integer says nothing about how to format negative integers. None of the examples are negative. There are test cases that do the obvious thing by prepending a minus sign. But it's not necessarily obvious what the right answer is with a radix other than ten, or with a format such as a or i or w.
I propose that we specify using a leading - regardless of the format and regardless of the radix. If the user wants "minus one" it's easy enough to get it programmatically.
(I was actually looking for a way to force a leading + sign. There's no such mechanism, and I'm not proposing to add it.)
QT4 CG meeting 146 draft agenda #agenda-12-16
Draft agenda published.
Pull request #2342 created #created-2342
2341 Canonical JSON serialization
Expands the rules and notes regarding canonical JSON serialization
Fix #2341
Issue #2341 created #created-2341
JSON Canonical Serialization
Our specification says:
The [serializer] must serialize the normalized sequence according to [[RFC8785]].
RFC8785, however, states that the input to serialization is constrained to conform to I‑JSON [[RFC7493]; we say nothing about how you get from a "normalized sequence" to an I-JSON instance.
And in any case, the JSON output method does not perform sequence normalization, so it's not even clear that there is a normalized sequence to start with. What we actually start with is an arbitrary XDM value.
Many of the answers as to how we get from an arbitrary XDM value to an I-JSON instance are implicit in the introductory section of chapter 9, but extracting the answers requires a lot of reading between the lines.
The main gap in practice is the handling of numerics.
In fact, there's a gap here between the two RFCs. RFC 8785 tells us precisely how to serialize an IEEE 754 (xs:double) value, but I-JSON is a profile of JSON, and therefore represents numbers as a string representation. Neither specification seems to give precise rules for getting from the string representation to the IEEE 754 value. This need not concern us too much, because we're typically starting from an xs:double. But we do need to say what happens if you start with a numeric value other than an xs:double.
Issue #2340 created #created-2340
fn:compare: dateTime types, absent components
The current rules say:
Any absent components, other than the timezone, are substituted with the corresponding components of the (arbitrary)
xs:dateTimevalue1972-01-01T00:00:00to produce an xs:dateTime value.
Was it meant to be the UNIX time 1970-01-01T00:00:00? If it is arbitrary, is there a particular reason that we propose a specific constant in the spec?
Issue #2339 created #created-2339
Default priority of match="element(A|B)"
We don't give a specific rule for the default priority of an element or attribute test containing a NameTestUnion. It therefore defaults to +0.5, which isn't particularly clever as element(A|B) is less specific than element(A).
I think the priority of element(A|B) should be the same as the equivalent pattern element(A) | element(B), namely 0 (zero).
Issue #2216 closed #closed-2216
Make all data types ordered
Issue #2338 created #created-2338
Nomenclature: node(), gnode(), jnode(), xnode()
In the grammar, consider
- changing
node()to mean "any GNode, that is, an XNode or JNode" - dropping the syntax
gnode() - introducing
xnode()to mean "any XNode".
In the specification prose, consider replacing node by XNode throughout (where this is the intended meaning).
Issue #938 closed #closed-938
Canonical serialization
QT4 CG meeting 145 draft minutes #minutes-12-09
Draft minutes published.
Issue #2332 closed #closed-2332
2195 Misc XSLT editorial fixes
See 4804 more statuses in yearly archives.