QT4 CG Dashboard

These are the open pull requests and current branches. Where possible, a summary of the changes between the pull request or branch and the latest drafts is provided with a DeltaXignia pipeline.

Pull requests in descending order

PR #2638: 2632-6: cross-cutting consistency

Pull request #2638 by ChristianGruen.

ebnf.xml: * missing trailing period on two list items (A* and the right-to-left precedence note) — neighbouring items end with periods * leading space inside <nt def="EnclosedExpr"> EnclosedExprs</nt> * missing space between </code> and "(as in &lt;element/&gt;)" for two direct-element-constructor pattern examples conformance.xml: * EXPath Binary and File library sections used <rfc2119>Must</rfc2119>, <rfc2119>Must not</rfc2119>, <rfc2119>May</rfc2119> with title-case variants; the rest of the file uses the <termref def="must">MUST</termref> / def="mustnot" / def="may" pattern. Normalise the EXPath sections to the termref form * <termref def="must" >MUST</termref> had a stray space before "&gt;" * empty self-closing <termref def="dt-implementation-defined"/> got display text "implementation-defined" to match the surrounding form back-matter.xml: * "statically-known collations" -> "statically known collations" (hyphenless form used by every other occurrence in the corpus) * dynamic-context table: six "<td>None</td>" cells got trailing periods to match the periods used in the other rows * static-context table: one "Must be consistent with ..." cell was missing its trailing period * fn:compare-summary: "fn:atomic-equal" was tagged `<code>`, all surrounding function names use `<function>`; normalise expressions.xml: * termdef term="XPath 1.0 compatibility mode" — collapse the five-space block in the @term attribute (significant when terms are matched as strings) * one doubled space ("XPath 3.1 as a subset") * singleton-focus termdef ended with "</termdef>." — drop the redundant trailing period (sentence already ends inside the termdef) * <termref def="dt-binding-sequence">binding collection</termref> — def and display text disagreed; this is the in-the-for-clause "binding collection" case, so def is now dt-binding-collection (which is the existing termdef) Issue: #2632

Changed files
  • specifications/xquery-40/src/back-matter.xml
  • specifications/xquery-40/src/conformance.xml
  • specifications/xquery-40/src/ebnf.xml
  • specifications/xquery-40/src/expressions.xml

PR #2637: 2632-5: refresh stale 4.0 content

Pull request #2637 by ChristianGruen.

xpath.xml: * customized-paragraph: "XPath version 4.1" -> "4.0" * doc.w3c-prev-designation: was "REC-&doc.shortname;" which expands to "REC-xpath-40" (the current designation); fix to "REC-xpath-31" * Bugzilla-key: "XPath31" -> "XPath40" xquery.xml: * customized-paragraph: still announced "XQuery version 3.1, a fully compatible extension of XQuery 3.0"; update to 4.0 / 3.1 * doc.w3c-prev-designation: as above, fix to "REC-xquery-31" * Bugzilla-key: "XQuery31" -> "XQuery40" * PR-entrance-criteria mentioned "human-readable syntax" and "XML syntax" (the XQueryX flavour). XQueryX is no longer maintained in 4.0 (introduction.xml 98-99); drop the syntax-specific criteria so the paragraph just requires two independent implementations of Minimal Conformance and of each optional feature xpath-backwards-compat.xml: * "In XPath 3.0 all these comparisons are type errors" -> "In XPath 4.0" (parallels the surrounding "not allowed in XPath 4.0" wording) * drop the paragraph about "an XPath 4.0 implementation that provides the static typing feature": the static-typing feature was dropped from 4.0 (conformance.xml 9-11), so this paragraph no longer describes any conforming implementation mime-type.xml: * "specifies the media type for XQuery Version 1.0" -> "XQuery 4.0" * "defines the language XQuery Version 1.0" -> "XQuery 4.0" * allowed `xquery version` literal list: add "4.0" alongside "1.0"/"3.0"/"3.1" Issue: #2632

Changed files
  • specifications/xquery-40/src/mime-type.xml
  • specifications/xquery-40/src/xpath-backwards-compat.xml
  • specifications/xquery-40/src/xpath.xml
  • specifications/xquery-40/src/xquery.xml

PR #2636: 2632-4: logic and semantics

Pull request #2636 by ChristianGruen.

query-prolog.xml: * XQST0098 description: inverted polarity — "the properties identifying marker characters ... do identify distinct values" should be "do not" * module-import termdef: cumulative not alternative ("or" -> "and") in the list of context components imported (in-scope variables, in-scope item types, ...). Same in the "If module A imports module B" paragraph. * "enabling the definitions in the imported namespace" -> "imported schema" (the imported schema has no target namespace at this point) * duplicate sentence "If the system log is in a different location, ..." in the context-value example removed; also "which is collection" -> "is a" * library-module namespace constraint now applies only to *public* variables and functions (private names may be in any namespace since the 2025-04-24 changes — the matching change is already reflected at the specific rules for variables (1318) and functions (1785-1788)) expressions.xml: * attribute axis: "empty unless the context node is an element" -> "empty unless the origin is an element" — matches the rest of the section which speaks of "origin" * forward/reverse axis: mixed "origin" / "context node"; standardised on "origin" (the surrounding paragraphs use that term consistently) * coercion table note: "unless either there is only one node" — drop the stranded "either" * "The subtype relationship is not acyclic" -> "is not antisymmetric" (the following sentences describe an antisymmetry failure, not a cycle) * subtype example: missing parens around the right-hand alternative "document-node(a|b) ⊆ (document-node(a) | document-node(b))", matching the equivalent examples for elements and attributes * element-test examples list: "element(title|heading, xs:string) ⊆ element(*)" was listed twice (lines 7244 and 7247); drop the duplicate * AnyFunctionType: "The keywords function and fn are synonymous" was both in prose (5793) and a note (5818); drop the redundant note * fn:count#1 instance-of example: a stranded note about "fn($x as xs:int, $y as xs:int) as xs:int" referred to a 2-arity signature in a 1-arity example; remove * attribute subtype rule: "attribute(Bn)" -> "attribute(<var>B/n</var>)" matching the surrounding var-style notation * text node constructors: two near-identical notes about constructing zero-length text nodes; keep the more complete one * try/catch: target expression / content expression were used interchangeably for the same thing; standardise on "content expression" (the defined term) errors.xml: * XQST0048 description aligned with the more specific rules: scope is *public* function/variable and item type, not any function/variable back-matter.xml: * numeric comparability list: xs:double was missing from "xs:integer, xs:decimal, or xs:float are mutually comparable"; the next sentence ("both operands are converted to xs:decimal ... sufficient precision for the xs:double value space") only made sense with xs:double included * sort-functions list paragraph: opening "(" never closed before "are ultimately defined ..." * dynamic-context table: - "Current date and time" -> "Current dateTime" (matches the XQuery side and the dt-date-time term) - "Available node collections" -> "Available collections" (matches the XQuery side and the function name "fn:collection") Issue: #2632

Changed files
  • specifications/xquery-40/src/back-matter.xml
  • specifications/xquery-40/src/errors.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xquery-40/src/query-prolog.xml

PR #2635: 2632-3: typos and grammar

Pull request #2635 by ChristianGruen.

expressions.xml: * "Universal Resource Identifier" -> "Uniform" (per RFC 3986) * "an unprefixed name used appearing" -> drop "used" * "ten character" -> "ten characters" (plural) * "These means" -> "This means" * "partial applying" -> "partially applying" * "is `$Z` arguments, is obtained" -> "is `$Z`, is obtained" * "attribute(*, xs:integer)selects" -> add missing space * "type type tests" -> drop doubled "type" * "(//a)[1] selects the a element" -> add "first" * "language design for querying" -> "designed" * "Because the fn:jtree creates" -> "fn:jtree function creates" * "wheras" -> "whereas" * "an sequence" -> "a sequence" * "This is the output of the above function :" -> drop space before colon (3x) * "because it is has no namespace binding" -> drop "is" * "an named item type" -> "a named" * constructor exclusion list: drop the second "and" and align order with the matching list in the cast section * "is it is interpreted" -> drop doubled "is it" * "summarizes the differences between these two operators" -> add colon * "static and dynamic functions calls" -> "function calls" * "arithemetic" -> "arithmetic" * "be the present" -> "be present" * "may also occur XQuery" -> "may also occur in XQuery" * "is is a static error" -> "is a" * "following following expressions" -> drop doubled "following" * "typed defined" -> "types defined" * "union typed declared" -> "union type declared" * "noticably" -> "noticeably" * "its datum not within" -> "its datum is not within" * `xs:positive-integer` -> `xs:positiveInteger` (example head and body) * ChoiceItemType: "it if matches" -> "if it matches" * "an enumerated set of xs:strings" -> "an enumerated set of xs:string values" * "or if unprefixed, the / is interpreted" -> "or, if unprefixed, the name is interpreted" * "A is an singleton enumeration type" -> "a singleton" (term starts with /s/) * missing commas in function list and missing space in "import schemain" * "(see FunctionDeclns.)" -> "(see FunctionDeclns)." * "of the language. without" -> "of the language, without" * stray '"' after </code> in IDREFS example ebnf.xml: * head "Lexical structure" -> "Lexical Structure" * "does not quality" -> "qualify" errors.xml: * "(as defined by the eq operator.)" -> "operator)." (twice) query-prolog.xml: * "Implementions" -> "Implementations" * "variable or functions names" -> "function names" * "an unprefixed name used appearing" -> drop "used" * "another variable in in-scope variables" -> "in the in-scope variables" * "refered" -> "referred" * "in which altitude entry may be absent" -> "the altitude entry" * "and and all options" -> drop doubled "and" * `"fixed",` -> `"fixed"` (drop stray comma, twice) * "It is an static error" -> "a static error" * "Static Base URI property" -> "the Static Base URI property" * "(for example, schema-attribute(xml:space)," -> close the parenthesis * "can not import" -> "cannot import" (three occurrences) * "in / in this section" -> drop the doubled fragment * "may provide mechanism" -> "may provide a mechanism" back-matter.xml: * "( (which adds constructor functions" -> single opening paren * "can returned to" -> "can be returned to" * "Comparisons ... lacking a timezone uses" -> "use" * "in the following sections" -> add trailing period * "if any.)" -> "if any)." (period outside parenthesis) conformance.xml: * "attributes node types" -> "attribute node types" * "a XQuery expression" -> "an XQuery expression" introduction.xml: * "Javascript" -> "JavaScript" Issue: #2632

Changed files
  • specifications/xquery-40/src/back-matter.xml
  • specifications/xquery-40/src/conformance.xml
  • specifications/xquery-40/src/ebnf.xml
  • specifications/xquery-40/src/errors.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xquery-40/src/introduction.xml
  • specifications/xquery-40/src/query-prolog.xml

PR #2634: 2632-2: fix broken examples in expressions.xml

Pull request #2634 by ChristianGruen.

Path expressions: * fn:siblings example: stray closing parenthesis * "##any" example: unbalanced quote and extra "the" SequenceType / records: * "$M instance of map(xs:integer, xs:token))": extra closing paren * t:flatten recursion example: extra closing paren * "declare record t:tree as (...)": drop "as" (not part of record syntax) Sequence example: * "$x = (1 to 5) ! . * 0.1" returning (0, 0.1, 0.2, 0.3, 0.5): both the expression (had stray "$x =") and the claimed result were wrong; fixed to "(1 to 5) ! . * 0.1" yielding (0.1, 0.2, 0.3, 0.4, 0.5) Element / attribute constructors: * five occurrences of doubled "http://http://" in Q{...} URIs * attribute-value normalisation example: claimed "[1 5 6 7 9]" but with the literal " [ " / " ] " in the source the value is "[ 1 5 6 7 9 ]" Computed PI constructor: * `let $target := "audio-output", return ...`: stray comma made the example unparseable despite role="parse-test" FLWOR: * tuple-stream example missing closing parenthesis "($x = (5, 6, 7, 8, 9, 10)" * "for $x at $i in [1 to 3, ...]" with array-member tuple output: requires the "member" keyword (without it the array is a single item) * nested-array example "[[$x+1, $x+2], [[$x+3, $x+4]] ]": extra "[" "]" around the second pair * chess example: "return [$m1, $m2], local:grouped-moves($rest)" placed the recursive call outside the FLWOR (where $rest is not in scope); also fixed the matching prose * JSON-style array literal also corrected * group-by example used $product instead of the bound $p * note about workarounds said "using fn:sort" but used fn:sort-by Maps and arrays: * array lookup paragraph mixed $index and $key * postfix lookup example "$map?name" vs "map?\"name\"": missing leading "$" * let-destructure expansion: three array:get calls were inconsistently 2-arg vs. 3-arg; align with the 2-arg form in the prose definition Window expression: * description "starting with a number divisible by 3" did not match the predicate "$first mod 3 = 2"; reword to "remainder 2 when divided by 3" Other: * group-by "Men's Wear" example: typographic vs. ASCII apostrophe mismatch; prose keeps typographic “Men’s Wear”, both <eg> blocks use ASCII * trailing comma in JSON array example * role="parsetest" -> role="parse-test" on one arrow-operator example * cast example "cast $x as enum(...)" used wrong keyword order * mapping-arrow rewrite used "=>" instead of "=!>"; also wrap U in <var> Issue: #2632

Changed files
  • specifications/xquery-40/src/expressions.xml

PR #2633: 2632-1: fix critical bugs and DTD-validity issues

Pull request #2633 by ChristianGruen.

* ns-local.xml, ns-xquery.xml: undefined entity &spec.ver; -> &xq.spec.ver; * ns-xquery.xml: duplicate xml:id "features"; rename first to "annotations" (already referenced as #id-annotations via xlink:href) * errors.xml XQDY0044: insert missing "if"; fix doubled space in attribute list * errors.xml: second XQST0089 entry was actually XPST0089 (role="xpath"); change spec attribute from "XQ" to "XP" * errors.xml XPTY0117: remove self-referential <errorref> * expressions.xml: dt-is-attrs -> dt-is-elems in the NameTestUnion paragraph * expressions.xml DefaultElementNamespaceDecl: align display text with def * expressions.xml: attribute-test example accidentally used "element(...)" * expressions.xml: occurrence-indicator cardinalities for ?, * were wrong (had "zero or more"/"one or more"; correct: "zero or one"/"zero or more") * expressions.xml: unbalanced parentheses in the /PP and //PP expansions * expressions.xml: FOAR0001 ("division by zero") -> FOAY0001 ("out of bounds") for the array:get out-of-range note; spec also changed from "FO" to "FO40" * ebnf.xml: ElementNodeType <nt> was self-closing without display text * ebnf.xml: TypeTest <nt> display text said "NodeKindTests" (stale name) * ebnf.xml: unclosed parenthesis after "XMLNAMES11" Issue: #2632

Changed files
  • specifications/xquery-40/src/ebnf.xml
  • specifications/xquery-40/src/errors.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xquery-40/src/ns-local.xml
  • specifications/xquery-40/src/ns-xquery.xml

PR #2629: 2619 Change formatting of options parameters

Pull request #2629 by michaelhkay.

Changes the way options parameters are presented. The presentation as a record layout is abandoned, because options can no longer be described as record types (e.g., they are extensible). Field names are no longer followed by a question mark, because all options are optional, and this syntax for record types is being dropped anyway. Fix #2619

Changed files
  • specifications/xpath-functions-40/style/merge-function-specs.xsl

PR #2628: 2617 Duration multiplied or divided by number

Pull request #2628 by michaelhkay.

Fix #2617

Changed files
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.xml
  • specifications/xquery-40/src/expressions.xml

PR #2589: 2587 Streamability of context value expressions

Pull request #2589 by michaelhkay.

Defines streamability rules for new 4.0 constructs impacted by the generalisation of context item to context value. Fix #2587

Changed files
  • specifications/xslt-streaming-40/src/xslt-streaming.xml

PR #2566: 1979 Records with type annotations

Pull request #2566 by michaelhkay.

First cut for review: the PR probably needs further passes before it is ready for acceptance. We introduce the idea of records, being maps that have a type annotation which is a specific record type. A map acquires the type annotation when it is coerced to the record type. A map that has a record type annotation (a "record") throws a type error if map:get() (or a lookup expression) requests a key that is not one of the declared field names for that type. The type error can be raised statically. map:put() applied to a record is constrained to produce a record with the same type annotation. (I've no objection to the "with" operator for this, but that can be done separately.) Optional fields in record types are dropped; in a record, there is no distinction between an absent field and a field whose value is the empty sequence. There is no longer any need for this distinction, and eliminating it simplifies things a lot. (But we will need to decide whether to treat the fields as present or absent when serialising to JSON). Fix #1979 Fix #2537

Changed files
  • specifications/grammar-40/xpath-grammar.xml
  • specifications/image-sources/item-types.xml
  • specifications/xpath-datamodel-40/src/xpath-datamodel.xml
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.xml
  • specifications/xquery-40/src/ebnf.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xquery-40/src/query-prolog.xml
  • specifications/xslt-40/src/element-catalog.xml
  • specifications/xslt-40/src/xslt.xml
  • specifications/xslt-xquery-serialization-40/src/xslt-xquery-serialization.xml

PR #2350: 708 An alternative proposal for generators

Pull request #2350 by michaelhkay.

This proposal has two ingredients (a) a single function generate-sequence() that produces a sequence of states from an initial state and a function that computes one state from the previous state (b) a definition of pipelining (aka lazy evaluation) and (currently incomplete) rules requiring certain operations to have a pipelined implementation.

Changed files
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.xml

PR #2247: 716 Deferred Evaluation in XPath - the f:generator record

Pull request #2247 by dnovatchev.

This PR introduces the notion of deferred evaluation and presents the tool to achieve this - the built-in named record type `f:generator`. - Two major use cases are presented. - The fields of `f:generator` are defined. - All system-provided methods of `f:generator` are defined. - Examples of using each of the methods of `f:generator` are provided. - The formal equivalents of each of the system-provided methods of `f:generator` are provided in a separate appendix. <img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/65d04952-794f-4a81-ae64-c96217a9812d" />

Changed files
  • schema/xsl-query.dtd
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.xml

PR #2160: 2073 data model changes for JNodes and Sequences

Pull request #2160 by michaelhkay.

This is a first draft of a PR, giving the data model changes only, for a change to the JNode model affecting maps and arrays with sequence-valued entries. A sequence of length 2 or more now has children representing the items in the sequence. Although there is still an asymmetry between sequences of length 1 and longer sequences, it is more manageable than i the previous model.

Changed files
  • specifications/xpath-datamodel-40/src/xpath-datamodel.xml

PR #2071: 77c deep update

Pull request #2071 by michaelhkay.

Proposes a new fn:update function that can handle both JNodes and XNodes. (this is a branch on a branch, so I don't know how well the diff'ing will work; but look in F&O for the fn:update function)

Changed files
  • specifications/grammar-40/xpath-grammar.xml
  • specifications/image-sources/item-types.xml
  • specifications/xpath-datamodel-40/src/xpath-datamodel.xml
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xslt-xquery-serialization-40/src/xslt-xquery-serialization.xml

PR #2019: 1776: XSLT template rules for maps and array

Pull request #2019 by michaelhkay.

Currently work In progress, committed so that the draft can be reviewed. Changes in three main areas: - Pattern syntax: patterns such as `?item` and `?parent?item` are defined to match items in a map by their key - Built-in template rules for on-no-match="shallow-copy-all". Revisits the built in template rules for this scenario. - General revision of the processing model for xsl:apply-templates applied to a tree of maps and arrays.

Changed files
  • specifications/grammar-40/xpath-grammar.xml
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xslt-40/src/xslt.xml