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 #2666: 2661 Add content-key option for fn:element-to-map

Pull request #2666 by michaelhkay.

Fix #2661 Provides an option to `element-to-map()` to replace the string "#content" with one of the user's choosing.

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

PR #2662: 2659 bin:count-ones, bin:rotate, bin:is-bit-set, bin:sets-bits

Pull request #2662 by ChristianGruen.

Closes #2659 I have added three other trivials functions for operations that are cumbersome and inefficient to formulate in XPath: `bin:rotate`, `bin:is-bit-set`, `bin:sets-bits`.

Changed files
  • specifications/EXPath/binary/src/binary-functions.xml
  • specifications/EXPath/binary/src/function-catalog.xml

PR #2658: 2655b matching segments empty

Pull request #2658 by michaelhkay.

Fix #2655 Changes the effect of `fn:matching-segments((), "regex")` Revision of PR #2657, reverts a commit from a different branch.

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

PR #2656: 2651 Use termdefs for range variables

Pull request #2656 by michaelhkay.

Fix #2651 Adds termdefs for many of the terms used in explaining FLWOR expressions and For expressions. It's complicated by the fact that the term IDs have to be unique both in the single-source document and in the generated documents, which is why it wasn't done before.

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

PR #2654: 2652 Clarify lax validation

Pull request #2654 by michaelhkay.

Clarifies the effect of lax validation, especially (a) when no schema has been imported, and (b) when the processor is not schema-aware.

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

PR #2646: 2642 Add compiled-regex attribute to xsl:analyze-string

Pull request #2646 by michaelhkay.

Fix #2642

Changed files
  • specifications/xslt-40/src/element-catalog.xml
  • specifications/xslt-40/src/schema-for-xslt40.rnc
  • specifications/xslt-40/src/schema-for-xslt40.xsd
  • specifications/xslt-40/src/xslt.xml

PR #2645: 2565 Absent-vs-Empty fields in dateTime-record

Pull request #2645 by michaelhkay.

PR #2566 clarified and expanded the rules for records and record types; one of the effects is that in a record, all fields are present, but may be empty. This resolves the issues raised in issue #2565 concerning absent-vs-empty fields in a dateTime-record. This PR changes the description of the build-dateTime and parts-of-dateTime functions to reflect these changes. Fix #2565

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

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 #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 #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