@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 174 draft minutes #minutes-07-28
Draft minutes published.
Issue #2695 closed #closed-2695
XSLT: apply-templates with maps, arrays, and JNodes
Issue #2696 closed #closed-2696
2695 Apply templates to maps, arrays, and JNodes
Issue #2733 closed #closed-2733
A step too far: path expressions involving JNodes
Issue #2734 closed #closed-2734
2733 A step too far
Issue #2738 closed #closed-2738
XSLT Concepts: "tree", "document"
Issue #2739 closed #closed-2739
2738 XSLT - tree terminology
Issue #2777 closed #closed-2777
2644 Extend casts to sequences, arrays, maps, and records
Issue #2644 closed #closed-2644
Coercing a map to a record type
Issue #2773 closed #closed-2773
ambiguous wording should be tightened up a tad
Issue #2803 closed #closed-2803
2773 fn:hash: wording
Issue #2790 closed #closed-2790
Truncation of fill string in fn:pad-string()
Issue #2792 closed #closed-2792
2790 fn:pad-string, truncation
Issue #2780 closed #closed-2780
Comments on 'Functions on CSV Data' in XPath and XQuery Functions and Operators 4.0
Issue #2804 closed #closed-2804
2780 Functions on CSV Data: comments
Pull request #2817 created #created-2817
2816 Advice for representing whitespace serialization params
Fix #2816
Issue #2816 created #created-2816
Add advice on use of indent-unit and newline serialization parameters
Where the new indent-unit and newline serialization parameters are specified as XML attributes, specifically in XSLT xsl:output or xsl:result-document or in a serialization parameter file, we should warn people of the dangers posed by XML attribute value normalization, and advise the use of XML character references such as newline="
" or the escape form newline="\r\n".
Issue #1234 closed #closed-1234
Serialization Parameters: Indentation, Whitespace, Newlines
Issue #2719 closed #closed-2719
1234 Serialization Parameters: Indentation, Whitespace, Newlines
QT4 CG meeting 174 draft agenda #agenda-07-28
Draft agenda published.
Pull request #2815 created #created-2815
2567 Extended and restricted record types
Fix #2567
Needs finalizing when #2787 is agreed.
Pull request #2814 created #created-2814
2393 array:members and array:of-members using JNodes
Fix #2351 Fix #2393
Changes the array:members() and array:of-members() functions to use JNodes to represent array members rather than using value records.
Generalizes the jtree() function so it can wrap any value as a JNode, not only a map or array -- useful when constructing the input to array:of-members.
Makes corresponding changes to XSLT examples. This is generally a simplification because xsl:array and xsl:array-members already use JNodes for this purpose.
Satisfies action QT4CG-167-05
Issue #2810 closed #closed-2810
fn:parse-uri examples still expect sparse maps after #2566 record semantics
Issue #2813 created #created-2813
Clarify xsl:result-document without href?
In the context of XProc, I learned that an xsl:result-document element without any href attribute writes to the principal result port, not the secondary output port. Can the XSLT specification clarify that the body of xsl:result-document without @href becomes a principal result instead of a secondary result?
The definition at https://qt4cg.org/specifications/xslt-40/Overview.html#dt-secondary-result doesn’t address this point.
[Definition: Zero or more secondary results: each secondary result can be any sequence of items (as defined in [XDM 4.0]).] A secondary result is the value returned by evaluating the body of an
xsl:result-documentinstruction.
Also, in https://qt4cg.org/specifications/xslt-40/Overview.html#result-trees the paragraph that begins with “The href attribute is optional.” might be a good place to describe the behavior (not just the URI) if you omit @href.
If you think these clarifications belong in the XProc specification instead of the XSLT specification, that is fine with me. I actually looked in the XProc specification first. Maybe the part of https://spec.xproc.org/3.1/steps/#c.xslt that says “the principal result(s) will appear on output port result while secondary result(s) will appear on output port secondary” can say how you know which results are considered principal vs. secondary.
Pull request #2812 created #created-2812
2811 fn:decode-from-uri: to +, or not to +
Closes #2811
Issue #2811 created #created-2811
fn:decode-from-uri: to +, or not to +
We decided that fn:decode-from-uri should turn a plus character into a space, so that a+b.xml is decoded as a b.xml.
That rule actually comes from HTML form data (as I was noted), not from URIs, so the function does not really do what its name promises. It does not match its own counterpart fn:encode-for-uri either, which writes + as %2B. In addition, it seems to break fn:parse-uri, which reuses the same decoding for path segments.
We could add an option to control the behavior for +, but it may be over the top.
Issue #2810 created #created-2810
fn:parse-uri examples still expect sparse maps after #2566 record semantics
Summary
The generated F&O examples for fn:parse-uri appear to conflict with the current record semantics introduced by qt4cg/qtspecs#2566 and with the dedicated fn:parse-uri tests in qt4tests.
Details
The dedicated test set:
https://github.com/qt4cg/qt4tests/blob/master/fn/parse-uri.xml
expects the result map to contain the complete set of declared fields. Components that are not present in the input URI are represented by fields whose values are empty sequences.
This was updated in:
https://github.com/qt4cg/qt4tests/commit/7df0076630e11b49f94e4a9d7d85ed955a44cf1e
That appears consistent with the record semantics described by https://github.com/qt4cg/qtspecs/pull/2566.
In particular, a record contains all of its declared fields, although the value of a field may be an empty sequence.
However, the generated F&O example tests here still expect sparse maps for fo-test-fn-parse-uri-001 through fo-test-fn-parse-uri-027: fields corresponding to absent URI components are omitted from the expected map.
Thus, an implementation returning the complete record-shaped map passes the dedicated fn:parse-uri tests but fails the generated F&O examples. Returning sparse maps has the opposite result. Satisfying both seems impossible.
Both sets of tests appear to target the current XPath/F&O 4.0 specifications.
Expected resolution
Could the fn:parse-uri examples in the F&O specification, or the mechanism that generates their assertions, be updated so that absent URI components are represented consistently with the record semantics from #2566?
The generated qt4tests/app/fo-spec-examples.xml file says it should not be edited directly, so I believe the correction belongs in qtspecs.
Issue #2809 created #created-2809
fn:deep-equal, debug option
If the debug option is enabled, fn:deep-equal should be treated as nondeterministic function.
Otherwise, debugging may be skipped.
Issue #2808 created #created-2808
strip-space option: fn:doc vs. fn:parse-xml
- The function
fn:dochas the optionstrip-spacewith the enum valuesall,none, andconditional. - The functions
fn:parse-xmlandfn:parse-xml-fragmenthave an option with the same name, but a Boolean value.
Proposal:
- unify on
enum("all", "none", "conditional")for all four (includingfn:doc-available), definingconditionalasnoneforfn:parse-xml(-fragment). - If we prefer to keep different types, we should add an explanatory note.
QT4 CG meeting 173 draft minutes #minutes-07-21
Draft minutes published.
See 5810 more statuses in yearly archives.