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 #2839: 2836 Add fn:location function

Pull request #2839 by michaelhkay.

Fix #2836 Adds a dm:location accessor in the data model and a corresponding fn:location function in F+O; a location is a four-part record containing system id, public id, line number, and column number. Allows maintenance of location information to be requested in fn:doc, fn:parse-xml, etc. Changes the diagnostics returned by xsd-validator to include a location record.

Changed files
  • 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/xslt-40/src/function-catalog.xml

PR #2834: 2830 Clarify the effect of the line-ending serialization parameter

Pull request #2834 by michaelhkay.

Fix #2830 Essentially editorial, though it makes some technical decisions on the interaction of parameters such as `line-ending` and `item-separator` which may be non-obvious.

Changed files
  • specifications/xslt-xquery-serialization-40/src/xslt-xquery-serialization.xml

PR #2833: 2263 New named record types

Pull request #2833 by ChristianGruen.

Closes #2263 Various of the comments in the issue were outdated. Worth discussing: * Do we want record types for parameter types (specifically, `fn:sort-by` and `array:sort-by`)? * Do we want to keep the rule alive that “all built-in record types live in the `fn` namespace”? Otherwise, we could change `fn:array-sort-key-record` to `array:sort-key-record`. * I have skipped `bin:infer-encoding` as I didn’t know how to extend the record infrastructure to the EXPath modules.

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

PR #2829: 2828 File Module: editorial notes

Pull request #2829 by ChristianGruen.

Closes #2828 I added a section for symbolic links as they are referenced throughout the prose.

Changed files
  • specifications/EXPath/file/src/file-functions.xml
  • specifications/EXPath/file/src/function-catalog.xml
  • style/xmlspec-2016.xsl

PR #2826: 2772 Editorial Notes (July 2026 edition)

Pull request #2826 by ChristianGruen.

Closes #2772

Changed files
  • specifications/EXPath/binary/src/function-catalog.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/xpath-functions-40/style/merge-function-specs.xsl
  • specifications/xquery-40/src/expressions.xml
  • specifications/xslt-40/src/function-catalog.xml
  • specifications/xslt-40/src/xslt.xml
  • specifications/xslt-xquery-serialization-40/src/xslt-xquery-serialization.xml

PR #2814: 2393 array:members and array:of-members using JNodes

Pull request #2814 by michaelhkay.

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

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

PR #2805: 2802 Function identity removed

Pull request #2805 by ChristianGruen.

The attempt… which closes #2802 if accepted. Much of the prose is derived from the original version of the spec. I revived the strict type error for `fn:deep-equal($fn1, $fn)`. I believe we shouldn’t re-introduce implementation-dependent behavior; I don’t think it would have enough added value.

Changed files
  • 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

PR #2796: 2352 Trusted execution: clarifications

Pull request #2796 by ChristianGruen.

Closes #2352 The security feature “trusted” controls whether running code is allowed to reach external resources (like files or web documents). The same word trusted was being used for two different things, which was confusing: 1. Who is running: is the code itself trusted? (This one stays unchanged) 2. What a parse may fetch: when reading an XML document, may it also pull in extra linked things like external entities, a DTD, or XInclude content? (I renamed this one to `trust-external`). In addition, I tried to clear up loose ends: 1. It says plainly that “code” is trusted (not “documents”). 2. it adds the missing rule for who is trusted by default: a query you run yourself is trusted; code loaded indirectly (via `fn:load-xquery-module`, etc.) is not. 3. I clarified that untrusted code cannot grant itself access just by setting the option (access needs both trusted code and the option). 4. Cleanups

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

PR #2795: 2338 Nomenclature: node(), gnode(), xnode()

Pull request #2795 by ChristianGruen.

Closes #2338 90% mechanical, but it also includes substantial prose. The editing of the XSLT spec may be incomplete. For example, it still needs to formally state what the `node()` pattern matches now that `node()` means any node.

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

PR #2789: 2787 XQuery changes to merge declare record and declare type

Pull request #2789 by michaelhkay.

Now that "declare type" produces constructor functions, there is no longer any good reason to preserve the overlapping functionality of "declare type" and "declare record". This PR currently makes the XQuery changes to merge these constructs; I intend to make similar changes for XSLT. Along the way, there are some other minor changes: * The definition of Constant now allows the empty sequence, () * The initialiser defining the default value of a field in a record type must be a Constant * The default value for a field is used in coercion from maps to record types as well as in constructor functions * Creating a constructor function for a named type is optional, by explicit request * Constructor functions can be created for a record type even if its field names are not all NCNames * The rule that coercion from maps to record types doesn't allow extraneous fields in the map is now explicit. We seem to have somehow referred to this rule without actually defining it.

Changed files
  • specifications/grammar-40/xpath-grammar.xml
  • specifications/xquery-40/src/expressions.xml
  • specifications/xquery-40/src/query-prolog.xml

PR #2768: 2740 Drop constructor functions from built-in records

Pull request #2768 by ChristianGruen.

This PR drops constructor functions for built-in record types. My rationale: 1. We avoid a bunch of rarely-used functions that would mostly go unnoticed anyway. If keeps the `fn:` namespace clean. 2. We don’t have to deal with a broken argument order (some records list optional fields before required ones). 3. Records can be built with a simple map. If required, coercion is available to turn them into the record. If we want to keep the constructor functions, we should add at least one example how to benefit from them. Closes #2740

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

PR #2760: 2521 URIs: unify handling of fragment identifiers

Pull request #2760 by ChristianGruen.

This PR proposes to treat fragment identifiers identically for `fn:doc`, `fn:unparsed-text`, and `fn:unparsed-binary`. I have added a reference to RFC5147. Closes #2521

Changed files
  • specifications/xpath-functions-40/src/function-catalog.xml
  • specifications/xpath-functions-40/src/xpath-functions.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