Merge
authorabraaksm
Sat, 22 Dec 2018 23:49:44 +0100
changeset 1942 f6973ae9b007
parent 1941 e6067b6d1829 (current diff)
parent 1932 55dbc0cb3887 (diff)
child 1943 7759ae3ffc15
Merge
--- a/admin/report-changes-since-xslt2.xml	Sat Dec 22 23:46:54 2018 +0100
+++ b/admin/report-changes-since-xslt2.xml	Sat Dec 22 23:49:44 2018 +0100
@@ -1,718 +1,2034 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<report xmlns="http://www.w3.org/2012/10/xslt-test-catalog" xmlns:xt="http://xt3report.com/functions">
-   <overview total-tests-in-xt3="10633">
-      <xslt3-specific count="4413"/>
-      <xslt2-specific count="3418"/>
-      <xslt-other count="2802"/>
+<report xmlns:xt="http://xt3report.com/functions"
+        xmlns="http://www.w3.org/2012/10/xslt-test-catalog">
+   <overview total-tests-in-xt3="12342">
+      <xslt3-specific count="4980"/>
+      <xslt2-specific count="4456"/>
+      <xslt-other count="2906"/>
    </overview>
    <changes-since-xslt2>
-      <feature name="Packages" count="78"/>
-      <feature name="Packages - versioning" count="15"/>
-      <feature name="Packages - package" count="8"/>
-      <feature name="Packages - use-package" count="30"/>
-      <feature name="Packages - override" count="40"/>
-      <feature name="Packages - xquery" count="unknown"/>
-      <feature name="Streaming" count="2881"/>
-      <feature name="Streaming - instructions" count="653"/>
-      <feature name="Streaming - functions" count="661"/>
-      <feature name="Streaming - expressions" count="645"/>
-      <feature name="Streaming - posture and sweep" count="919"/>
-      <feature name="Streaming - other" count="3"/>
-      <feature name="Accumulators" count="44"/>
-      <feature name="Mode declarations" count="69"/>
-      <feature name="Import declaration order relaxation" count="3"/>
-      <feature name="Context item declaration" count="28"/>
-      <feature name="Global context item declaration" count="3"/>
-      <feature name="Try / catch" count="27"/>
-      <feature name="Try / catch - rollback-output" count="2"/>
-      <feature name="Iteration (xsl:iterate)" count="34"/>
-      <feature name="Dynamic evaluation (xsl:evaluate)" count="43"/>
-      <feature name="Assertions (xsl:assert)" count="6"/>
-      <feature name="Merging (xsl:merge, incl strm)" count="70"/>
-      <feature name="Conditional content construction (all)" count="118"/>
-      <feature name="Conditional content construction - conditional-content" count="70"/>
-      <feature name="Conditional content construction - on-empty" count="38"/>
-      <feature name="Conditional content construction - on-non-empty" count="10"/>
-      <feature name="Enhancements to analyze-string" count="8"/>
-      <feature name="Value-of enhancement (empty)" count="0"/>
-      <feature name="Number (xsl:number format-number) enhancements" count="10"/>
-      <feature name="Declared modes" count="0"/>
-      <feature name="Decimal format with exponent-separator" count="0"/>
-      <feature name="Composite keys in for-each-group" count="15"/>
-      <feature name="Composite keys in keys" count="2"/>
-      <feature name="Select attribute on copy instruction" count="30"/>
-      <feature name="Static variables and parameters" count="37"/>
-      <feature name="Cache, override, identity attributes on function declaration" count="28"/>
-      <feature name="Shadow attributes" count="7"/>
-      <feature name="Use-when enhancements" count="16"/>
-      <feature name="Error-code attribute on message" count="8"/>
-      <feature name="Html-version attribute on xsl:output/result-document (HTML5 support)" count="30"/>
-      <feature name="Item-separator attribute on xsl:output/result-document" count="0"/>
-      <feature name="Parameter-document attribute on xsl:output/result-document" count="0"/>
-      <feature name="Suppress-indentation attribute on xsl:output/result-document" count="128"/>
-      <feature name="Disable-output-escaping silently ignored" count="2"/>
-      <feature name="Enhancements on typed=lax for non-validating processors" count="unknown"/>
-      <feature name="Initial function" count="5"/>
-      <feature name="Initial template (xsl:initial-template)" count="3"/>
-      <feature name="Initial mode" count="1"/>
-      <feature name="Higher order functions" count="70"/>
-      <feature name="New function current-output-uri" count="5"/>
-      <feature name="New function collation-key" count="0"/>
-      <feature name="New function copy-of" count="22"/>
-      <feature name="New function json-to-xml" count="52"/>
-      <feature name="New function snapshot" count="33"/>
-      <feature name="New function stream-available" count="5"/>
-      <feature name="New function xml-to-json" count="28"/>
-      <feature name="Enhancements on function deep-equal (maps support)" count="0"/>
-      <feature name="Enhancements on function document (new error)" count="0"/>
-      <feature name="Enhancements on function format-number (moved, but new formats)" count="2"/>
-      <feature name="Enhancements on function key (composite keys)" count="2"/>
-      <feature name="Enhancements on function type-available (XSD 1.1)" count="1"/>
-      <feature name="Enhancements on function system-property (new properties)" count="4"/>
-      <feature name="Enhancements on function unparsed-entity-uri (arity zero)" count="0"/>
-      <feature name="Enhancements on function unparsed-entity-public-id (arity zero)" count="0"/>
-      <feature name="Maps" count="36"/>
-      <feature name="Maps - function contains" count="1"/>
-      <feature name="Maps - function entry" count="0"/>
-      <feature name="Maps - function get" count="2"/>
-      <feature name="Maps - function for-each" count="0"/>
-      <feature name="Maps - function keys" count="4"/>
-      <feature name="Maps - function merge" count="5"/>
-      <feature name="Maps - function put" count="2"/>
-      <feature name="Maps - function remove" count="0"/>
-      <feature name="Maps - function size" count="2"/>
-      <feature name="Expand text, text value templates" count="29"/>
-      <feature name="Pattern enhancements" count="66"/>
-      <feature name="EQName adoption" count="23"/>
-      <feature name="JSON support (total)" count="80"/>
-      <feature name="Default collation enhancements (allowed on any element)" count="0"/>
-      <feature name="Backwards compatibility (XSLT 3.0 to 2.0)" count="1"/>
-      <feature name="New error conditions and codes" count="149"/>
-      <feature name="Recoverable errors do not exist anymore" count="unknown/todo"/>
-      <feature name="Enhancements to serialization (all)" count="128"/>
-      <feature name="Type attribute validation with complex types and copy/copy-of (XTTE1535)" count="unknown"/>
-      <feature name="XSD 1.1 types" count="unknown"/>
+      <feature group="Packages" name="Packages - versioning" count="15"/>
+      <feature group="Packages" name="Packages - package" count="42"/>
+      <feature group="Packages" name="Packages - use-package" count="30"/>
+      <feature group="Packages" name="Packages - override" count="60"/>
+      <feature group="Packages" name="Packages - xquery" count="unknown"/>
+      <feature group="Streaming" name="Streaming - instructions" count="746"/>
+      <feature group="Streaming" name="Streaming - functions" count="668"/>
+      <feature group="Streaming" name="Streaming - expressions" count="656"/>
+      <feature group="Streaming" name="Streaming - posture and sweep" count="919"/>
+      <feature group="Streaming" name="Streaming - other" count="3"/>
+      <feature group="Declarations" name="Accumulators" count="53"/>
+      <feature group="Declarations" name="Mode declarations" count="105"/>
+      <feature group="Declarations"
+               name="Import declaration order relaxation"
+               count="3"/>
+      <feature group="Declarations" name="Context item declaration" count="28"/>
+      <feature group="Declarations"
+               name="Global context item declaration"
+               count="3"/>
+      <feature group="Instructions" name="Try / catch" count="31"/>
+      <feature group="Instructions" name="Try / catch - rollback-output" count="2"/>
+      <feature group="Instructions" name="Iteration (xsl:iterate)" count="34"/>
+      <feature group="Instructions"
+               name="Dynamic evaluation (xsl:evaluate)"
+               count="45"/>
+      <feature group="Instructions" name="Assertions (xsl:assert)" count="9"/>
+      <feature group="Instructions"
+               name="Merging (xsl:merge, incl strm)"
+               count="86"/>
+      <feature group="Instructions"
+               name="Conditional content construction (all)"
+               count="124"/>
+      <feature group="Instructions"
+               name="Conditional content construction - conditional-content"
+               count="70"/>
+      <feature group="Instructions"
+               name="Conditional content construction - on-empty"
+               count="40"/>
+      <feature group="Instructions"
+               name="Conditional content construction - on-non-empty"
+               count="14"/>
+      <feature group="Instructions"
+               name="Enhancements to analyze-string"
+               count="8"/>
+      <feature group="Instructions" name="Value-of enhancement (empty)" count="0"/>
+      <feature group="Instructions"
+               name="Number (xsl:number format-number) enhancements"
+               count="12"/>
+      <feature group="Attributes" name="Declared modes" count="14"/>
+      <feature group="Attributes"
+               name="Decimal format with exponent-separator"
+               count="0"/>
+      <feature group="Attributes"
+               name="Composite keys in for-each-group"
+               count="15"/>
+      <feature group="Attributes" name="Composite keys in keys" count="2"/>
+      <feature group="Attributes"
+               name="Select attribute on copy instruction"
+               count="31"/>
+      <feature group="Attributes"
+               name="Static variables and parameters"
+               count="37"/>
+      <feature group="Attributes"
+               name="Cache, override, identity attributes on function declaration"
+               count="38"/>
+      <feature group="Attributes" name="Shadow attributes" count="7"/>
+      <feature group="Attributes" name="Use-when enhancements" count="19"/>
+      <feature group="Attributes"
+               name="Error-code attribute on message"
+               count="10"/>
+      <feature group="Attributes"
+               name="Html-version attribute on xsl:output/result-document (HTML5 support)"
+               count="30"/>
+      <feature group="Attributes"
+               name="Item-separator attribute on xsl:output/result-document"
+               count="0"/>
+      <feature group="Attributes"
+               name="Parameter-document attribute on xsl:output/result-document"
+               count="0"/>
+      <feature group="Attributes"
+               name="Suppress-indentation attribute on xsl:output/result-document"
+               count="133"/>
+      <feature group="Attributes"
+               name="Disable-output-escaping silently ignored"
+               count="2"/>
+      <feature group="Attributes"
+               name="Enhancements on typed=lax for non-validating processors"
+               count="unknown"/>
+      <feature group="Stylesheet initialization" name="Initial function" count="6"/>
+      <feature group="Stylesheet initialization"
+               name="Initial template (xsl:initial-template)"
+               count="3"/>
+      <feature group="Stylesheet initialization" name="Initial mode" count="1"/>
+      <feature group="Functions" name="Higher order functions" count="70"/>
+      <feature group="Functions" name="New function current-output-uri" count="5"/>
+      <feature group="Functions" name="New function collation-key" count="0"/>
+      <feature group="Functions" name="New function copy-of" count="23"/>
+      <feature group="Functions" name="New function json-to-xml" count="55"/>
+      <feature group="Functions" name="New function snapshot" count="41"/>
+      <feature group="Functions" name="New function stream-available" count="6"/>
+      <feature group="Functions" name="New function xml-to-json" count="28"/>
+      <feature group="Functions"
+               name="Enhancements on function deep-equal (maps support)"
+               count="0"/>
+      <feature group="Functions"
+               name="Enhancements on function document (new error)"
+               count="0"/>
+      <feature group="Functions"
+               name="Enhancements on function format-number (moved, but new formats)"
+               count="4"/>
+      <feature group="Functions"
+               name="Enhancements on function key (composite keys)"
+               count="2"/>
+      <feature group="Functions"
+               name="Enhancements on function type-available (XSD 1.1)"
+               count="1"/>
+      <feature group="Functions"
+               name="Enhancements on function system-property (new properties)"
+               count="173"/>
+      <feature group="Functions"
+               name="Enhancements on function unparsed-entity-uri (arity zero)"
+               count="0"/>
+      <feature group="Functions"
+               name="Enhancements on function unparsed-entity-public-id (arity zero)"
+               count="0"/>
+      <feature group="Maps" name="Maps - function contains" count="1"/>
+      <feature group="Maps" name="Maps - function entry" count="0"/>
+      <feature group="Maps" name="Maps - function get" count="2"/>
+      <feature group="Maps" name="Maps - function for-each" count="0"/>
+      <feature group="Maps" name="Maps - function keys" count="4"/>
+      <feature group="Maps" name="Maps - function merge" count="5"/>
+      <feature group="Maps" name="Maps - function put" count="2"/>
+      <feature group="Maps" name="Maps - function remove" count="0"/>
+      <feature group="Maps" name="Maps - function size" count="2"/>
+      <feature group="Maps" name="Maps - expressions / other" count="36"/>
+      <feature group="Other" name="Expand text, text value templates" count="32"/>
+      <feature group="Other" name="Pattern enhancements" count="67"/>
+      <feature group="Other" name="EQName adoption" count="23"/>
+      <feature group="Other" name="JSON support (total)" count="83"/>
+      <feature group="Other"
+               name="Default collation enhancements (allowed on any element)"
+               count="0"/>
+      <feature group="Other"
+               name="Backwards compatibility (XSLT 3.0 to 2.0)"
+               count="1"/>
+      <feature group="Other" name="New error conditions and codes" count="153"/>
+      <feature group="Other"
+               name="Recoverable errors do not exist anymore"
+               count="unknown"/>
+      <feature group="Other"
+               name="Enhancements to serialization (all)"
+               count="133"/>
+      <feature group="Other"
+               name="Type attribute validation with complex types and copy/copy-of (XTTE1535)"
+               count="unknown"/>
+      <feature group="Other" name="XSD 1.1 types" count="unknown"/>
    </changes-since-xslt2>
    <category name="Attributes">
-      <overview total-tests-in-category="1193">
-         <xslt3-specific count="357"/>
-         <xslt2-specific count="663"/>
-         <xslt-other count="173"/>
+      <overview total-tests-in-category="1275">
+         <xslt3-specific count="417"/>
+         <xslt2-specific count="684"/>
+         <xslt-other count="174"/>
       </overview>
       <test-set total-tests="194" name="as" description="Tests as">
          <xslt3-specific count="0"/>
          <xslt2-specific count="194"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="instance-of" count="5"/>
+            <key name="empty-sequence" count="29"/>
+            <key name="xs:string" count="6"/>
+            <key name="SequenceType" count="4"/>
+            <key name="xs:double" count="9"/>
+            <key name="xs:boolean" count="1"/>
+            <key name="xs:dayTimeDuration" count="5"/>
+            <key name="xs:date" count="1"/>
+            <key name="xsl:function" count="11"/>
+            <key name="xs:untypedAtomic" count="20"/>
+            <key name="text-conversion" count="1"/>
+            <key name="AtomicOrUnionType" count="100"/>
+            <key name="xs:anyAtomicType" count="11"/>
+            <key name="buildin-datatypes" count="20"/>
+            <key name="conversion" count="9"/>
+            <key name="mixed-sequence" count="6"/>
+            <key name="OccurrenceIndicator" count="59"/>
+            <key name="sequence" count="1"/>
+            <key name="buildin-types" count="13"/>
+            <key name="conversion-to-self" count="21"/>
+            <key name="xsl:value-of" count="6"/>
+            <key name="type-promotion" count="7"/>
+            <key name="xs:float" count="5"/>
+            <key name="xs:decimal" count="4"/>
+            <key name="xs:integer" count="5"/>
+            <key name="xs:anyUri" count="1"/>
+            <key name="subtype-substitution" count="2"/>
+            <key name="xs:duration" count="1"/>
+            <key name="xs:yearMonthDuration" count="1"/>
+            <key name="lre-promotion" count="8"/>
+            <key name="xs:anyURI" count="7"/>
+            <key name="xsl:document" count="4"/>
+            <key name="DocumentTest" count="8"/>
+            <key name="xsl:element" count="9"/>
+            <key name="ElementTest" count="43"/>
+            <key name="lre" count="13"/>
+            <key name="xs:untyped" count="5"/>
+            <key name="ElementName" count="28"/>
+            <key name="TypeName" count="34"/>
+            <key name="xsl:attribute" count="7"/>
+            <key name="AttributeTest" count="16"/>
+            <key name="ElementNameOrWildcard" count="8"/>
+            <key name="AttributeName" count="8"/>
+            <key name="AttributeNameOrWildcard" count="5"/>
+            <key name="xsl:variable" count="51"/>
+            <key name="ItemTest" count="8"/>
+            <key name="xsl:template" count="24"/>
+            <key name="xs:long" count="12"/>
+            <key name="xs:int" count="14"/>
+            <key name="xs:unsignedByte" count="11"/>
+            <key name="xs:NMTOKEN" count="18"/>
+            <key name="xs:ID" count="14"/>
+            <key name="xs:nonPositiveInteger" count="11"/>
+            <key name="user-defined-atomic-type" count="23"/>
+            <key name="xsl:import-schema" count="40"/>
+            <key name="xsl:with-param" count="8"/>
+            <key name="tunnel-parameter" count="11"/>
+            <key name="attribute-axis" count="10"/>
+            <key name="child-select-expression" count="13"/>
+            <key name="xs:QName" count="1"/>
+            <key name="xsl:apply-templates" count="4"/>
+            <key name="xsl:sequence" count="3"/>
+            <key name="AnyKindTest" count="2"/>
+            <key name="all-node-kinds" count="2"/>
+            <key name="CommentTest" count="2"/>
+            <key name="TextTest" count="2"/>
+            <key name="PITest" count="2"/>
+            <key name="NodeTest" count="1"/>
+            <key name="xsl:processing-instruction" count="1"/>
+            <key name="xsl:comment" count="1"/>
+            <key name="xsl:text" count="1"/>
+            <key name="select-expression" count="35"/>
+            <key name="xsl:param" count="9"/>
+            <key name="document-node" count="3"/>
+            <key name="unspecified" count="6"/>
+            <key name="non-tunnel" count="4"/>
+            <key name="XTSE0090" count="1"/>
+            <key name="xsl:call-template" count="1"/>
+            <key name="XTTE0505" count="1"/>
+            <key name="to-xs:anyAtomicType" count="1"/>
+            <key name="to-xs:untypedAtomic" count="3"/>
+            <key name="to-xs:double" count="1"/>
+            <key name="to-xs:float" count="1"/>
+            <key name="to-xs:token" count="2"/>
+            <key name="to-xs:normalizedString" count="1"/>
+            <key name="SchemaAttributeTest" count="3"/>
+            <key name="AttributeDeclaration" count="1"/>
+            <key name="xsl:type" count="14"/>
+            <key name="strict-validation" count="15"/>
+            <key name="xs:token" count="4"/>
+            <key name="xs:nonNegativeInteger" count="1"/>
+            <key name="xs:byte" count="2"/>
+            <key name="xs:language" count="1"/>
+            <key name="xs:negativeInteger" count="1"/>
+            <key name="xs:Name" count="3"/>
+            <key name="preserve-validation" count="1"/>
+            <key name="SchemaElementTest" count="6"/>
+            <key name="xs:NMTOKENS" count="4"/>
+            <key name="complex-type" count="3"/>
+            <key name="user-defined-union-type" count="12"/>
+            <key name="xs:NOTATION" count="1"/>
+            <key name="xs:ENTITIES" count="1"/>
+            <key name="xs:IDREFS" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="32" name="avt" description="Tests Attribute Value Templates">
+      <test-set total-tests="32"
+                name="avt"
+                description="Tests Attribute Value Templates">
          <xslt3-specific count="0"/>
          <xslt2-specific count="18"/>
          <xslt-other count="14"/>
+         <keywords use-when="false()">
+            <key name="mixed-sequence" count="1"/>
+            <key name="literals" count="5"/>
+            <key name="select-expression" count="17"/>
+            <key name="lre" count="21"/>
+            <key name="xsl:variable" count="1"/>
+            <key name="temporary-tree" count="1"/>
+            <key name="sequence" count="5"/>
+            <key name="numeric-literals" count="3"/>
+            <key name="xsl:attribute" count="2"/>
+            <key name="separator-attribute" count="2"/>
+            <key name="mixed-avt" count="11"/>
+            <key name="xsl:value-of" count="1"/>
+            <key name="xsl:namespace" count="1"/>
+            <key name="variable-reference" count="10"/>
+            <key name="xsl:for-each-group" count="1"/>
+            <key name="collation-attribute" count="2"/>
+            <key name="xsl:analyze-string" count="2"/>
+            <key name="regex-attribute" count="2"/>
+            <key name="flags-attribute" count="1"/>
+            <key name="xsl:message" count="1"/>
+            <key name="terminate-attribute" count="1"/>
+            <key name="xsl:number" count="1"/>
+            <key name="lang-attribute" count="2"/>
+            <key name="letter-value-attribute" count="1"/>
+            <key name="ordinal-attribute" count="1"/>
+            <key name="xsl:sort" count="2"/>
+            <key name="order-attribute" count="1"/>
+            <key name="stable-attribute" count="1"/>
+            <key name="xpath-comments" count="1"/>
+            <key name="empty-sequence" count="3"/>
+            <key name="backwards-compatibility-mode" count="1"/>
+            <key name="text-node" count="1"/>
+            <key name="xsl:function" count="1"/>
+            <key name="escaped-curlies" count="5"/>
+            <key name="context" count="1"/>
+            <key name="fn:position" count="1"/>
+            <key name="fn:last" count="1"/>
+            <key name="" count="2"/>
+            <key name="data-elements" count="1"/>
+            <key name="space-separation" count="1"/>
+            <key name="xsl:param" count="1"/>
+            <key name="fn:concat" count="1"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="fn:starts-with" count="1"/>
+            <key name="namespace-resolution" count="1"/>
+            <key name="xsl:element" count="1"/>
+            <key name="name-attribute" count="1"/>
+            <key name="qname-resolution" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="29" name="expand-text" description="Tests the XSLT 3.0 expand-text attribute and content value templates">
-         <xslt3-specific count="29"/>
+      <test-set total-tests="14"
+                name="declared-modes"
+                description="Tests the effect of the declared-modes attribute on xsl:package (or its absence)">
+         <xslt3-specific count="14"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="247" name="match" description="Tests match">
-         <xslt3-specific count="66"/>
+      <test-set total-tests="32"
+                name="expand-text"
+                description="Tests the XSLT 3.0 expand-text attribute and content value templates">
+         <xslt3-specific count="32"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="expand-text-attribute" count="27"/>
+            <key name="xsl:stylesheet" count="9"/>
+            <key name="variable-reference" count="10"/>
+            <key name="lre" count="21"/>
+            <key name="xsl:expand-text-attribute" count="5"/>
+            <key name="expand-override" count="4"/>
+            <key name="xsl:template" count="15"/>
+            <key name="numeric-literals" count="2"/>
+            <key name="xsl:attribute" count="1"/>
+            <key name="XTSE0020" count="2"/>
+            <key name="wrong-attribute-value" count="3"/>
+            <key name="scope" count="1"/>
+            <key name="XTSE0350" count="1"/>
+            <key name="XPST0003" count="1"/>
+            <key name="invalid-expression" count="1"/>
+            <key name="nested-curlies" count="4"/>
+            <key name="bug-20874" count="1"/>
+            <key name="xsl:text" count="4"/>
+            <key name="escaped-curlies" count="2"/>
+            <key name="xpath-comments" count="1"/>
+            <key name="typed-value" count="1"/>
+            <key name="static-context" count="2"/>
+            <key name="fn:static-base-uri" count="1"/>
+            <key name="xml:base-attribute" count="1"/>
+            <key name="namespace-resolution" count="1"/>
+            <key name="EQName" count="1"/>
+            <key name="dynamic-context" count="1"/>
+            <key name="fn:current" count="1"/>
+            <key name="xsl:for-each" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="249" name="match" description="Tests match">
+         <xslt3-specific count="67"/>
          <xslt2-specific count="141"/>
-         <xslt-other count="40"/>
+         <xslt-other count="41"/>
+         <keywords use-when="false()">
+            <key name="descendant-or-self-axis" count="17"/>
+            <key name="leading-double-slash" count="10"/>
+            <key name="UnionExpr" count="18"/>
+            <key name="predicate" count="36"/>
+            <key name="child-axis" count="93"/>
+            <key name="attribute-axis" count="23"/>
+            <key name="GeneralComp" count="18"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="OrExpr" count="3"/>
+            <key name="fn:not" count="5"/>
+            <key name="TextTest" count="10"/>
+            <key name="fn:position" count="19"/>
+            <key name="context-in-predicate" count="1"/>
+            <key name="fn:last" count="6"/>
+            <key name="multiple-predicates" count="11"/>
+            <key name="AndExpr" count="5"/>
+            <key name="" count="6"/>
+            <key name="fn:id" count="7"/>
+            <key name="variable-reference" count="13"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="complex-expression" count="5"/>
+            <key name="MultiplicativeExpr" count="3"/>
+            <key name="AdditiveExpr" count="1"/>
+            <key name="numeric-predicate" count="9"/>
+            <key name="modes" count="3"/>
+            <key name="Wildcard" count="18"/>
+            <key name="AbbrevForwardStep" count="9"/>
+            <key name="xpath-default-namespace" count="5"/>
+            <key name="NCName" count="9"/>
+            <key name="XTSE0340" count="14"/>
+            <key name="XPST0017" count="6"/>
+            <key name="undeclared-function" count="1"/>
+            <key name="ForExpr" count="2"/>
+            <key name="ancestor-or-self" count="1"/>
+            <key name="preceding-sibling" count="1"/>
+            <key name="nested-predicate" count="3"/>
+            <key name="AnyKindTest" count="1"/>
+            <key name="priority" count="9"/>
+            <key name="DocumentTest" count="16"/>
+            <key name="fn:current" count="4"/>
+            <key name="fn:name" count="1"/>
+            <key name="fn:doc" count="5"/>
+            <key name="xsl:import-schema" count="96"/>
+            <key name="fn:element-with-id" count="2"/>
+            <key name="not-XTSE0340" count="5"/>
+            <key name="fn:true" count="1"/>
+            <key name="InstanceOfExpr" count="9"/>
+            <key name="ElementTest" count="45"/>
+            <key name="PredicatePattern" count="14"/>
+            <key name="from-attribute" count="1"/>
+            <key name="xsl:number" count="2"/>
+            <key name="count-attribute" count="1"/>
+            <key name="IntersectExceptExpr" count="4"/>
+            <key name="ParenthesizedExpr" count="9"/>
+            <key name="bug-18861" count="2"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="xsl:mode" count="14"/>
+            <key name="on-no-match-attribute" count="2"/>
+            <key name="shallow-skip" count="1"/>
+            <key name="deep-skip" count="1"/>
+            <key name="descendant-axis" count="1"/>
+            <key name="positional-predicate" count="1"/>
+            <key name="CommentTest" count="7"/>
+            <key name="_IMPROVE:source-should-include-comments" count="1"/>
+            <key name="fn:key" count="5"/>
+            <key name="invalid-pattern" count="5"/>
+            <key name="not-XPST0017" count="4"/>
+            <key name="ValueComp" count="9"/>
+            <key name="_IMPROVE:cleanup-redundant-code" count="1"/>
+            <key name="RangeExpr" count="2"/>
+            <key name="parentless-nodes" count="24"/>
+            <key name="PITest" count="8"/>
+            <key name="AttributeTest" count="24"/>
+            <key name="_IMPROVE:fix-description" count="1"/>
+            <key name="QuantifiedExpr" count="1"/>
+            <key name="IfExpr" count="1"/>
+            <key name="NodeComp" count="1"/>
+            <key name="CastableExpr" count="1"/>
+            <key name="fn:data" count="1"/>
+            <key name="xs:integer" count="5"/>
+            <key name="xs:decimal" count="1"/>
+            <key name="xpath-comments" count="2"/>
+            <key name="xsl:apply-imports" count="1"/>
+            <key name="group-starting-with-attribute" count="1"/>
+            <key name="group-ending-with-attribute" count="1"/>
+            <key name="SchemaElementTest" count="25"/>
+            <key name="SchemaAttributeTest" count="7"/>
+            <key name="buildin-datatypes" count="1"/>
+            <key name="xs:NMTOKENS" count="1"/>
+            <key name="xs:ENTITIES" count="1"/>
+            <key name="xs:IDREFS" count="1"/>
+            <key name="XTSE3430" count="1"/>
+            <key name="AbbrevReverseStep" count="1"/>
+            <key name="self-axis" count="1"/>
+            <key name="_TEST:verify-correct" count="1"/>
+            <key name="stylesheet-function" count="1"/>
+            <key name="typed-strict" count="7"/>
+            <key name="typed-lax" count="1"/>
+            <key name="typed-yes" count="1"/>
+            <key name="typed-true" count="1"/>
+            <key name="typed-1" count="1"/>
+            <key name="typed-unspecified" count="1"/>
+            <key name="typed-no" count="1"/>
+            <key name="xsl:next-match" count="1"/>
+            <key name="on-multiple-match" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="101" name="mode" description="Tests the use of modes in xsl:template and xsl:apply-templates">
-         <xslt3-specific count="68"/>
+      <test-set total-tests="137"
+                name="mode"
+                description="Tests the use of modes in xsl:template and xsl:apply-templates">
+         <xslt3-specific count="104"/>
          <xslt2-specific count="18"/>
          <xslt-other count="15"/>
+         <keywords use-when="false()">
+            <key name="xsl:mode" count="60"/>
+            <key name="on-no-match-attribute" count="60"/>
+            <key name="shallow-skip" count="20"/>
+            <key name="shallow-copy" count="29"/>
+            <key name="text-only-copy" count="30"/>
+            <key name="variable-reference" count="14"/>
+            <key name="comment-nodes" count="3"/>
+            <key name="parentless-nodes" count="14"/>
+            <key name="streamable" count="21"/>
+            <key name="processing-instruction-nodes" count="3"/>
+            <key name="text-nodes" count="2"/>
+            <key name="attribute-nodes" count="4"/>
+            <key name="namespace-nodes" count="6"/>
+            <key name="non-streamable" count="2"/>
+            <key name="stylesheet-function" count="1"/>
+            <key name="predicate" count="1"/>
+            <key name="matching-mode" count="49"/>
+            <key name="non-matching-mode" count="6"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="without-mode-attribute" count="1"/>
+            <key name="" count="2"/>
+            <key name="qname-resolution" count="3"/>
+            <key name="temporary-tree" count="2"/>
+            <key name="mode-switching" count="2"/>
+            <key name="mode-scope" count="1"/>
+            <key name="xsl:call-template" count="1"/>
+            <key name="AnyKindTest" count="1"/>
+            <key name="conflict-resolution" count="17"/>
+            <key name="multiple-matching-templates" count="8"/>
+            <key name="syntax" count="1"/>
+            <key name="initial-mode" count="6"/>
+            <key name="multiple-mode-template" count="1"/>
+            <key name="mode-#all" count="8"/>
+            <key name="initial-context-node" count="1"/>
+            <key name="priority" count="3"/>
+            <key name="xsl:next-match" count="4"/>
+            <key name="buildin-template-rules" count="7"/>
+            <key name="mode-#current" count="8"/>
+            <key name="mode-#default" count="4"/>
+            <key name="erratum-XT.E19" count="4"/>
+            <key name="xsl:function" count="1"/>
+            <key name="xsl:attribute-set" count="1"/>
+            <key name="global-variable" count="2"/>
+            <key name="TextTest" count="4"/>
+            <key name="typed-no" count="1"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="fail" count="7"/>
+            <key name="xsl:try" count="2"/>
+            <key name="xsl:catch" count="2"/>
+            <key name="XTDE0555" count="4"/>
+            <key name="xsl:apply-imports" count="5"/>
+            <key name="warning-on-no-match" count="5"/>
+            <key name="EQName" count="1"/>
+            <key name="mode-#unnamed" count="1"/>
+            <key name="deep-skip" count="2"/>
+            <key name="document-node" count="2"/>
+            <key name="typed-yes" count="2"/>
+            <key name="XTTE3100" count="2"/>
+            <key name="typed-false" count="1"/>
+            <key name="typed-0" count="1"/>
+            <key name="typed" count="1"/>
+            <key name="on-multiple-match-attribute" count="1"/>
+            <key name="XTSE0545" count="1"/>
+            <key name="deep-copy" count="4"/>
+            <key name="xsl:import" count="4"/>
+         </keywords>
       </test-set>
       <test-set total-tests="157" name="select" description="Tests select">
          <xslt3-specific count="1"/>
          <xslt2-specific count="71"/>
          <xslt-other count="85"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="7" name="shadow" description="Tests Shadow Attributes (Static AVTs)">
+      <test-set total-tests="7"
+                name="shadow"
+                description="Tests Shadow Attributes (Static AVTs)">
          <xslt3-specific count="7"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="static-variable" count="6"/>
+            <key name="xsl:value-of" count="2"/>
+            <key name="_select" count="2"/>
+            <key name="xsl:variable" count="1"/>
+            <key name="_static" count="1"/>
+            <key name="xsl:transform" count="2"/>
+            <key name="_version" count="2"/>
+            <key name="xsl:include" count="1"/>
+            <key name="_href" count="1"/>
+            <key name="mixed-avt" count="1"/>
+            <key name="xsl:template" count="3"/>
+            <key name="_use-when" count="1"/>
+            <key name="_xpath-default-namespace" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="37" name="static" description="Tests static attributes on xsl:variable and xsl:param declarations">
+      <test-set total-tests="37"
+                name="static"
+                description="Tests static attributes on xsl:variable and xsl:param declarations">
          <xslt3-specific count="37"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="static-variable" count="37"/>
+            <key name="tvt" count="31"/>
+            <key name="err:XPST0008" count="3"/>
+            <key name="required-param" count="8"/>
+            <key name="err:XTSE0050" count="1"/>
+            <key name="err:XTSE0010" count="6"/>
+            <key name="implicit-default" count="9"/>
+            <key name="item" count="2"/>
+            <key name="occurrence-indicator" count="9"/>
+            <key name="xs:integer" count="11"/>
+            <key name="implicitly-mandatory" count="4"/>
+            <key name="err:XTTE0590" count="1"/>
+            <key name="err:XTSE0020" count="2"/>
+            <key name="forward-compatbility" count="1"/>
+            <key name="backward-compatibility" count="1"/>
+            <key name="visibility" count="2"/>
+            <key name="err:XTSE0090" count="1"/>
+            <key name="ERR:XTSE0090" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="125" name="streamable" description="Tests streamable apply-templates and modes">
+      <test-set total-tests="125"
+                name="streamable"
+                description="Tests streamable apply-templates and modes">
          <xslt3-specific count="125"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="leading-lone-slash" count="4"/>
+            <key name="xsl:copy" count="7"/>
+            <key name="striding" count="34"/>
+            <key name="motionless-pattern" count="26"/>
+            <key name="xsl:strip-space" count="15"/>
+            <key name="buildin-template-rules" count="1"/>
+            <key name="motionless-pattern&#xA;" count="9"/>
+            <key name="" count="576"/>
+            <key name="streamable-identity-transform&#xA;" count="10"/>
+            <key name="attribute-axis" count="3"/>
+            <key name="climbing-childless" count="26"/>
+            <key name="leading-lone-slash&#xA;" count="2"/>
+            <key name="motionless-and-consuming" count="7"/>
+            <key name="streamable-identity-transform" count="22"/>
+            <key name="motionless-and-consuming&#xA;" count="1"/>
+            <key name="motionless-builtin-functions" count="6"/>
+            <key name="ContextItemExpr&#xA;" count="2"/>
+            <key name="avt" count="4"/>
+            <key name="ContextItemExpr" count="18"/>
+            <key name="complex-use-case" count="2"/>
+            <key name="mode-switching" count="4"/>
+            <key name="xsl:copy-of" count="4"/>
+            <key name="grounded-variable&#xA;" count="2"/>
+            <key name="xsl:import-schema" count="33"/>
+            <key name="grounded-variable" count="5"/>
+            <key name="namespace-nodes" count="1"/>
+            <key name="comment-nodes" count="2"/>
+            <key name="attribute-nodes&#xA;" count="1"/>
+            <key name="processing-instruction-nodes" count="2"/>
+            <key name="attribute-nodes" count="1"/>
+            <key name="CommentTest" count="1"/>
+            <key name="PITest" count="1"/>
+            <key name="xsl:import-schema&#xA;" count="5"/>
+            <key name="_IMPROVE:change-attribute-template-to-streamable" count="1"/>
+            <key name="xsl:if&#xA;" count="5"/>
+            <key name="type-determined-usage" count="1"/>
+            <key name="fn:name" count="4"/>
+            <key name="fn:string" count="2"/>
+            <key name="fn:namespace-uri" count="1"/>
+            <key name="xsl:sequence" count="4"/>
+            <key name="xsl:attribute" count="1"/>
+            <key name="fn:local-name" count="1"/>
+            <key name="fn:string&#xA;" count="1"/>
+            <key name="xsl:element" count="1"/>
+            <key name="consuming" count="2"/>
+            <key name="xsl:variable" count="1"/>
+            <key name="xsl:value-of&#xA;" count="1"/>
+            <key name="fn:position" count="10"/>
+            <key name="xsl:result-document" count="2"/>
+            <key name="xsl:strip-space&#xA;" count="1"/>
+            <key name="motionless" count="4"/>
+            <key name="InstanceOfExpr" count="2"/>
+            <key name="parent-axis" count="2"/>
+            <key name="striding&#xA;" count="1"/>
+            <key name="climbing" count="3"/>
+            <key name="ancestor-then-climbing" count="1"/>
+            <key name="ancestor-axis" count="4"/>
+            <key name="PathExpr" count="11"/>
+            <key name="xsl:value-of" count="4"/>
+            <key name="fn:count" count="5"/>
+            <key name="PathExpr&#xA;" count="1"/>
+            <key name="striding-then-climbing" count="6"/>
+            <key name="striding-then-climbing&#xA;" count="1"/>
+            <key name="crawling-then-climbing" count="5"/>
+            <key name="climbing-childless&#xA;" count="1"/>
+            <key name="_WRONG:for-each-with-crawling-not-streamable&#xA;" count="1"/>
+            <key name="crawling-atomizing" count="4"/>
+            <key name="fn:avg&#xA;" count="1"/>
+            <key name="fn:sum" count="5"/>
+            <key name="fn:avg" count="3"/>
+            <key name="fn:starts-with" count="2"/>
+            <key name="fn:exists" count="1"/>
+            <key name="crawling" count="15"/>
+            <key name="fn:empty" count="1"/>
+            <key name="fn:string-join" count="1"/>
+            <key name="climbing-pattern" count="1"/>
+            <key name="fn:upper-case" count="2"/>
+            <key name="fn:string-length" count="1"/>
+            <key name="IfExpr" count="5"/>
+            <key name="fn:number" count="1"/>
+            <key name="GeneralComp" count="6"/>
+            <key name="fn:min" count="1"/>
+            <key name="fn:max" count="4"/>
+            <key name="ParenthesizedExpr" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="ValueComp" count="1"/>
+            <key name="fn:distinct-values" count="1"/>
+            <key name="XTSE3430" count="20"/>
+            <key name="_IMPROVE:fix-description" count="9"/>
+            <key name="xsl:apply-templates" count="5"/>
+            <key name="xsl:with-param" count="5"/>
+            <key name="grounded-parameter" count="4"/>
+            <key name="IntersectExceptExpr&#xA;" count="1"/>
+            <key name="tunnel-parameter" count="5"/>
+            <key name="xsl:with-param&#xA;" count="1"/>
+            <key name="xsl:apply-templates&#xA;" count="2"/>
+            <key name="multiple-streaming-input" count="1"/>
+            <key name="xsl:for-each" count="11"/>
+            <key name="crawling-then-striding" count="8"/>
+            <key name="fn:outermost" count="5"/>
+            <key name="fn:upper-case&#xA;" count="1"/>
+            <key name="nested-for-each" count="1"/>
+            <key name="fn:data" count="2"/>
+            <key name="attribute-axis&#xA;" count="1"/>
+            <key name="climbing-then-grounded" count="1"/>
+            <key name="climbing-then-grounded&#xA;" count="2"/>
+            <key name="fn:lang" count="6"/>
+            <key name="AxisStep" count="9"/>
+            <key name="choice-operand-group" count="4"/>
+            <key name="xsl:choose" count="1"/>
+            <key name="xsl:when" count="1"/>
+            <key name="xsl:otherwise&#xA;" count="1"/>
+            <key name="lre" count="4"/>
+            <key name="Expr" count="1"/>
+            <key name="striding-then-grounded" count="2"/>
+            <key name="xs:date" count="1"/>
+            <key name="xs:decimal" count="2"/>
+            <key name="QuantifiedExpr" count="1"/>
+            <key name="_WRONG:not-streamable" count="3"/>
+            <key name="_WRONG:streamability-rules-incorrect&#xA;" count="1"/>
+            <key name="_WRONG:streamability-rules-incorrect" count="2"/>
+            <key name="QuantifiedExpr&#xA;" count="3"/>
+            <key name="fn:current-group" count="1"/>
+            <key name="fn:current-grouping-key" count="1"/>
+            <key name="xsl:for-each-group&#xA;" count="1"/>
+            <key name="group-adjacent-attribute" count="1"/>
+            <key name="positional-predicate" count="1"/>
+            <key name="on-no-match-attribute" count="1"/>
+            <key name="shallow-copy" count="1"/>
+            <key name="multiple-consuming-expressions" count="2"/>
+            <key name="AndExpr" count="1"/>
+            <key name="variable-bound-to-streamed-node" count="5"/>
+            <key name="initial-streaming-mode" count="8"/>
+            <key name="_IMPROVE:cleanup-redundant-code" count="12"/>
+            <key name="fn:tokenize" count="3"/>
+            <key name="predicate" count="5"/>
+            <key name="ForExpr" count="1"/>
+            <key name="initial-streaming-mode&#xA;" count="4"/>
+            <key name="global-variable" count="1"/>
+            <key name="variable-bound-to-streamed-node&#xA;" count="1"/>
+            <key name="XPDY0002" count="1"/>
+            <key name="_WRONG:wrong-error-code" count="1"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="xsl:sort" count="1"/>
+            <key name="_IMPROVE:double-error-situation" count="1"/>
+            <key name="crawling&#xA;" count="1"/>
+            <key name="free-ranging-pattern" count="3"/>
+            <key name="XTSE3430&#xA;" count="4"/>
+            <key name="ancestor-axis&#xA;" count="1"/>
+            <key name="xsl:template" count="1"/>
+            <key name="template-returning-nodes&#xA;" count="1"/>
+            <key name="_IMPROVE:any-binding-to-node-is-illegal" count="1"/>
+            <key name="fn:has-children" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="26" name="strip-type-annotations" description="Tests strip-type-annotations">
+      <test-set total-tests="26"
+                name="strip-type-annotations"
+                description="Tests strip-type-annotations">
          <xslt3-specific count="0"/>
          <xslt2-specific count="26"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="58" name="tunnel" description="Tests tunnel">
          <xslt3-specific count="4"/>
          <xslt2-specific count="54"/>
          <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="82" name="use-when" description="Tests use-when">
-         <xslt3-specific count="16"/>
-         <xslt2-specific count="65"/>
-         <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="42" name="validation" description="Tests validation">
-         <xslt3-specific count="4"/>
-         <xslt2-specific count="37"/>
+      <test-set total-tests="102" name="use-when" description="Tests use-when">
+         <xslt3-specific count="19"/>
+         <xslt2-specific count="82"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="31" name="version" description="Tests version">
+      <test-set total-tests="48" name="validation" description="Tests validation">
+         <xslt3-specific count="7"/>
+         <xslt2-specific count="40"/>
+         <xslt-other count="1"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="32" name="version" description="Tests version">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="18"/>
+         <xslt2-specific count="19"/>
          <xslt-other count="13"/>
+         <keywords use-when="false()">
+            <key name="fn:system-property" count="6"/>
+            <key name="xsl:version" count="2"/>
+            <key name="use-when-attribute" count="6"/>
+            <key name="forwards-compatibility-mode" count="22"/>
+            <key name="_IMPROVE:test-xsl:message-output" count="1"/>
+            <key name="XTMM9000" count="1"/>
+            <key name="xsl:fallback" count="8"/>
+            <key name="extension-element-prefixes-attribute" count="4"/>
+            <key name="extension-element" count="3"/>
+            <key name="xsl:value-of" count="1"/>
+            <key name="_IMPROVE:test-in-wrong-location" count="4"/>
+            <key name="xsl:message" count="2"/>
+            <key name="avt" count="2"/>
+            <key name="terminate-attribute" count="1"/>
+            <key name="2.0-behaves-like-1.0" count="1"/>
+            <key name="xsl:vendor" count="2"/>
+            <key name="extension-function" count="1"/>
+            <key name="backwards-compatibility-mode" count="3"/>
+            <key name="ignore-type-error" count="1"/>
+            <key name="fn:trace" count="2"/>
+            <key name="_WRONG:incorrect-xslt-version" count="1"/>
+            <key name="version-attribute" count="8"/>
+            <key name="extension-attribute" count="1"/>
+            <key name="xsl:variable" count="1"/>
+            <key name="variable-dependencies" count="1"/>
+            <key name="XTSE0340" count="2"/>
+            <key name="erratum-XT.E14" count="1"/>
+            <key name="_WRONG:incorrect-system-property" count="1"/>
+            <key name="xsl:supports-namespace-axis" count="1"/>
+            <key name="fn:function-available" count="1"/>
+            <key name="XTDE0160" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="25" name="xpath-default-namespace" description="Tests xpath-default-namespace">
+      <test-set total-tests="25"
+                name="xpath-default-namespace"
+                description="Tests xpath-default-namespace">
          <xslt3-specific count="0"/>
          <xslt2-specific count="21"/>
          <xslt-other count="4"/>
+         <keywords use-when="false()">
+            <key name="xsl:stylesheet" count="1"/>
+            <key name="" count="10"/>
+            <key name="xsl:value-of" count="4"/>
+            <key name="lre" count="9"/>
+            <key name="namespace-resolution" count="2"/>
+            <key name="undeclared-xpath-default-namespace" count="1"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="_IMPROVE:does-not-test-null-namespace" count="1"/>
+            <key name="xsl:template" count="2"/>
+            <key name="xsl:strip-space" count="1"/>
+            <key name="xsl:preserve-space" count="1"/>
+            <key name="xsl:transform" count="3"/>
+            <key name="xsl:use-when" count="1"/>
+            <key name="variable-names" count="1"/>
+            <key name="schema-namespace" count="1"/>
+            <key name="xsl:type" count="1"/>
+            <key name="attribute-nodes" count="1"/>
+            <key name="AttributeTest" count="1"/>
+            <key name="xsl:import-schema" count="3"/>
+            <key name="as-attribute" count="1"/>
+            <key name="ElementTest" count="1"/>
+            <key name="xsl:variable" count="1"/>
+            <key name="InstanceOfExpr" count="1"/>
+            <key name="XTSE0090" count="1"/>
+            <key name="_IMPROVE:unclear-test" count="5"/>
+         </keywords>
       </test-set>
    </category>
    <category name="Declarations">
-      <overview total-tests-in-category="914">
-         <xslt3-specific count="269"/>
-         <xslt2-specific count="512"/>
-         <xslt-other count="133"/>
+      <overview total-tests-in-category="1045">
+         <xslt3-specific count="374"/>
+         <xslt2-specific count="517"/>
+         <xslt-other count="154"/>
       </overview>
-      <test-set total-tests="44" name="accumulator" description="Tests accumulator">
-         <xslt3-specific count="44"/>
+      <test-set total-tests="10"
+                name="accept"
+                description="Tests xsl:accept in XSLT 3.0">
+         <xslt3-specific count="10"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="46" name="attribute-set" description="Tests xsl:attribute-set">
-         <xslt3-specific count="3"/>
+      <test-set total-tests="53" name="accumulator" description="Tests accumulator">
+         <xslt3-specific count="53"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="xsl:mode" count="18"/>
+            <key name="on-no-match-attribute" count="15"/>
+            <key name="shallow-skip" count="10"/>
+            <key name="fn:accumulator-before" count="12"/>
+            <key name="ElementTest" count="3"/>
+            <key name="streamable" count="11"/>
+            <key name="fn:accumulator-after" count="10"/>
+            <key name="multiple-accumulators" count="3"/>
+            <key name="applies-to-attribute" count="2"/>
+            <key name="deep-skip" count="1"/>
+            <key name="XTDE3420" count="1"/>
+            <key name="shallow-copy" count="4"/>
+            <key name="TextTest" count="2"/>
+            <key name="$value" count="1"/>
+            <key name="post-descent" count="3"/>
+            <key name="non-streamable" count="2"/>
+            <key name="_WRONG:illegal-accumulator-streaming-non-streaming" count="1"/>
+            <key name="xsl:accumulator" count="5"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="47"
+                name="attribute-set"
+                description="Tests xsl:attribute-set">
+         <xslt3-specific count="4"/>
          <xslt2-specific count="7"/>
          <xslt-other count="36"/>
+         <keywords use-when="false()">
+            <key name="lre" count="22"/>
+            <key name="xsl:use-attribute-sets" count="26"/>
+            <key name="EQName" count="1"/>
+            <key name="namespace-resolution" count="1"/>
+            <key name="multiple-attribute-sets" count="9"/>
+            <key name="streamable" count="2"/>
+            <key name="" count="4"/>
+            <key name="use-attribute-sets" count="26"/>
+            <key name="xsl:element" count="13"/>
+            <key name="xsl:copy" count="7"/>
+            <key name="attribute-set-inheritance" count="11"/>
+            <key name="attribute-overlap" count="10"/>
+            <key name="conflict-resolution" count="10"/>
+            <key name="_IMPROVE:add-test-for-rootnode-attribute-set" count="1"/>
+            <key name="xsl:import" count="5"/>
+            <key name="attribute-override" count="1"/>
+            <key name="variable-reference" count="1"/>
+            <key name="import-precedence" count="2"/>
+            <key name="qname-resolution" count="2"/>
+            <key name="_IMPROVE:not-xslt2-specific" count="2"/>
+            <key name="separator-attribute" count="2"/>
+            <key name="empty-attribute-set" count="1"/>
+            <key name="_IMPROVE:test-in-wrong-location" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="24" name="character-map" description="Tests the xsl:character-map declaration">
+      <test-set total-tests="24"
+                name="character-map"
+                description="Tests the xsl:character-map declaration">
          <xslt3-specific count="0"/>
          <xslt2-specific count="24"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="single-character-map" count="12"/>
+            <key name="xml-output-method" count="15"/>
+            <key name="composite-character-map" count="3"/>
+            <key name="conflict-resolution" count="6"/>
+            <key name="multiple-character-maps" count="8"/>
+            <key name="xml-markup-generation" count="1"/>
+            <key name="unicode" count="1"/>
+            <key name="encoding-attribute" count="1"/>
+            <key name="iso-8859-1" count="5"/>
+            <key name="single-character-map&#xA;" count="1"/>
+            <key name="" count="40"/>
+            <key name="qname-resolution" count="1"/>
+            <key name="html-uri-escaping" count="1"/>
+            <key name="html-output-method" count="2"/>
+            <key name="attribute-nodes" count="1"/>
+            <key name="illegal-xml-generation&#xA;" count="1"/>
+            <key name="namespace-resolution" count="1"/>
+            <key name="text-output-method" count="3"/>
+            <key name="illegal-xml-generation" count="1"/>
+            <key name="xsl:result-document" count="3"/>
+            <key name="conflict-resolution&#xA;" count="1"/>
+            <key name="xhtml-output-method" count="1"/>
+            <key name="_WRONG:output-method-incorrect" count="1"/>
+            <key name="xml-output-method&#xA;" count="2"/>
+            <key name="XTSE1590" count="2"/>
+            <key name="XTSE1600" count="1"/>
+            <key name="circular-reference" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="28" name="context-item" description="Tests xsl:context-item">
+      <test-set total-tests="28"
+                name="context-item"
+                description="Tests xsl:context-item">
          <xslt3-specific count="28"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="74" name="function" description="Tests function">
-         <xslt3-specific count="28"/>
-         <xslt2-specific count="46"/>
+      <test-set total-tests="19"
+                name="expose"
+                description="Tests xsl:expose in XSLT 3.0">
+         <xslt3-specific count="19"/>
+         <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="3" name="global-context-item" description="Tests xsl:global-context-item">
+      <test-set total-tests="87" name="function" description="Tests function">
+         <xslt3-specific count="38"/>
+         <xslt2-specific count="49"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="3"
+                name="global-context-item"
+                description="Tests xsl:global-context-item">
          <xslt3-specific count="3"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="42" name="import" description="Tests import">
          <xslt3-specific count="3"/>
          <xslt2-specific count="27"/>
          <xslt-other count="12"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="195" name="import-schema" description="Tests import-schema">
+      <test-set total-tests="195"
+                name="import-schema"
+                description="Tests import-schema">
          <xslt3-specific count="2"/>
          <xslt2-specific count="193"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="16" name="include" description="Tests include">
          <xslt3-specific count="1"/>
          <xslt2-specific count="12"/>
          <xslt-other count="3"/>
+         <keywords use-when="false()">
+            <key name="xsl:import" count="8"/>
+            <key name="xsl:include" count="10"/>
+            <key name="embedded-stylesheet" count="2"/>
+            <key name="_IMPROVE:missing-dependency-embedded" count="2"/>
+            <key name="xsl:apply-imports" count="6"/>
+            <key name="xsl:variable" count="2"/>
+            <key name="buildin-template-rules" count="1"/>
+            <key name="xsl:with-param" count="1"/>
+            <key name="xsl:param" count="1"/>
+            <key name="multiple-includes" count="4"/>
+            <key name="multiple-imports" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="15" name="namespace-alias" description="Tests namespace">
+      <test-set total-tests="15"
+                name="namespace-alias"
+                description="Tests namespace">
          <xslt3-specific count="0"/>
          <xslt2-specific count="9"/>
          <xslt-other count="6"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="213" name="output" description="Tests the xsl:output declaration, and hence serialization generally">
-         <xslt3-specific count="73"/>
-         <xslt2-specific count="140"/>
+      <test-set total-tests="215"
+                name="output"
+                description="Tests the xsl:output declaration, and hence serialization generally">
+         <xslt3-specific count="74"/>
+         <xslt2-specific count="141"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="40" name="override" description="Tests xsl:override in XSLT 3.0">
-         <xslt3-specific count="40"/>
+      <test-set total-tests="60"
+                name="override"
+                description="Tests xsl:override in XSLT 3.0">
+         <xslt3-specific count="60"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="8" name="package" description="Tests xsl:package in XSLT 3.0">
-         <xslt3-specific count="8"/>
+      <test-set total-tests="42"
+                name="package"
+                description="Tests xsl:package in XSLT 3.0">
+         <xslt3-specific count="42"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="29" name="param" description="Tests the xsl:param element">
+      <test-set total-tests="29"
+                name="param"
+                description="Tests the xsl:param element">
          <xslt3-specific count="4"/>
          <xslt2-specific count="25"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="23" name="strip-space" description="Tests whitespace">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="1"/>
+         <xslt-other count="21"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="6" name="template" description="Tests template">
          <xslt3-specific count="0"/>
          <xslt2-specific count="1"/>
          <xslt-other count="5"/>
+         <keywords use-when="false()">
+            <key name="xsl:apply-templates" count="4"/>
+            <key name="CommentTest" count="1"/>
+            <key name="matching-mode" count="4"/>
+            <key name="PITest" count="1"/>
+            <key name="AnyKindTest" count="1"/>
+            <key name="attribute-axis" count="1"/>
+            <key name="AbbrevForwardStep" count="1"/>
+            <key name="template-recursion" count="1"/>
+            <key name="named-templates" count="1"/>
+            <key name="buildin-template-rules" count="1"/>
+            <key name="leading-lone-slash" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="30" name="use-package" description="Tests xsl:use-package in XSLT 3.0">
+      <test-set total-tests="30"
+                name="use-package"
+                description="Tests xsl:use-package in XSLT 3.0">
          <xslt3-specific count="30"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="101" name="variable" description="Tests local and global variables">
+      <test-set total-tests="101"
+                name="variable"
+                description="Tests local and global variables">
          <xslt3-specific count="2"/>
          <xslt2-specific count="28"/>
          <xslt-other count="71"/>
+         <keywords use-when="false()"/>
       </test-set>
    </category>
    <category name="Expressions">
-      <overview total-tests-in-category="694">
-         <xslt3-specific count="77"/>
-         <xslt2-specific count="183"/>
-         <xslt-other count="434"/>
+      <overview total-tests-in-category="701">
+         <xslt3-specific count="79"/>
+         <xslt2-specific count="186"/>
+         <xslt-other count="436"/>
       </overview>
       <test-set total-tests="202" name="axes" description="Tests axes">
          <xslt3-specific count="0"/>
          <xslt2-specific count="20"/>
          <xslt-other count="182"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="4" name="castable" description="Tests castable">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="CastableExpr" count="4"/>
+            <key name="descendant-or-self-axis" count="4"/>
+            <key name="buildin-types" count="1"/>
+            <key name="xsl:variable" count="3"/>
+            <key name="variable-reference" count="3"/>
+            <key name="CastExpr" count="3"/>
+            <key name="buildin-datatypes" count="3"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="28" name="data-manipulation" description="Tests data-manipulation">
+      <test-set total-tests="28"
+                name="data-manipulation"
+                description="Tests data-manipulation">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="28"/>
+         <keywords use-when="false()">
+            <key name="xsl:if" count="5"/>
+            <key name="xsl:choose" count="5"/>
+            <key name="xsl:when" count="5"/>
+            <key name="xsl:otherwise" count="5"/>
+            <key name="complex-expression" count="6"/>
+            <key name="fn:round" count="2"/>
+            <key name="fn:format-number" count="11"/>
+            <key name="fn:substring-after" count="2"/>
+            <key name="fn:number" count="2"/>
+            <key name="variable-reference" count="1"/>
+            <key name="xsl:param" count="12"/>
+            <key name="global-variable" count="16"/>
+            <key name="xsl:variable" count="8"/>
+            <key name="variable-dependencies" count="4"/>
+            <key name="fn:last" count="1"/>
+            <key name="predicate" count="3"/>
+            <key name="ancestor-or-self" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="104" name="expression" description="Tests expression">
-         <xslt3-specific count="2"/>
-         <xslt2-specific count="48"/>
+      <test-set total-tests="108" name="expression" description="Tests expression">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="50"/>
          <xslt-other count="54"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="4" name="for" description="Tests for">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="70" name="higher-order-functions" description="Tests higher-order-functions">
+      <test-set total-tests="70"
+                name="higher-order-functions"
+                description="Tests higher-order-functions">
          <xslt3-specific count="70"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="146" name="math" description="Tests math">
+      <test-set total-tests="147" name="math" description="Tests math">
          <xslt3-specific count="4"/>
-         <xslt2-specific count="34"/>
+         <xslt2-specific count="35"/>
          <xslt-other count="108"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="38" name="nodetest" description="Tests nodetest">
          <xslt3-specific count="0"/>
          <xslt2-specific count="36"/>
          <xslt-other count="2"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="10" name="path" description="Tests path">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="10"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="52" name="predicate" description="Tests predicate">
+      <test-set total-tests="54" name="predicate" description="Tests predicate">
          <xslt3-specific count="0"/>
          <xslt2-specific count="2"/>
-         <xslt-other count="50"/>
+         <xslt-other count="52"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="4" name="treat-as" description="Tests treat-as">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="TreatExpr" count="4"/>
+            <key name="xs:integer" count="4"/>
+            <key name="derived-xs-integer" count="3"/>
+            <key name="stylesheet-function" count="3"/>
+            <key name="xsl:function" count="3"/>
+            <key name="xsl:import-schema" count="4"/>
+            <key name="invalid-cast" count="1"/>
+            <key name="no-error-if-not-executed" count="1"/>
+            <key name="fn:codepoints-to-string" count="1"/>
+            <key name="fn:data" count="2"/>
+            <key name="xsl:if" count="1"/>
+            <key name="CastExpr" count="1"/>
+            <key name="xs:anyAtomicType" count="1"/>
+            <key name="XPDY0050" count="1"/>
+         </keywords>
       </test-set>
       <test-set total-tests="4" name="type-expr" description="Tests type-expr">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="numeric-types" count="1"/>
+            <key name="op:numeric-add" count="1"/>
+            <key name="type-promotion" count="1"/>
+            <key name="xsl:import-schema" count="4"/>
+            <key name="fn:data" count="4"/>
+            <key name="InstanceOfExpr" count="3"/>
+            <key name="xs:boolean" count="1"/>
+            <key name="derived-xs-boolean" count="1"/>
+            <key name="ValueComp" count="3"/>
+            <key name="xs:duration" count="1"/>
+            <key name="derived-xs-duration" count="1"/>
+            <key name="xs:date" count="1"/>
+            <key name="derived-xs-date" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="10" name="type-functions" description="Tests type-functions">
+      <test-set total-tests="10"
+                name="type-functions"
+                description="Tests type-functions">
          <xslt3-specific count="1"/>
          <xslt2-specific count="9"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="xs:date" count="2"/>
+            <key name="xs:time" count="1"/>
+            <key name="derived-xs-time" count="1"/>
+            <key name="derived-xs-date" count="2"/>
+            <key name="fn:dateTime" count="1"/>
+            <key name="InstanceOfExpr" count="9"/>
+            <key name="xsl:import-schema" count="10"/>
+            <key name="fn:data" count="10"/>
+            <key name="buildin-datatypes" count="1"/>
+            <key name="derived-builtin-types" count="6"/>
+            <key name="fn:abs" count="1"/>
+            <key name="buildin-types" count="5"/>
+            <key name="xsl:if" count="2"/>
+            <key name="xs:decimal" count="1"/>
+            <key name="XPST0017" count="1"/>
+            <key name="fn:substring" count="1"/>
+            <key name="derived-xs-string" count="4"/>
+            <key name="xs:string" count="3"/>
+            <key name="fn:upper-case" count="1"/>
+            <key name="fn:matches" count="1"/>
+            <key name="fn:resolve-uri" count="1"/>
+            <key name="fn:year-from-date" count="1"/>
+            <key name="xs:QName" count="1"/>
+            <key name="fn:local-name-from-QName" count="1"/>
+            <key name="derived-xs-QName" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="18" name="xpath-compat" description="Tests xpath-compat">
+      <test-set total-tests="18"
+                name="xpath-compat"
+                description="Tests xpath-compat">
          <xslt3-specific count="0"/>
          <xslt2-specific count="18"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
    </category>
    <category name="Functions">
-      <overview total-tests-in-category="927">
-         <xslt3-specific count="128"/>
-         <xslt2-specific count="411"/>
-         <xslt-other count="388"/>
+      <overview total-tests-in-category="1143">
+         <xslt3-specific count="341"/>
+         <xslt2-specific count="415"/>
+         <xslt-other count="387"/>
       </overview>
       <test-set total-tests="38" name="accessor" description="Tests accessor">
          <xslt3-specific count="1"/>
          <xslt2-specific count="37"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="29" name="available-system-properties" description="">
+         <xslt3-specific count="29"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="48" name="base-uri" description="Tests base-uri">
          <xslt3-specific count="0"/>
          <xslt2-specific count="48"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="5" name="collation" description="Tests collation">
          <xslt3-specific count="0"/>
          <xslt2-specific count="5"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="4" name="collection" description="Tests collection">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="90" name="core-function" description="Tests core-function">
+      <test-set total-tests="90"
+                name="core-function"
+                description="Tests core-function">
          <xslt3-specific count="0"/>
          <xslt2-specific count="5"/>
          <xslt-other count="85"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="12" name="copy-of" description="Tests the XSLT 3.0 copy-of() function">
-         <xslt3-specific count="12"/>
+      <test-set total-tests="13"
+                name="copy-of"
+                description="Tests the XSLT 3.0 copy-of() function">
+         <xslt3-specific count="13"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="focus-dependent" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="5" name="current-output-uri" description="Tests current-output-uri() function in XSLT 3.0">
+      <test-set total-tests="5"
+                name="current-output-uri"
+                description="Tests current-output-uri() function in XSLT 3.0">
          <xslt3-specific count="5"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="2" name="deep-equal" description="Tests deep-equal">
          <xslt3-specific count="0"/>
          <xslt2-specific count="2"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="64" name="document" description="Tests the fn:document function">
+      <test-set total-tests="64"
+                name="document"
+                description="Tests the fn:document function">
          <xslt3-specific count="0"/>
          <xslt2-specific count="55"/>
          <xslt-other count="9"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="extension-functions" description="Tests extension-functions">
+      <test-set total-tests="5"
+                name="extension-functions"
+                description="Tests extension-functions">
          <xslt3-specific count="0"/>
          <xslt2-specific count="5"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="35" name="format-date" description="Tests format-date">
          <xslt3-specific count="0"/>
          <xslt2-specific count="35"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="33" name="format-date-en" description="Tests format-date-en">
+      <test-set total-tests="33"
+                name="format-date-en"
+                description="Tests format-date-en">
          <xslt3-specific count="0"/>
          <xslt2-specific count="33"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="70" name="format-number" description="Tests format-number">
-         <xslt3-specific count="2"/>
-         <xslt2-specific count="31"/>
+      <test-set total-tests="73"
+                name="format-number"
+                description="Tests format-number">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="32"/>
          <xslt-other count="37"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="8" name="function-available" description="Tests the function-available() function">
+      <test-set total-tests="8"
+                name="function-available"
+                description="Tests the function-available() function">
          <xslt3-specific count="1"/>
          <xslt2-specific count="6"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()">
+            <key name="xsl:function" count="6"/>
+            <key name="stylesheet-function" count="6"/>
+            <key name="fn:function-available" count="8"/>
+            <key name="predicate" count="1"/>
+            <key name="xpath-function-namespace" count="1"/>
+            <key name="namespace-resolution" count="2"/>
+            <key name="variable-reference" count="1"/>
+            <key name="buildin-functions" count="4"/>
+            <key name="arity" count="4"/>
+            <key name="EQName" count="1"/>
+            <key name="fn:true" count="1"/>
+            <key name="fn:false" count="1"/>
+            <key name="constructor-functions" count="1"/>
+         </keywords>
       </test-set>
       <test-set total-tests="40" name="id" description="Tests id">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="13"/>
-         <xslt-other count="27"/>
+         <xslt2-specific count="14"/>
+         <xslt-other count="26"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="52" name="json-to-xml" description="json-to-xml() function">
-         <xslt3-specific count="52"/>
+      <test-set total-tests="55"
+                name="json-to-xml"
+                description="json-to-xml() function">
+         <xslt3-specific count="55"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="88" name="key" description="Test xsl:key and the key() function">
+      <test-set total-tests="89"
+                name="key"
+                description="Test xsl:key and the key() function">
          <xslt3-specific count="2"/>
-         <xslt2-specific count="31"/>
+         <xslt2-specific count="32"/>
          <xslt-other count="55"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="18" name="normalize-unicode" description="Test the fn:normalize-unicode() function introduced in XPath 2.0, together with the normalization-form option on serialization.">
+      <test-set total-tests="18"
+                name="normalize-unicode"
+                description="Test the fn:normalize-unicode() function introduced in XPath 2.0, together with the normalization-form option on serialization.">
          <xslt3-specific count="0"/>
          <xslt2-specific count="18"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="205" name="position" description="Tests the position() function">
+      <test-set total-tests="205"
+                name="position"
+                description="Tests the position() function">
          <xslt3-specific count="0"/>
          <xslt2-specific count="32"/>
          <xslt-other count="173"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="21" name="resolve-uri" description="Tests resolve-uri() and other functionality related to resolution of relative URIs">
+      <test-set total-tests="22"
+                name="resolve-uri"
+                description="Tests resolve-uri() and other functionality related to resolution of relative URIs">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="21"/>
+         <xslt2-specific count="22"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="10" name="root" description="Tests root">
          <xslt3-specific count="0"/>
          <xslt2-specific count="10"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="9" name="snapshot" description="Tests the snapshot() function (unstreamed)">
-         <xslt3-specific count="9"/>
+      <test-set total-tests="17"
+                name="snapshot"
+                description="Tests the snapshot() function (unstreamed)">
+         <xslt3-specific count="17"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="stream-available" description="Tests stream-available() function in XSLT 3.0">
-         <xslt3-specific count="5"/>
+      <test-set total-tests="6"
+                name="stream-available"
+                description="Tests stream-available() function in XSLT 3.0">
+         <xslt3-specific count="6"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="stream-unavailable" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="15" name="system-property" description="Tests system-property">
-         <xslt3-specific count="4"/>
+      <test-set total-tests="184"
+                name="system-property"
+                description="Tests system-property">
+         <xslt3-specific count="173"/>
          <xslt2-specific count="10"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="type-available" description="Tests the type-available() function">
+      <test-set total-tests="5"
+                name="type-available"
+                description="Tests the type-available() function">
          <xslt3-specific count="1"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="1" name="unparsed-entity-uri" description="Tests the unparsed-entity-uri function">
+      <test-set total-tests="1"
+                name="unparsed-entity-uri"
+                description="Tests the unparsed-entity-uri function">
          <xslt3-specific count="0"/>
          <xslt2-specific count="1"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="unparsed-text" description="Tests the fn:unparsed-text() function">
+      <test-set total-tests="5"
+                name="unparsed-text"
+                description="Tests the fn:unparsed-text() function">
          <xslt3-specific count="0"/>
          <xslt2-specific count="5"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="6" name="unparsed-text-lines" description="Tests unparsed-text-lines">
+      <test-set total-tests="6"
+                name="unparsed-text-lines"
+                description="Tests unparsed-text-lines">
          <xslt3-specific count="6"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="28" name="xml-to-json" description="xml-to-json() function">
+      <test-set total-tests="28"
+                name="xml-to-json"
+                description="xml-to-json() function">
          <xslt3-specific count="28"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="simple-content" count="26"/>
+            <key name="fn:xml-to-json" count="28"/>
+            <key name="fn:json-to-xml" count="28"/>
+            <key name="json-null" count="2"/>
+            <key name="json-boolean" count="6"/>
+            <key name="json-numeric" count="2"/>
+            <key name="json-string" count="6"/>
+            <key name="json-array" count="8"/>
+            <key name="json-map" count="8"/>
+            <key name="complex-content" count="2"/>
+            <key name="json-indented" count="14"/>
+         </keywords>
       </test-set>
    </category>
    <category name="Instructions">
-      <overview total-tests-in-category="1217">
-         <xslt3-specific count="373"/>
-         <xslt2-specific count="581"/>
-         <xslt-other count="263"/>
+      <overview total-tests-in-category="1405">
+         <xslt3-specific count="440"/>
+         <xslt2-specific count="600"/>
+         <xslt-other count="365"/>
       </overview>
       <test-set total-tests="47" name="analyze-string" description="Tests regex">
          <xslt3-specific count="8"/>
          <xslt2-specific count="39"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="48" name="apply-templates" description="Tests the xsl:apply-templates instruction. In practice, as indicated by the test names, most of the tests concern conflict resolution.">
+      <test-set total-tests="48"
+                name="apply-templates"
+                description="Tests the xsl:apply-templates instruction. In practice, as indicated by the test names, most of the tests concern conflict resolution.">
          <xslt3-specific count="6"/>
          <xslt2-specific count="34"/>
          <xslt-other count="8"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="6" name="assert" description="Tests the xsl:assert instruction introduced in XSLT 3.0">
-         <xslt3-specific count="6"/>
+      <test-set total-tests="9"
+                name="assert"
+                description="Tests the xsl:assert instruction introduced in XSLT 3.0">
+         <xslt3-specific count="9"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="xsl:assert" count="8"/>
+            <key name="ValueComp" count="4"/>
+            <key name="assert-fail" count="1"/>
+            <key name="assert-success" count="2"/>
+            <key name="use-when-attribute" count="3"/>
+            <key name="XTMM9001" count="2"/>
+            <key name="xsl:try" count="1"/>
+            <key name="error-handling" count="1"/>
+            <key name="specific-catch-clause" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="22" name="attribute" description="Tests the xsl:attribute instruction">
+      <test-set total-tests="22"
+                name="attribute"
+                description="Tests the xsl:attribute instruction">
          <xslt3-specific count="0"/>
          <xslt2-specific count="10"/>
          <xslt-other count="12"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="36" name="call-template" description="Tests call-template">
+      <test-set total-tests="36"
+                name="call-template"
+                description="Tests call-template">
          <xslt3-specific count="2"/>
          <xslt2-specific count="14"/>
          <xslt-other count="20"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="48" name="choose" description="Tests choose">
          <xslt3-specific count="0"/>
          <xslt2-specific count="23"/>
          <xslt-other count="25"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="25" name="xsl-document" description="Tests the xsl:document instruction, and construction of document nodes">
+      <test-set total-tests="25"
+                name="xsl-document"
+                description="Tests the xsl:document instruction, and construction of document nodes">
          <xslt3-specific count="0"/>
          <xslt2-specific count="25"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="sequence-constructor" count="2"/>
+            <key name="comment-nodes" count="1"/>
+            <key name="text-nodes" count="2"/>
+            <key name="processing-instruction-nodes" count="1"/>
+            <key name="xsl:variable" count="3"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="xsl:copy" count="2"/>
+            <key name="xsl:text" count="3"/>
+            <key name="xsl:value-of" count="2"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="xsl:call-template" count="1"/>
+            <key name="xsl:apply-imports" count="1"/>
+            <key name="xsl:import" count="1"/>
+            <key name="xsl:element" count="2"/>
+            <key name="nested-documents" count="3"/>
+            <key name="xsl:processing-instruction" count="1"/>
+            <key name="xsl:comment" count="2"/>
+            <key name="document-order" count="1"/>
+            <key name="use-attribute-sets" count="1"/>
+            <key name="empty-text-nodes" count="2"/>
+            <key name="xsl:sequence" count="2"/>
+            <key name="validation-strip" count="2"/>
+            <key name="lre" count="3"/>
+            <key name="multiple-root-elements" count="1"/>
+            <key name="DocumentTest" count="1"/>
+            <key name="xsl:message" count="1"/>
+            <key name="xsl:attribute-set" count="1"/>
+            <key name="xsl:use-attribute-sets" count="1"/>
+            <key name="xsl:choose" count="1"/>
+            <key name="xsl:when" count="1"/>
+            <key name="xsl:otherwise" count="1"/>
+            <key name="use-when-attribute" count="1"/>
+            <key name="xsl:sort" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="fn:string-join" count="1"/>
+            <key name="fn:avg" count="1"/>
+            <key name="fn:sum" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="28" name="element" description="Tests the xsl:element instruction">
+      <test-set total-tests="28"
+                name="element"
+                description="Tests the xsl:element instruction">
          <xslt3-specific count="10"/>
          <xslt2-specific count="18"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="33" name="construct-node" description="Tests instructions that create text, comment, processing-instruction etc nodes">
-         <xslt3-specific count="0"/>
+      <test-set total-tests="23"
+                name="where-populated"
+                description="Tests xsl:where-populated instruction introduced in XSLT 3.0 (unstreamed).">
+         <xslt3-specific count="23"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="34"
+                name="construct-node"
+                description="Tests instructions that create text, comment, processing-instruction etc nodes">
+         <xslt3-specific count="1"/>
          <xslt2-specific count="29"/>
          <xslt-other count="4"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="103" name="copy" description="Tests copy">
-         <xslt3-specific count="30"/>
-         <xslt2-specific count="20"/>
+      <test-set total-tests="120" name="copy" description="Tests copy">
+         <xslt3-specific count="31"/>
+         <xslt2-specific count="36"/>
          <xslt-other count="53"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="43" name="evaluate" description="Tests xsl:evaluate, tests are dependent on the evaluation feature in 26.6 of the spec">
-         <xslt3-specific count="43"/>
+      <test-set total-tests="45"
+                name="evaluate"
+                description="Tests xsl:evaluate, tests are dependent on the evaluation feature in 26.6 of the spec">
+         <xslt3-specific count="45"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="72" name="for-each-group" description="Tests the xsl:for-each-group instruction">
+      <test-set total-tests="72"
+                name="for-each-group"
+                description="Tests the xsl:for-each-group instruction">
          <xslt3-specific count="23"/>
          <xslt2-specific count="49"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="34" name="iterate" description="Tests the xsl:iterate instruction introduced in XSLT 3.0">
+      <test-set total-tests="34"
+                name="iterate"
+                description="Tests the xsl:iterate instruction introduced in XSLT 3.0">
          <xslt3-specific count="34"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="30" name="lre" description="Tests lre">
          <xslt3-specific count="7"/>
          <xslt2-specific count="5"/>
          <xslt-other count="18"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="64" name="merge" description="Tests the xsl:merge instruction">
-         <xslt3-specific count="64"/>
+      <test-set total-tests="80"
+                name="merge"
+                description="Tests the xsl:merge instruction">
+         <xslt3-specific count="80"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="32" name="message" description="Tests message">
-         <xslt3-specific count="8"/>
+      <test-set total-tests="34" name="message" description="Tests message">
+         <xslt3-specific count="10"/>
          <xslt2-specific count="23"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="26" name="next-match" description="Tests xsl:next-match">
+      <test-set total-tests="26"
+                name="next-match"
+                description="Tests xsl:next-match">
          <xslt3-specific count="0"/>
          <xslt2-specific count="26"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="158" name="number" description="Tests the xsl:number instruction">
+      <test-set total-tests="262"
+                name="number"
+                description="Tests the xsl:number instruction">
          <xslt3-specific count="8"/>
-         <xslt2-specific count="63"/>
-         <xslt-other count="87"/>
+         <xslt2-specific count="65"/>
+         <xslt-other count="189"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="10" name="on-empty" description="Tests sequence constructors containing xsl:on-empty instructions">
-         <xslt3-specific count="10"/>
+      <test-set total-tests="12"
+                name="on-empty"
+                description="Tests sequence constructors containing xsl:on-empty instructions">
+         <xslt3-specific count="12"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="10" name="on-non-empty" description="Tests sequence constructors containing xsl:on-non-empty instructions">
-         <xslt3-specific count="10"/>
+      <test-set total-tests="14"
+                name="on-non-empty"
+                description="Tests sequence constructors containing xsl:on-non-empty instructions">
+         <xslt3-specific count="14"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="127" name="result-document" description="Tests the xsl:result-document instruction. Note: most of the tests concern serialization; very few actually generate multiple output documents.">
-         <xslt3-specific count="55"/>
-         <xslt2-specific count="72"/>
+      <test-set total-tests="132"
+                name="result-document"
+                description="Tests the xsl:result-document instruction. Note: most of the tests concern serialization; very few actually generate multiple output documents.">
+         <xslt3-specific count="59"/>
+         <xslt2-specific count="73"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="91" name="sequence" description="Tests the xsl:sequence instruction and other expressions that construct sequences">
+      <test-set total-tests="91"
+                name="sequence"
+                description="Tests the xsl:sequence instruction and other expressions that construct sequences">
          <xslt3-specific count="4"/>
          <xslt2-specific count="84"/>
          <xslt-other count="3"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="78" name="sort" description="Tests sort">
-         <xslt3-specific count="4"/>
+      <test-set total-tests="79" name="sort" description="Tests sort">
+         <xslt3-specific count="5"/>
          <xslt2-specific count="42"/>
          <xslt-other count="32"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="19" name="stream" description="Tests the xsl:stream instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:stream instruction itself, and not on testing the streamability of its content.">
-         <xslt3-specific count="19"/>
+      <test-set total-tests="23"
+                name="stream"
+                description="Tests the xsl:stream instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:stream instruction itself, and not on testing the streamability of its content.">
+         <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="27" name="try" description="Tests try">
-         <xslt3-specific count="22"/>
+      <test-set total-tests="31" name="try" description="Tests try">
+         <xslt3-specific count="26"/>
          <xslt2-specific count="5"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="xsl:try" count="31"/>
+            <key name="error-handling" count="25"/>
+            <key name="generic-catch-clause" count="25"/>
+            <key name="FOAR0001" count="7"/>
+            <key name="$err:code" count="9"/>
+            <key name="$err:module" count="8"/>
+            <key name="$err:line-number" count="9"/>
+            <key name="$err:description" count="9"/>
+            <key name="FORG0001" count="2"/>
+            <key name="_IMPROVE:cleanup-redundant-code" count="1"/>
+            <key name="fn:error" count="1"/>
+            <key name="specific-catch-clause" count="6"/>
+            <key name="$err:value" count="2"/>
+            <key name="stylesheet-function" count="2"/>
+            <key name="XTTE1540" count="1"/>
+            <key name="xsl:import-schema" count="2"/>
+            <key name="_WRONG:not-sure-test-is-correct" count="2"/>
+            <key name="xsl:function" count="2"/>
+            <key name="fn:boolean" count="2"/>
+            <key name="_IMPROVE:cannot-test-error-variables" count="6"/>
+            <key name="FOAR9876" count="3"/>
+            <key name="err:FOAR0001" count="2"/>
+            <key name="XPST0008" count="1"/>
+            <key name="variable-scope" count="1"/>
+            <key name="fn:element-available" count="2"/>
+            <key name="xsl:catch" count="2"/>
+            <key name="2.0-only-behavior" count="3"/>
+            <key name="_WRONG:incorrect-dependency" count="7"/>
+            <key name="xsl:fallback" count="6"/>
+            <key name="no-error-inside-try" count="5"/>
+            <key name="forwards-compatibility-mode" count="3"/>
+            <key name="$err:column-number" count="2"/>
+            <key name="FODC0002" count="2"/>
+            <key name="_IMPROVE:xsl:result-document-href-dependency" count="1"/>
+            <key name="xsl:result-document" count="5"/>
+            <key name="XTDE1490" count="1"/>
+            <key name="complex-use-case" count="1"/>
+            <key name="XTSE0010" count="1"/>
+            <key name="version-attribute" count="1"/>
+            <key name="xsl:evaluate" count="1"/>
+            <key name="_IMPROVE:cleanup-test" count="1"/>
+         </keywords>
       </test-set>
    </category>
    <category name="Miscellaneous">
-      <overview total-tests-in-category="2037">
-         <xslt3-specific count="1157"/>
-         <xslt2-specific count="762"/>
-         <xslt-other count="118"/>
+      <overview total-tests-in-category="3010">
+         <xslt3-specific count="1165"/>
+         <xslt2-specific count="1748"/>
+         <xslt-other count="97"/>
       </overview>
-      <test-set total-tests="45" name="backwards" description="Tests backwards compatibility with XSLT 1.0">
+      <test-set total-tests="45"
+                name="backwards"
+                description="Tests backwards compatibility with XSLT 1.0">
          <xslt3-specific count="1"/>
          <xslt2-specific count="43"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="86" name="bug" description="A collection of miscellaneous tests garnered from interesting bug reports">
+      <test-set total-tests="86"
+                name="bug"
+                description="A collection of miscellaneous tests garnered from interesting bug reports">
          <xslt3-specific count="0"/>
          <xslt2-specific count="33"/>
          <xslt-other count="53"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="4" name="built-in-templates" description="Tests built-in-templates">
+      <test-set total-tests="4"
+                name="built-in-templates"
+                description="Tests built-in-templates">
          <xslt3-specific count="0"/>
          <xslt2-specific count="4"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="catalog" description="Tests that the test catalog is valid">
-         <xslt3-specific count="2"/>
+      <test-set total-tests="9"
+                name="catalog"
+                description="Tests that the test catalog is valid">
+         <xslt3-specific count="6"/>
          <xslt2-specific count="3"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="catalog-self-test" count="8"/>
+            <key name="schema-validity" count="1"/>
+            <key name="xsl:import-schema" count="2"/>
+            <key name="master-catalog" count="1"/>
+            <key name="unique-testcase-names" count="1"/>
+            <key name="assert-xml-usage-check" count="1"/>
+            <key name="tests-stylesheet-schema-validity" count="1"/>
+            <key name="element-available" count="3"/>
+         </keywords>
       </test-set>
       <test-set total-tests="34" name="collations" description="Tests collations">
          <xslt3-specific count="0"/>
          <xslt2-specific count="32"/>
          <xslt-other count="2"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="18" name="embedded-stylesheet" description="Tests embedded-stylesheet">
+      <test-set total-tests="18"
+                name="embedded-stylesheet"
+                description="Tests embedded-stylesheet">
          <xslt3-specific count="0"/>
          <xslt2-specific count="18"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="566" name="error" description="Tests error conditions. This test set should include a test for every error code (however, coverage of new XSLT 3.0 errors is incomplete).">
-         <xslt3-specific count="149"/>
+      <test-set total-tests="570"
+                name="error"
+                description="Tests error conditions. This test set should include a test for every error code (however, coverage of new XSLT 3.0 errors is incomplete).">
+         <xslt3-specific count="153"/>
          <xslt2-specific count="417"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="5" name="initial-function" description="Tests Call Function XSLT invocation">
-         <xslt3-specific count="5"/>
+      <test-set total-tests="6"
+                name="initial-function"
+                description="Tests Call Function XSLT invocation">
+         <xslt3-specific count="6"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="4" name="initial-mode" description="Tests initial-mode">
+      <test-set total-tests="4"
+                name="initial-mode"
+                description="Tests initial-mode">
          <xslt3-specific count="1"/>
          <xslt2-specific count="2"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="8" name="initial-template" description="Tests Call-Template XSLT invocation">
+      <test-set total-tests="8"
+                name="initial-template"
+                description="Tests Call-Template XSLT invocation">
          <xslt3-specific count="3"/>
          <xslt2-specific count="5"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="120" name="regex-classes" description="Tests regular expression character classes and Unicode blocks. The tests in this test-set may take a little time to execute...">
+      <test-set total-tests="120"
+                name="regex-classes"
+                description="Tests regular expression character classes and Unicode blocks. The tests in this test-set may take a little time to execute...">
          <xslt3-specific count="0"/>
          <xslt2-specific count="120"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="49" name="regex" description="Tests regex">
          <xslt3-specific count="0"/>
          <xslt2-specific count="49"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="987" name="regex-syntax" description="Tests regex-syntax">
+      <test-set total-tests="987"
+                name="regex-syntax"
+                description="Tests regex-syntax">
          <xslt3-specific count="987"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="51" name="whitespace" description="Tests whitespace">
-         <xslt3-specific count="1"/>
-         <xslt2-specific count="4"/>
-         <xslt-other count="46"/>
+      <test-set total-tests="987"
+                name="regex-syntax-xslt20"
+                description="Tests regex-syntax for XSLT20 processors. For XSLT 3.0, see the regular regex-syntax folder. These tests are not maintained (unless bugs are raised against them), they are here for convenience of XSLT 2.0 processor testing. See Bug 20845 for details why we split these tests.">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="987"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="42" name="xml-version" description="Tests support for XML 1.1. Note that the test catalog itself is an XML 1.0 document.">
+      <test-set total-tests="28" name="whitespace" description="Tests whitespace">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="3"/>
+         <xslt-other count="25"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="42"
+                name="xml-version"
+                description="Tests support for XML 1.1. Note that the test catalog itself is an XML 1.0 document.">
          <xslt3-specific count="8"/>
          <xslt2-specific count="19"/>
          <xslt-other count="15"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="13" name="xslt-compat" description="Tests xslt-compat">
          <xslt3-specific count="0"/>
          <xslt2-specific count="13"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="backwards-compatibility-mode" count="5"/>
+            <key name="2.0-behaves-like-1.0" count="3"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="version-attribute" count="3"/>
+            <key name="xsl:fallback" count="6"/>
+            <key name="xsl:result-document" count="1"/>
+            <key name="xsl:analyze-string" count="1"/>
+            <key name="xsl:namespace" count="1"/>
+            <key name="xsl:sequence" count="1"/>
+            <key name="xsl:attribute" count="1"/>
+            <key name="forwards-compatibility-mode" count="2"/>
+            <key name="xsl:sort" count="1"/>
+            <key name="xsl:choose" count="1"/>
+            <key name="xsl:variable" count="2"/>
+            <key name="global-variable" count="2"/>
+            <key name="fn:contains" count="1"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="xsl:if" count="1"/>
+            <key name="extension-element" count="1"/>
+            <key name="extension-element-prefixes-attribute" count="1"/>
+         </keywords>
       </test-set>
    </category>
    <category name="Posture and Sweep">
@@ -721,507 +2037,2160 @@
          <xslt2-specific count="0"/>
          <xslt-other count="919"/>
       </overview>
-      <test-set total-tests="26" name="xp-striding-striding-consumingA" description="CP: Striding, RP: Striding, RS: Consuming Child axis on child or self axis with striding context selecting elements is striding and consuming">
+      <test-set total-tests="26"
+                name="xp-striding-striding-consumingA"
+                description="CP: Striding, RP: Striding, RS: Consuming Child axis on child or self axis with striding context selecting elements is striding and consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="26"/>
-      </test-set>
-      <test-set total-tests="18" name="xp-striding-striding-consumingB" description="CP: Striding, RP: Striding, RS: Consuming Self axis on child axis with striding context selecting elements is striding and consuming">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="18"/>
-      </test-set>
-      <test-set total-tests="87" name="xp-striding-grounded-motionlessA" description="CP: Striding, RP: Grounded, RS: Motionless Any step expression on empty selection is always grounded">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="87"/>
-      </test-set>
-      <test-set total-tests="43" name="xp-striding-grounded-motionlessB" description="CP: Striding, RP: Grounded, RS: Motionless Step expressions child, namespace, attribute and descendant on a childless node kind selects nothing, is always grounded">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="43"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="19" name="xp-striding-grounded-motionlessC" description="CP: Striding, RP: Grounded, RS: Motionless Self-axis that changes axes selects nothing, so grounded/motionless">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="19"/>
-      </test-set>
-      <test-set total-tests="33" name="xp-striding-grounded-motionlessD" description="CP: Striding, RP: Grounded, RS: Motionless Descendant-or-self on childless motionless nodes with different node type selects nothing, so grounded/motionless">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="33"/>
-      </test-set>
-      <test-set total-tests="4" name="xp-striding-grounded-motionlessE" description="CP: Striding, RP: Grounded, RS: Motionless ancestor, parent, following, preceding etc axes on document node selects nothing, so grounded/motionless">
-         <xslt3-specific count="0"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="4"/>
-      </test-set>
-      <test-set total-tests="18" name="xp-striding-grounded-motionlessF" description="CP: Striding, RP: Grounded, RS: Motionless Self axis on parent or ancestor axis which is not on U{element, document}} selects nothingness">
+      <test-set total-tests="18"
+                name="xp-striding-striding-consumingB"
+                description="CP: Striding, RP: Striding, RS: Consuming Self axis on child axis with striding context selecting elements is striding and consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="18"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="19" name="xp-striding-grounded-motionlessG" description="CP: Striding, RP: Grounded, RS: Motionless Self axis on ancestor-or-self axis which is not on U{element, document}} and not on same axis as lh side selects nothingness">
+      <test-set total-tests="87"
+                name="xp-striding-grounded-motionlessA"
+                description="CP: Striding, RP: Grounded, RS: Motionless Any step expression on empty selection is always grounded">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="87"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="43"
+                name="xp-striding-grounded-motionlessB"
+                description="CP: Striding, RP: Grounded, RS: Motionless Step expressions child, namespace, attribute and descendant on a childless node kind selects nothing, is always grounded">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="43"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="19"
+                name="xp-striding-grounded-motionlessC"
+                description="CP: Striding, RP: Grounded, RS: Motionless Self-axis that changes axes selects nothing, so grounded/motionless">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="19"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="38" name="xp-striding-grounded-motionlessH" description="CP: Striding, RP: Grounded, RS: Motionless Ancestor-or-self axis not selecting U{element, document}} from self or ancestor-or-self axis selects nothing (if of unequal nodes), so grounded/motionless">
+      <test-set total-tests="33"
+                name="xp-striding-grounded-motionlessD"
+                description="CP: Striding, RP: Grounded, RS: Motionless Descendant-or-self on childless motionless nodes with different node type selects nothing, so grounded/motionless">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="33"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="4"
+                name="xp-striding-grounded-motionlessE"
+                description="CP: Striding, RP: Grounded, RS: Motionless ancestor, parent, following, preceding etc axes on document node selects nothing, so grounded/motionless">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="4"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="18"
+                name="xp-striding-grounded-motionlessF"
+                description="CP: Striding, RP: Grounded, RS: Motionless Self axis on parent or ancestor axis which is not on U{element, document}} selects nothingness">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="18"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="19"
+                name="xp-striding-grounded-motionlessG"
+                description="CP: Striding, RP: Grounded, RS: Motionless Self axis on ancestor-or-self axis which is not on U{element, document}} and not on same axis as lh side selects nothingness">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="19"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="38"
+                name="xp-striding-grounded-motionlessH"
+                description="CP: Striding, RP: Grounded, RS: Motionless Ancestor-or-self axis not selecting U{element, document}} from self or ancestor-or-self axis selects nothing (if of unequal nodes), so grounded/motionless">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="38"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="14" name="xp-striding-striding-motionlessA" description="CP: Striding, RP: Striding, RS: Motionless Self axis on self axis remains striding and motionless if both sides select the same nodes">
+      <test-set total-tests="14"
+                name="xp-striding-striding-motionlessA"
+                description="CP: Striding, RP: Striding, RS: Motionless Self axis on self axis remains striding and motionless if both sides select the same nodes">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="14"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="85" name="xp-striding-climbing-motionlessA" description="CP: Striding, RP: Climbing, RS: Motionless Climbing axis parent, ancestor or ancestor-or-self on self or climbing axis is climbing and motionless">
+      <test-set total-tests="85"
+                name="xp-striding-climbing-motionlessA"
+                description="CP: Striding, RP: Climbing, RS: Motionless Climbing axis parent, ancestor or ancestor-or-self on self or climbing axis is climbing and motionless">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="85"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="70" name="xp-striding-climbing-motionlessB" description="CP: Striding, RP: Climbing, RS: Motionless Self axis on climbing axis, provided node type is same, inherits the climbing axis: climbing and motionless">
+      <test-set total-tests="70"
+                name="xp-striding-climbing-motionlessB"
+                description="CP: Striding, RP: Climbing, RS: Motionless Self axis on climbing axis, provided node type is same, inherits the climbing axis: climbing and motionless">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="70"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="32" name="xp-striding-climbing-motionlessC" description="CP: Striding, RP: Climbing, RS: Motionless Climbing axis attribute, namespace on self or climbing axis with U{element}} is climbing and motionless">
+      <test-set total-tests="32"
+                name="xp-striding-climbing-motionlessC"
+                description="CP: Striding, RP: Climbing, RS: Motionless Climbing axis attribute, namespace on self or climbing axis with U{element}} is climbing and motionless">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="32"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="35" name="xp-striding-climbing-consumingA" description="CP: Striding, RP: Climbing, RS: Consuming Attribute, namespace, parent or ancestor(-or-self) axis on child, descendant(-or-self) axis selecting elements is climbing and remains consuming">
+      <test-set total-tests="35"
+                name="xp-striding-climbing-consumingA"
+                description="CP: Striding, RP: Climbing, RS: Consuming Attribute, namespace, parent or ancestor(-or-self) axis on child, descendant(-or-self) axis selecting elements is climbing and remains consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="35"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="23" name="xp-striding-climbing-consumingB" description="CP: Striding, RP: Climbing, RS: Consuming Parent or ancestor(-or-self) axis on child axis selecting non U{element, document}} is climbing and remains consuming, provided rh side selects U{element, document}">
+      <test-set total-tests="23"
+                name="xp-striding-climbing-consumingB"
+                description="CP: Striding, RP: Climbing, RS: Consuming Parent or ancestor(-or-self) axis on child axis selecting non U{element, document}} is climbing and remains consuming, provided rh side selects U{element, document}">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="23"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="34" name="xp-striding-crawling-consumingA" description="CP: Striding, RP: Crawling, RS: Consuming A descendant(-or-self) axis on a child or descendant(-or-self) axis is crawling and consuming (scanning expression)">
+      <test-set total-tests="34"
+                name="xp-striding-crawling-consumingA"
+                description="CP: Striding, RP: Crawling, RS: Consuming A descendant(-or-self) axis on a child or descendant(-or-self) axis is crawling and consuming (scanning expression)">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="34"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="16" name="xp-striding-crawling-consumingB" description="CP: Striding, RP: Crawling, RS: Consuming A child axis on a descendant(-or-self) axis is crawling and consuming (scanning expression)">
+      <test-set total-tests="16"
+                name="xp-striding-crawling-consumingB"
+                description="CP: Striding, RP: Crawling, RS: Consuming A child axis on a descendant(-or-self) axis is crawling and consuming (scanning expression)">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="16"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="16" name="xp-striding-crawling-consumingC" description="CP: Striding, RP: Crawling, RS: Consuming A self axis on a descendant(-or-self) axis is crawling and consuming">
+      <test-set total-tests="16"
+                name="xp-striding-crawling-consumingC"
+                description="CP: Striding, RP: Crawling, RS: Consuming A self axis on a descendant(-or-self) axis is crawling and consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="16"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="18" name="xp-striding-grounded-consumingA" description="CP: Striding, RP: Grounded, RS: Consuming Attribute or namespace axis on child or descendant(-or-self) axis that is not in U{element}} is grounded (selects nothing) and remains consuming">
+      <test-set total-tests="18"
+                name="xp-striding-grounded-consumingA"
+                description="CP: Striding, RP: Grounded, RS: Consuming Attribute or namespace axis on child or descendant(-or-self) axis that is not in U{element}} is grounded (selects nothing) and remains consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="18"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="58" name="xp-striding-grounded-consumingB" description="CP: Striding, RP: Grounded, RS: Consuming Self axis selecting other node-type on child, descendant(-or-self) etc axis is grounded (selects nothing) and remains consuming">
+      <test-set total-tests="58"
+                name="xp-striding-grounded-consumingB"
+                description="CP: Striding, RP: Grounded, RS: Consuming Self axis selecting other node-type on child, descendant(-or-self) etc axis is grounded (selects nothing) and remains consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="58"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="53" name="xp-striding-grounded-consumingC" description="CP: Striding, RP: Grounded, RS: Consuming Any axis with nodetest that never selects anything on a child or descendant(-or-self) axis is grounded (selects nothing) and remains consuming">
+      <test-set total-tests="53"
+                name="xp-striding-grounded-consumingC"
+                description="CP: Striding, RP: Grounded, RS: Consuming Any axis with nodetest that never selects anything on a child or descendant(-or-self) axis is grounded (selects nothing) and remains consuming">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="53"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="52" name="xp-striding-roaming-free-rangingA" description="CP: Striding, RP: Roaming, RS: Free-ranging Any step expression selecting streamed nodes on the following(-sibling) or preceding(-sibling) axis is roaming and free-ranging">
+      <test-set total-tests="52"
+                name="xp-striding-roaming-free-rangingA"
+                description="CP: Striding, RP: Roaming, RS: Free-ranging Any step expression selecting streamed nodes on the following(-sibling) or preceding(-sibling) axis is roaming and free-ranging">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="52"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="81" name="xp-striding-roaming-free-rangingB" description="CP: Striding, RP: Roaming, RS: Free-ranging Any step expression selecting streamed nodes on the following(-sibling) or preceding(-sibling) axis is roaming and free-ranging">
+      <test-set total-tests="81"
+                name="xp-striding-roaming-free-rangingB"
+                description="CP: Striding, RP: Roaming, RS: Free-ranging Any step expression selecting streamed nodes on the following(-sibling) or preceding(-sibling) axis is roaming and free-ranging">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="81"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="27" name="xp-striding-roaming-free-rangingC" description="CP: Striding, RP: Roaming, RS: Free-ranging A child or descendant(-or-self) selection after a climbing expr that selects U{element, document}} is roaming/free-ranging">
+      <test-set total-tests="27"
+                name="xp-striding-roaming-free-rangingC"
+                description="CP: Striding, RP: Roaming, RS: Free-ranging A child or descendant(-or-self) selection after a climbing expr that selects U{element, document}} is roaming/free-ranging">
          <xslt3-specific count="0"/>
          <xslt2-specific count="0"/>
          <xslt-other count="27"/>
+         <keywords use-when="false()"/>
       </test-set>
    </category>
    <category name="Streaming">
-      <overview total-tests-in-category="1962">
-         <xslt3-specific count="1962"/>
+      <overview total-tests-in-category="2073">
+         <xslt3-specific count="2073"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
       </overview>
-      <test-set total-tests="33" name="sf-avg" description="avg() function with streaming">
+      <test-set total-tests="33"
+                name="sf-avg"
+                description="avg() function with streaming">
          <xslt3-specific count="33"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="fn:round" count="1"/>
+            <key name="fn:avg" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="RelativePathExpr" count="6"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="3"/>
+            <key name="predicate" count="1"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="TextTest" count="1"/>
+            <key name="fn:number" count="1"/>
+            <key name="striding" count="3"/>
+            <key name="PathExpr" count="1"/>
+            <key name="sequence" count="1"/>
+            <key name="mixed-posture" count="3"/>
+            <key name="fn:tail" count="2"/>
+            <key name="fn:outermost" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="AbbrevForwardStep" count="4"/>
+            <key name="" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:abs" count="1"/>
+            <key name="choice-operand-group" count="1"/>
+            <key name="IfExpr" count="1"/>
+            <key name="SimpleMapExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="2"/>
+            <key name="fn:root" count="1"/>
+            <key name="leading-lone-slash" count="3"/>
+            <key name="grounded" count="7"/>
+            <key name="fn:data" count="1"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="avg" count="8"/>
+            <key name="bang-operator" count="5"/>
+            <key name="forexpr" count="1"/>
+            <key name="letexpr" count="1"/>
+            <key name="xsl:try" count="2"/>
+            <key name="FORG0006" count="2"/>
+            <key name="last" count="2"/>
+            <key name="non-motionless-predicate" count="2"/>
+            <key name="XTSE3430" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="27" name="sf-boolean" description="boolean() function with streaming.">
+      <test-set total-tests="27"
+                name="sf-boolean"
+                description="boolean() function with streaming.">
          <xslt3-specific count="27"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="boolean" count="26"/>
+            <key name="crawling" count="4"/>
+            <key name="fn:boolean" count="1"/>
+            <key name="ContextItemExpr" count="1"/>
+            <key name="motionless-predicate" count="5"/>
+            <key name="RelativePathExpr" count="1"/>
+            <key name="climbing" count="4"/>
+            <key name="bang-operator" count="4"/>
+            <key name="grounded" count="8"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="striding" count="16"/>
+            <key name="empty-sequence" count="4"/>
+            <key name="numeric-predicate" count="1"/>
+            <key name="unionexpr" count="2"/>
+            <key name="xsl:if" count="1"/>
+            <key name="motionless" count="1"/>
+            <key name="remove" count="3"/>
+            <key name="childless-node" count="1"/>
+            <key name="root" count="2"/>
+            <key name="position" count="1"/>
+            <key name="mixed-posture" count="6"/>
+            <key name="base-uri" count="1"/>
+            <key name="numerical-predicate" count="2"/>
+            <key name="FORG0006" count="3"/>
+            <key name="xsl:try" count="2"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="non-motionless-predicate" count="1"/>
+            <key name="XTSE3430" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="4" name="sf-codepoints-to-string" description="Tests the xsl:stream instruction introduced in XSLT 3.0 with fn:codepoints-to-string().">
+      <test-set total-tests="4"
+                name="sf-codepoints-to-string"
+                description="Tests the xsl:stream instruction introduced in XSLT 3.0 with fn:codepoints-to-string().">
          <xslt3-specific count="4"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="crawling" count="2"/>
+            <key name="fn:outermost" count="4"/>
+            <key name="crawling-then-striding" count="4"/>
+            <key name="fn:string-length" count="3"/>
+            <key name="leading-double-slash" count="4"/>
+            <key name="xsl:catch" count="1"/>
+            <key name="xsl:try" count="1"/>
+            <key name="error-handling" count="1"/>
+            <key name="specific-catch-clause" count="1"/>
+            <key name="FOCH0001" count="1"/>
+            <key name="empty-sequence" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="10" name="sf-copy-of" description="fn:copy-of() with streaming">
+      <test-set total-tests="10"
+                name="sf-copy-of"
+                description="fn:copy-of() with streaming">
          <xslt3-specific count="10"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="23" name="sf-count" description="count() function with streaming">
+      <test-set total-tests="23"
+                name="sf-count"
+                description="count() function with streaming">
          <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="crawling" count="3"/>
+            <key name="descendant-or-self-axis" count="1"/>
+            <key name="PathExpr" count="19"/>
+            <key name="striding" count="14"/>
+            <key name="predicate" count="1"/>
+            <key name="motionless-predicate" count="6"/>
+            <key name="SimpleMapExpr" count="3"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="grounded" count="7"/>
+            <key name="climbing-childless" count="1"/>
+            <key name="attribute-nodes" count="1"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="positional-predicate" count="2"/>
+            <key name="UnionExpr" count="2"/>
+            <key name="crawling-then-crawling" count="1"/>
+            <key name="descendant-axis" count="1"/>
+            <key name="motionless" count="1"/>
+            <key name="RangeExpr" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:remove" count="3"/>
+            <key name="_IMPROVE:fix-description" count="2"/>
+            <key name="empty-sequence" count="3"/>
+            <key name="striding-then-climbing" count="1"/>
+            <key name="attribute-axis" count="1"/>
+            <key name="mixed-sequence" count="4"/>
+            <key name="consuming-predicate" count="1"/>
+            <key name="XTSE3430" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="35" name="sf-deep-equal" description="deep-equal() function with streaming">
+      <test-set total-tests="7"
+                name="sf-current"
+                description="current() function with streaming">
+         <xslt3-specific count="7"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="35"
+                name="sf-deep-equal"
+                description="deep-equal() function with streaming">
          <xslt3-specific count="35"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="18"/>
+            <key name="grounded" count="3"/>
+            <key name="PathExpr" count="35"/>
+            <key name="xs:decimal" count="9"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="positional-predicate" count="2"/>
+            <key name="variable-reference" count="10"/>
+            <key name="fn:copy-of" count="5"/>
+            <key name="striding" count="9"/>
+            <key name="_WRONG:fix-initial-template-name" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="text-nodes" count="1"/>
+            <key name="empty-sequence" count="5"/>
+            <key name="sequence-comparison" count="5"/>
+            <key name="fn:number" count="1"/>
+            <key name="fn:doc" count="1"/>
+            <key name="striding-then-climbing" count="1"/>
+            <key name="attribute-axis" count="1"/>
+            <key name="fn:outermost" count="5"/>
+            <key name="crawling" count="2"/>
+            <key name="crawling-then-striding" count="5"/>
+            <key name="fn:data" count="1"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="collation-argument" count="6"/>
+            <key name="FOCH0002" count="3"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+            <key name="crawling-atomizing" count="2"/>
+            <key name="descendant-axis" count="2"/>
+            <key name="AxisStep" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="11" name="sf-distinct-values" description="Tests the xsl:stream instruction with distinct-values()">
+      <test-set total-tests="11"
+                name="sf-distinct-values"
+                description="Tests the xsl:stream instruction with distinct-values()">
          <xslt3-specific count="11"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-climbing" count="2"/>
+            <key name="attribute-axis" count="4"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="PathExpr" count="11"/>
+            <key name="empty-sequence" count="1"/>
+            <key name="fn:number" count="2"/>
+            <key name="striding-then-grounded" count="2"/>
+            <key name="fn:outermost" count="4"/>
+            <key name="crawling-then-striding" count="4"/>
+            <key name="collation-argument" count="6"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+            <key name="FOCH0002" count="2"/>
+            <key name="striding" count="3"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="23" name="sf-empty" description="empty() function with streaming">
+      <test-set total-tests="23"
+                name="sf-empty"
+                description="empty() function with streaming">
          <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="PathExpr" count="22"/>
+            <key name="crawling" count="3"/>
+            <key name="motionless-predicate" count="7"/>
+            <key name="striding" count="13"/>
+            <key name="ancestor-axis" count="2"/>
+            <key name="climbing" count="1"/>
+            <key name="SimpleMapExpr" count="4"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="striding-then-climbing" count="3"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="positional-predicate" count="2"/>
+            <key name="striding-then-crawling" count="1"/>
+            <key name="UnionExpr" count="2"/>
+            <key name="crawling-then-crawling" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="RangeExpr" count="1"/>
+            <key name="grounded" count="1"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="fn:remove" count="3"/>
+            <key name="fn:data" count="1"/>
+            <key name="leading-lone-slash" count="2"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="1"/>
+            <key name="mixed-posture" count="3"/>
+            <key name="consuming-predicate" count="1"/>
+            <key name="XTSE3430" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="23" name="sf-exists" description="exists() function with streaming">
+      <test-set total-tests="23"
+                name="sf-exists"
+                description="exists() function with streaming">
          <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="crawling" count="3"/>
+            <key name="PathExpr" count="21"/>
+            <key name="motionless-predicate" count="7"/>
+            <key name="SimpleMapExpr" count="4"/>
+            <key name="ancestor-axis" count="1"/>
+            <key name="climbing" count="3"/>
+            <key name="ContextItemExpr" count="1"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="leading-lone-slash" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="climbing-then-climbing" count="2"/>
+            <key name="ancestor-or-self-axis" count="2"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="striding" count="12"/>
+            <key name="positional-predicate" count="2"/>
+            <key name="striding-then-crawling" count="1"/>
+            <key name="UnionExpr" count="2"/>
+            <key name="crawling-then-crawling" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="RangeExpr" count="1"/>
+            <key name="grounded" count="1"/>
+            <key name="crawling-atomizing" count="1"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="fn:remove" count="3"/>
+            <key name="fn:data" count="1"/>
+            <key name="striding-then-climbing" count="1"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="mixed-posture" count="4"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="consuming-predicate" count="1"/>
+            <key name="XTSE3430" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="8" name="sf-exactly-one" description="exactly-one() function with streaming">
+      <test-set total-tests="8"
+                name="sf-exactly-one"
+                description="exactly-one() function with streaming">
          <xslt3-specific count="8"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="4"/>
+            <key name="leading-lone-slash" count="6"/>
+            <key name="fn:copy-of" count="4"/>
+            <key name="PathExpr" count="8"/>
+            <key name="predicate" count="2"/>
+            <key name="striding" count="3"/>
+            <key name="cardinality-of-one" count="3"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="FORG0001" count="1"/>
+            <key name="empty-sequence" count="1"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+            <key name="FORG0005" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="3" name="sf-filter" description="fn:filter() function with streaming">
+      <test-set total-tests="3"
+                name="sf-filter"
+                description="fn:filter() function with streaming">
          <xslt3-specific count="3"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="leading-lone-slash" count="1"/>
+            <key name="NamedFunctionRef" count="3"/>
+            <key name="XTSE3430" count="1"/>
+            <key name="stylesheet-function" count="3"/>
+            <key name="xsl:function" count="3"/>
+            <key name="PathExpr" count="3"/>
+            <key name="_WRONG:test-is-streamable" count="1"/>
+            <key name="grounded" count="1"/>
+            <key name="striding-then-grounded" count="2"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="1"/>
+            <key name="SimpleMapExpr" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="20" name="sf-fold-left" description="fold-left() function with streaming">
+      <test-set total-tests="20"
+                name="sf-fold-left"
+                description="fold-left() function with streaming">
          <xslt3-specific count="20"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="16"/>
+            <key name="NamedFunctionRef" count="20"/>
+            <key name="PathExpr" count="20"/>
+            <key name="fn:data" count="11"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="positional-predicate" count="4"/>
+            <key name="predicate" count="3"/>
+            <key name="text-nodes" count="1"/>
+            <key name="childless-nodes" count="1"/>
+            <key name="fn:number" count="3"/>
+            <key name="ParenthesizedExpr" count="2"/>
+            <key name="fn:tail" count="1"/>
+            <key name="LetExpr" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="fn:outermost" count="1"/>
+            <key name="crawling-then-striding" count="1"/>
+            <key name="MultiplicativeExpr" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="climbing-then-grounded" count="4"/>
+            <key name="attribute-axis" count="3"/>
+            <key name="xs:decimal" count="3"/>
+            <key name="fn:abs" count="1"/>
+            <key name="AxisStep" count="2"/>
+            <key name="IfExpr" count="1"/>
+            <key name="xs:date" count="1"/>
+            <key name="UnaryExpr" count="1"/>
+            <key name="AdditiveExpr" count="1"/>
+            <key name="xs:NMTOKENS" count="2"/>
+            <key name="SimpleMapExpr" count="2"/>
+            <key name="leading-lone-slash" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="1" name="sf-fold-right" description="fold-right() function with streaming: the function is streamable if the operand is grounded, despite being processed from right-to-left: see bug 24125.">
+      <test-set total-tests="1"
+                name="sf-fold-right"
+                description="fold-right() function with streaming: the function is streamable if the operand is grounded, despite being processed from right-to-left: see bug 24125.">
          <xslt3-specific count="1"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="1"/>
+            <key name="PathExpr" count="1"/>
+            <key name="fn:data" count="1"/>
+            <key name="NamedFunctionRef" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="1" name="sf-has-children" description="has-children() function with streaming">
+      <test-set total-tests="1"
+                name="sf-has-children"
+                description="has-children() function with streaming">
          <xslt3-specific count="1"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="fn:has-children" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="22" name="sf-head" description="head() function with streaming">
+      <test-set total-tests="22"
+                name="sf-head"
+                description="head() function with streaming">
          <xslt3-specific count="22"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="22"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="crawling-then-striding" count="1"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="crawling" count="1"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="2" name="sf-innermost" description="innermost() function with streaming">
+      <test-set total-tests="2"
+                name="sf-innermost"
+                description="innermost() function with streaming">
          <xslt3-specific count="2"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="fn:snapshot" count="1"/>
+            <key name="bug-24125" count="1"/>
+            <key name="leading-lone-slash" count="2"/>
+            <key name="PathExpr" count="2"/>
+            <key name="XTSE3430" count="1"/>
+            <key name="overlapping-nodes-with-transmission-usage" count="1"/>
+            <key name="crawling" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="9" name="sf-index-of" description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:result-document.">
+      <test-set total-tests="9"
+                name="sf-index-of"
+                description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:result-document.">
          <xslt3-specific count="9"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="44" name="sf-insert-before" description="insert-before() function with streaming">
-         <xslt3-specific count="44"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="38" name="sf-max" description="max() function with streaming">
-         <xslt3-specific count="38"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="38" name="sf-min" description="min() function with streaming">
-         <xslt3-specific count="38"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="27" name="sf-not" description="not() function with streaming.">
-         <xslt3-specific count="27"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="30" name="sf-one-or-more" description="one-or-more() function with streaming">
-         <xslt3-specific count="30"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-climbing" count="2"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="leading-lone-slash" count="3"/>
+            <key name="PathExpr" count="9"/>
+            <key name="striding" count="4"/>
+            <key name="grounded-variable" count="1"/>
+            <key name="empty-sequence" count="1"/>
+            <key name="fn:string" count="1"/>
+            <key name="collation-argument" count="5"/>
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="fn:outermost" count="3"/>
+            <key name="crawling-then-striding" count="3"/>
+            <key name="FOCH0002" count="4"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="26" name="sf-outermost" description="outermost() function with streaming">
-         <xslt3-specific count="26"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="22" name="sf-remove" description="remove() function with streaming">
-         <xslt3-specific count="22"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="2" name="sf-reverse" description="reverse() function with streaming">
-         <xslt3-specific count="2"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="24" name="sf-snapshot" description="Tests the snapshot() function under streaming">
-         <xslt3-specific count="24"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="3" name="sf-string-join" description="Tests the xsl:stream instruction with string-join()">
-         <xslt3-specific count="3"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="44" name="sf-subsequence" description="subsequence() function with streaming">
+      <test-set total-tests="44"
+                name="sf-insert-before"
+                description="insert-before() function with streaming">
          <xslt3-specific count="44"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="6"/>
+            <key name="leading-lone-slash" count="38"/>
+            <key name="PathExpr" count="44"/>
+            <key name="fn:data" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="fn:tokenize" count="2"/>
+            <key name="ContextItemExpr" count="4"/>
+            <key name="SimpleMapExpr" count="14"/>
+            <key name="striding" count="18"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="6"/>
+            <key name="xsl:apply-templates" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="leading-double-slash" count="6"/>
+            <key name="crawling" count="4"/>
+            <key name="text-nodes" count="4"/>
+            <key name="childless-nodes" count="4"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="4"/>
+            <key name="ancestor-or-self-axis" count="6"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="35" name="sf-sum" description="sum() function with streaming">
-         <xslt3-specific count="35"/>
+      <test-set total-tests="38"
+                name="sf-max"
+                description="max() function with streaming">
+         <xslt3-specific count="38"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding" count="13"/>
+            <key name="PathExpr" count="38"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="positional-predicate" count="4"/>
+            <key name="fn:position" count="3"/>
+            <key name="striding-then-grounded" count="17"/>
+            <key name="predicate" count="4"/>
+            <key name="fn:data" count="3"/>
+            <key name="childless-nodes" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="fn:number" count="6"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="7"/>
+            <key name="mixed-posture" count="1"/>
+            <key name="fn:tail" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="LetExpr" count="1"/>
+            <key name="leading-double-slash" count="8"/>
+            <key name="fn:outermost" count="7"/>
+            <key name="crawling-then-striding" count="7"/>
+            <key name="SimpleMapExpr" count="4"/>
+            <key name="MultiplicativeExpr" count="1"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="xs:decimal" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="AdditiveExpr" count="1"/>
+            <key name="UnaryExpr" count="1"/>
+            <key name="xs:NMTOKENS" count="2"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:date" count="2"/>
+            <key name="fn:string" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="FORG0006" count="2"/>
+            <key name="xsl:try" count="3"/>
+            <key name="error-handling" count="3"/>
+            <key name="specific-catch-clause" count="3"/>
+            <key name="leading-lone-slash" count="1"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="parent-axis" count="1"/>
+            <key name="collation-argument" count="6"/>
+            <key name="FOCH0002" count="4"/>
+            <key name="consuming-predicate" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="_IMPROVE:fix-description" count="2"/>
+            <key name="GeneralComp" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="22" name="sf-tail" description="tail() function with streaming">
-         <xslt3-specific count="22"/>
+      <test-set total-tests="38"
+                name="sf-min"
+                description="min() function with streaming">
+         <xslt3-specific count="38"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding" count="13"/>
+            <key name="PathExpr" count="38"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="positional-predicate" count="4"/>
+            <key name="fn:position" count="3"/>
+            <key name="striding-then-grounded" count="17"/>
+            <key name="predicate" count="4"/>
+            <key name="fn:data" count="3"/>
+            <key name="childless-nodes" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="fn:number" count="6"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="7"/>
+            <key name="mixed-posture" count="1"/>
+            <key name="fn:tail" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="LetExpr" count="1"/>
+            <key name="leading-double-slash" count="8"/>
+            <key name="fn:outermost" count="7"/>
+            <key name="crawling-then-striding" count="7"/>
+            <key name="SimpleMapExpr" count="4"/>
+            <key name="MultiplicativeExpr" count="1"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="xs:decimal" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="AdditiveExpr" count="1"/>
+            <key name="UnaryExpr" count="1"/>
+            <key name="xs:NMTOKENS" count="2"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:date" count="2"/>
+            <key name="fn:string" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="FORG0006" count="2"/>
+            <key name="xsl:try" count="3"/>
+            <key name="error-handling" count="3"/>
+            <key name="specific-catch-clause" count="3"/>
+            <key name="leading-lone-slash" count="1"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="parent-axis" count="1"/>
+            <key name="collation-argument" count="6"/>
+            <key name="FOCH0002" count="4"/>
+            <key name="consuming-predicate" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="_IMPROVE:fix-description" count="2"/>
+            <key name="GeneralComp" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="22" name="sf-trace" description="trace() function with streaming">
-         <xslt3-specific count="22"/>
+      <test-set total-tests="27"
+                name="sf-not"
+                description="not() function with streaming.">
+         <xslt3-specific count="27"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="PathExpr" count="26"/>
+            <key name="crawling" count="3"/>
+            <key name="motionless-predicate" count="6"/>
+            <key name="striding" count="13"/>
+            <key name="ancestor-axis" count="2"/>
+            <key name="climbing" count="2"/>
+            <key name="SimpleMapExpr" count="4"/>
+            <key name="striding-then-grounded" count="2"/>
+            <key name="attribute-axis" count="3"/>
+            <key name="striding-then-climbing" count="3"/>
+            <key name="namespace-axis" count="1"/>
+            <key name="AxisStep" count="1"/>
+            <key name="positional-predicate" count="5"/>
+            <key name="striding-then-crawling" count="1"/>
+            <key name="UnionExpr" count="2"/>
+            <key name="crawling-then-crawling" count="1"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="RangeExpr" count="1"/>
+            <key name="grounded" count="1"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="fn:remove" count="3"/>
+            <key name="fn:data" count="1"/>
+            <key name="leading-lone-slash" count="2"/>
+            <key name="empty-sequence" count="4"/>
+            <key name="ParenthesizedExpr" count="6"/>
+            <key name="_IMPROVE:fix-description" count="1"/>
+            <key name="mixed-posture" count="5"/>
+            <key name="fn:base-uri" count="1"/>
+            <key name="fn:not" count="4"/>
+            <key name="FORG0006" count="2"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+            <key name="FORG0001" count="1"/>
+            <key name="consuming-predicate" count="1"/>
+            <key name="XTSE3430" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="22" name="sf-unordered" description="unordered() function with streaming">
+      <test-set total-tests="30"
+                name="sf-one-or-more"
+                description="one-or-more() function with streaming">
+         <xslt3-specific count="30"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="25"/>
+            <key name="PathExpr" count="30"/>
+            <key name="fn:data" count="3"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="12"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="leading-double-slash" count="5"/>
+            <key name="crawling" count="2"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="4"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="3"/>
+            <key name="grounded" count="2"/>
+            <key name="FORG0004" count="8"/>
+            <key name="empty-sequence" count="4"/>
+            <key name="parent-axis" count="2"/>
+            <key name="xsl:try" count="4"/>
+            <key name="error-handling" count="4"/>
+            <key name="specific-catch-clause" count="4"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="26"
+                name="sf-outermost"
+                description="outermost() function with streaming">
+         <xslt3-specific count="26"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="26"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="crawling-then-striding" count="6"/>
+            <key name="leading-double-slash" count="7"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="crawling" count="1"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="4"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="fn:outermost" count="4"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="22"
+                name="sf-remove"
+                description="remove() function with streaming">
          <xslt3-specific count="22"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="7" name="sf-zero-or-one" description="zero-or-one() function with streaming">
-         <xslt3-specific count="7"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="3" name="si-apply-imports" description="xsl:next-match with streaming">
-         <xslt3-specific count="3"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="22"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="crawling" count="2"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="5" name="si-apply-templates" description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:apply-templates.">
-         <xslt3-specific count="5"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="45" name="si-attribute" description="xsl:attribute instruction with streaming">
-         <xslt3-specific count="45"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="2" name="si-call-template" description="xsl:call-template instruction with streaming">
+      <test-set total-tests="2"
+                name="sf-reverse"
+                description="reverse() function with streaming">
          <xslt3-specific count="2"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="fn:snapshot" count="1"/>
+            <key name="striding" count="1"/>
+            <key name="leading-lone-slash" count="2"/>
+            <key name="PathExpr" count="2"/>
+            <key name="XTSE3430" count="1"/>
+            <key name="striding-then-crawling" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="8" name="si-choose" description="xsl:choose and other conditional expressions with streaming">
+      <test-set total-tests="24"
+                name="sf-snapshot"
+                description="Tests the snapshot() function under streaming">
+         <xslt3-specific count="24"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="3"
+                name="sf-string-join"
+                description="Tests the xsl:stream instruction with string-join()">
+         <xslt3-specific count="3"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding" count="2"/>
+            <key name="leading-lone-slash" count="3"/>
+            <key name="PathExpr" count="3"/>
+            <key name="striding-then-climbing" count="1"/>
+            <key name="positional-predicate" count="1"/>
+            <key name="SimpleMapExpr" count="1"/>
+            <key name="RangeExpr" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="44"
+                name="sf-subsequence"
+                description="subsequence() function with streaming">
+         <xslt3-specific count="44"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="6"/>
+            <key name="leading-lone-slash" count="38"/>
+            <key name="PathExpr" count="44"/>
+            <key name="fn:data" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="fn:tokenize" count="2"/>
+            <key name="ContextItemExpr" count="4"/>
+            <key name="SimpleMapExpr" count="14"/>
+            <key name="striding" count="18"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="6"/>
+            <key name="xsl:apply-templates" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="leading-double-slash" count="6"/>
+            <key name="crawling" count="4"/>
+            <key name="text-nodes" count="4"/>
+            <key name="childless-nodes" count="4"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="4"/>
+            <key name="ancestor-or-self-axis" count="6"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="2"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="35"
+                name="sf-sum"
+                description="sum() function with streaming">
+         <xslt3-specific count="35"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding" count="12"/>
+            <key name="PathExpr" count="34"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="positional-predicate" count="4"/>
+            <key name="fn:position" count="3"/>
+            <key name="striding-then-grounded" count="12"/>
+            <key name="predicate" count="4"/>
+            <key name="fn:data" count="3"/>
+            <key name="childless-nodes" count="1"/>
+            <key name="text-nodes" count="1"/>
+            <key name="fn:number" count="5"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="5"/>
+            <key name="mixed-posture" count="1"/>
+            <key name="fn:tail" count="1"/>
+            <key name="ForExpr" count="1"/>
+            <key name="LetExpr" count="1"/>
+            <key name="leading-double-slash" count="10"/>
+            <key name="fn:outermost" count="7"/>
+            <key name="crawling-then-striding" count="7"/>
+            <key name="SimpleMapExpr" count="3"/>
+            <key name="MultiplicativeExpr" count="1"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="xs:decimal" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="AdditiveExpr" count="1"/>
+            <key name="UnaryExpr" count="1"/>
+            <key name="xs:NMTOKENS" count="2"/>
+            <key name="ContextItemExpr" count="5"/>
+            <key name="leading-lone-slash" count="1"/>
+            <key name="crawling-then-climbing" count="1"/>
+            <key name="parent-axis" count="1"/>
+            <key name="collation-argument" count="6"/>
+            <key name="FOCH0002" count="4"/>
+            <key name="xsl:try" count="2"/>
+            <key name="error-handling" count="2"/>
+            <key name="specific-catch-clause" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="_IMPROVE:fix-description" count="2"/>
+            <key name="GeneralComp" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="22"
+                name="sf-tail"
+                description="tail() function with streaming">
+         <xslt3-specific count="22"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="22"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="crawling" count="2"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="22"
+                name="sf-trace"
+                description="trace() function with streaming">
+         <xslt3-specific count="22"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="22"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="crawling" count="2"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="22"
+                name="sf-unordered"
+                description="unordered() function with streaming">
+         <xslt3-specific count="22"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="3"/>
+            <key name="leading-lone-slash" count="19"/>
+            <key name="PathExpr" count="22"/>
+            <key name="fn:data" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+            <key name="fn:tokenize" count="1"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="7"/>
+            <key name="striding" count="9"/>
+            <key name="fn:count" count="3"/>
+            <key name="fn:sum" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:position" count="2"/>
+            <key name="AdditiveExpr" count="3"/>
+            <key name="AxisStep" count="2"/>
+            <key name="positional-predicate" count="8"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="fn:name" count="3"/>
+            <key name="xsl:apply-templates" count="1"/>
+            <key name="xsl:copy-of" count="1"/>
+            <key name="crawling" count="2"/>
+            <key name="leading-double-slash" count="3"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="striding-then-crawling" count="2"/>
+            <key name="striding-then-climbing" count="2"/>
+            <key name="ancestor-axis" count="3"/>
+            <key name="climbing-then-climbing" count="3"/>
+            <key name="attribute-axis" count="2"/>
+            <key name="ancestor-or-self-axis" count="3"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="7"
+                name="sf-zero-or-one"
+                description="zero-or-one() function with streaming">
+         <xslt3-specific count="7"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="4"/>
+            <key name="leading-lone-slash" count="5"/>
+            <key name="fn:copy-of" count="4"/>
+            <key name="PathExpr" count="7"/>
+            <key name="predicate" count="2"/>
+            <key name="striding" count="2"/>
+            <key name="cardinality-of-one" count="3"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="empty-sequence" count="1"/>
+            <key name="FORG0003" count="1"/>
+            <key name="xsl:try" count="1"/>
+            <key name="error-handling" count="1"/>
+            <key name="specific-catch-clause" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="3"
+                name="si-apply-imports"
+                description="xsl:next-match with streaming">
+         <xslt3-specific count="3"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="xsl:import" count="3"/>
+            <key name="xsl:with-param" count="3"/>
+            <key name="tunnel-parameter" count="3"/>
+            <key name="xsl:apply-templates" count="3"/>
+            <key name="fn:outermost" count="3"/>
+            <key name="crawling-then-striding" count="3"/>
+            <key name="PathExpr" count="3"/>
+            <key name="complex-use-case" count="3"/>
+            <key name="leading-lone-slash" count="2"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="5"
+                name="si-apply-templates"
+                description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:apply-templates.">
+         <xslt3-specific count="5"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="motionless" count="2"/>
+            <key name="complex-use-case" count="2"/>
+            <key name="on-no-match-attribute" count="2"/>
+            <key name="shallow-copy" count="2"/>
+            <key name="climbing-childless" count="2"/>
+            <key name="PathExpr" count="2"/>
+            <key name="ancestor-axis" count="2"/>
+            <key name="climbing" count="2"/>
+            <key name="_IMPROVE:equal-to-previous-test" count="1"/>
+            <key name="leading-lone-slash" count="1"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="45"
+                name="si-attribute"
+                description="xsl:attribute instruction with streaming">
+         <xslt3-specific count="45"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="2"
+                name="si-call-template"
+                description="xsl:call-template instruction with streaming">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="8"
+                name="si-choose"
+                description="xsl:choose and other conditional expressions with streaming">
          <xslt3-specific count="8"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="1" name="si-conditional-content" description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:conditional-content.">
-         <xslt3-specific count="1"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="62" name="si-copy" description="xsl:copy with streaming">
+      <test-set total-tests="62"
+                name="si-copy"
+                description="xsl:copy with streaming">
          <xslt3-specific count="62"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="44" name="si-copy-of" description="xsl:copy-of with streaming">
+      <test-set total-tests="44"
+                name="si-copy-of"
+                description="xsl:copy-of with streaming">
          <xslt3-specific count="44"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="39" name="si-document" description="xsl:document with streaming">
+      <test-set total-tests="39"
+                name="si-document"
+                description="xsl:document with streaming">
          <xslt3-specific count="39"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="92" name="si-element" description="xsl:element with streaming">
+      <test-set total-tests="92"
+                name="si-element"
+                description="xsl:element with streaming">
          <xslt3-specific count="92"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="15" name="si-for-each" description="xsl:for-each with streaming">
-         <xslt3-specific count="15"/>
+      <test-set total-tests="19"
+                name="si-for-each"
+                description="xsl:for-each with streaming">
+         <xslt3-specific count="19"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="68" name="si-for-each-group" description="xsl:for-each with streaming">
+      <test-set total-tests="68"
+                name="si-for-each-group"
+                description="xsl:for-each with streaming">
          <xslt3-specific count="68"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="11" name="si-fork" description="xsl:value-of instruction with streaming">
-         <xslt3-specific count="11"/>
+      <test-set total-tests="12"
+                name="si-fork"
+                description="xsl:value-of instruction with streaming">
+         <xslt3-specific count="12"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="multiple-xsl-sequence-children" count="11"/>
+            <key name="fn:avg" count="2"/>
+            <key name="PathExpr" count="3"/>
+            <key name="xsl:value-of" count="2"/>
+            <key name="striding" count="7"/>
+            <key name="consuming" count="8"/>
+            <key name="xsl:result-document" count="1"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="fn:number" count="1"/>
+            <key name="motionless" count="2"/>
+            <key name="lre" count="1"/>
+            <key name="literals" count="1"/>
+            <key name="xsl:for-each" count="1"/>
+            <key name="AxisStep" count="4"/>
+            <key name="mixed-sweep" count="1"/>
+            <key name="xsl:try" count="1"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="XPTY0004" count="1"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="illegally-returning-streamed-nodes" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="25" name="si-iterate" description="xsl:iterate with streaming">
-         <xslt3-specific count="25"/>
+      <test-set total-tests="26"
+                name="si-iterate"
+                description="xsl:iterate with streaming">
+         <xslt3-specific count="26"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="12" name="si-map" description="xsl:map with streaming">
          <xslt3-specific count="12"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="6" name="si-merge" description="xsl:merge instruction with streaming">
+      <test-set total-tests="6"
+                name="si-merge"
+                description="xsl:merge instruction with streaming">
          <xslt3-specific count="6"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="2" name="si-next-match" description="xsl:next-match with streaming">
+      <test-set total-tests="2"
+                name="si-next-match"
+                description="xsl:next-match with streaming">
          <xslt3-specific count="2"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="40" name="si-result-document" description="Tests xsl:stream instruction with xsl:result-document.">
+      <test-set total-tests="33"
+                name="si-on-empty"
+                description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-empty.">
+         <xslt3-specific count="33"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="35"
+                name="si-on-non-empty"
+                description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-non-empty.">
+         <xslt3-specific count="35"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="40"
+                name="si-result-document"
+                description="Tests xsl:stream instruction with xsl:result-document.">
          <xslt3-specific count="40"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="46" name="si-try" description="xsl:try/xsl:catch instruction with streaming">
+      <test-set total-tests="46"
+                name="si-try"
+                description="xsl:try/xsl:catch instruction with streaming">
          <xslt3-specific count="46"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="36" name="si-value-of" description="xsl:value-of instruction with streaming">
+      <test-set total-tests="36"
+                name="si-value-of"
+                description="xsl:value-of instruction with streaming">
          <xslt3-specific count="36"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="91" name="si-LRE" description="Literal result elements with streaming">
-         <xslt3-specific count="91"/>
+      <test-set total-tests="21"
+                name="si-where-populated"
+                description="Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:where-populated.">
+         <xslt3-specific count="21"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="3" name="su-unclassified" description="Streamable stylesheet functions: category &#x22;unclassified&#x22;">
+      <test-set total-tests="90"
+                name="si-LRE"
+                description="Literal result elements with streaming">
+         <xslt3-specific count="90"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="3"
+                name="su-unclassified"
+                description="Streamable stylesheet functions: category &#34;unclassified&#34;">
          <xslt3-specific count="3"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="8" name="sx-ArithmeticExpr" description="Arithmetic expressions with streaming">
+      <test-set total-tests="8"
+                name="sx-ArithmeticExpr"
+                description="Arithmetic expressions with streaming">
          <xslt3-specific count="8"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="46" name="sx-CommaExpr" description="comma expression function with streaming">
+      <test-set total-tests="46"
+                name="sx-CommaExpr"
+                description="comma expression function with streaming">
          <xslt3-specific count="46"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="striding-then-grounded" count="6"/>
+            <key name="leading-lone-slash" count="38"/>
+            <key name="PathExpr" count="46"/>
+            <key name="fn:data" count="2"/>
+            <key name="ParenthesizedExpr" count="46"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="fn:tokenize" count="2"/>
+            <key name="ContextItemExpr" count="4"/>
+            <key name="SimpleMapExpr" count="14"/>
+            <key name="mixed-posture" count="40"/>
+            <key name="striding" count="18"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="6"/>
+            <key name="xsl:apply-templates" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="crawling" count="4"/>
+            <key name="leading-double-slash" count="8"/>
+            <key name="text-nodes" count="4"/>
+            <key name="childless-nodes" count="4"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ancestor-or-self-axis" count="8"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="4"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="5" name="sx-ForExpr" description="for expressions with streaming">
+      <test-set total-tests="5"
+                name="sx-ForExpr"
+                description="for expressions with streaming">
          <xslt3-specific count="5"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="47" name="sx-exceptExpr" description="except expression function with streaming">
+      <test-set total-tests="47"
+                name="sx-ExceptExpr"
+                description="except expression function with streaming">
          <xslt3-specific count="47"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="ParenthesizedExpr" count="41"/>
+            <key name="mixed-posture" count="40"/>
+            <key name="striding" count="16"/>
+            <key name="leading-lone-slash" count="29"/>
+            <key name="PathExpr&#xA;" count="21"/>
+            <key name="" count="328"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="motionless-predicate&#xA;" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="PathExpr" count="20"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="striding&#xA;" count="2"/>
+            <key name="SimpleMapExpr" count="12"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="4"/>
+            <key name="xsl:apply-templates&#xA;" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="crawling" count="4"/>
+            <key name="leading-double-slash" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes&#xA;" count="2"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="leading-lone-slash&#xA;" count="4"/>
+            <key name="childless-nodes" count="2"/>
+            <key name="text-nodes&#xA;" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="fn:name&#xA;" count="2"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ancestor-or-self-axis" count="8"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="4"/>
+            <key name="leading-double-slash&#xA;" count="4"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="2" name="sx-FunctionCall" description="Tests the xsl:stream instruction with calls to user-defined functions.">
+      <test-set total-tests="2"
+                name="sx-FunctionCall"
+                description="Tests the xsl:stream instruction with calls to user-defined functions.">
          <xslt3-specific count="2"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="_WRONG:revisit-after-streamable-functions" count="2"/>
+            <key name="striding" count="1"/>
+            <key name="leading-lone-slash" count="1"/>
+            <key name="PathExpr" count="2"/>
+            <key name="motionless-predicate" count="1"/>
+            <key name="crawling" count="1"/>
+            <key name="leading-double-slash" count="1"/>
+            <key name="SimpleMapExpr" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-eq" description="&#x22;=&#x22; operator with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-eq"
+                description="&#34;=&#34; operator with streaming">
          <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-ge" description="&#x22;&gt;=&#x22; operator with streaming">
-         <xslt3-specific count="52"/>
-         <xslt2-specific count="0"/>
-         <xslt-other count="0"/>
-      </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-gt" description="&#x22;&gt;&#x22; operator with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-ge"
+                description="&#34;&gt;=&#34; operator with streaming">
          <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-le" description="&#x22;&lt;=&#x22; operator with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-gt"
+                description="&#34;&gt;&#34; operator with streaming">
          <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-lt" description="&#x22;&gt;&#x22; operator with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-le"
+                description="&#34;&lt;=&#34; operator with streaming">
          <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="52" name="sx-GeneralComp-ne" description="&#x22;!=&#x22; operator with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-lt"
+                description="&#34;&gt;&#34; operator with streaming">
          <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="66" name="sx-IfExpr" description="if() expression function with streaming">
+      <test-set total-tests="52"
+                name="sx-GeneralComp-ne"
+                description="&#34;!=&#34; operator with streaming">
+         <xslt3-specific count="52"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="GeneralComp" count="50"/>
+            <key name="striding" count="30"/>
+            <key name="PathExpr" count="52"/>
+            <key name="motionless-predicate" count="4"/>
+            <key name="positional-predicate" count="7"/>
+            <key name="fn:position" count="7"/>
+            <key name="striding-then-grounded" count="14"/>
+            <key name="predicate" count="6"/>
+            <key name="fn:data" count="4"/>
+            <key name="text-nodes" count="2"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="fn:number" count="8"/>
+            <key name="empty-sequence" count="2"/>
+            <key name="ParenthesizedExpr" count="4"/>
+            <key name="_IMPROVE:fix-description" count="4"/>
+            <key name="fn:tail" count="2"/>
+            <key name="ForExpr" count="2"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="fn:outermost" count="2"/>
+            <key name="crawling-then-striding" count="2"/>
+            <key name="SimpleMapExpr" count="16"/>
+            <key name="climbing" count="2"/>
+            <key name="MultiplicativeExpr" count="2"/>
+            <key name="fn:copy-of" count="2"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="xs:decimal" count="16"/>
+            <key name="AxisStep" count="4"/>
+            <key name="IfExpr" count="2"/>
+            <key name="AdditiveExpr" count="2"/>
+            <key name="xs:NMTOKENS" count="14"/>
+            <key name="leading-lone-slash" count="12"/>
+            <key name="variable-reference" count="4"/>
+            <key name="sequence-comparison" count="6"/>
+            <key name="FORG0001" count="2"/>
+            <key name="XPTY0004" count="2"/>
+            <key name="fn:last" count="1"/>
+            <key name="striding-then-roaming" count="2"/>
+            <key name="XTSE3430" count="2"/>
+            <key name="consuming-predicate" count="2"/>
+         </keywords>
+      </test-set>
+      <test-set total-tests="66"
+                name="sx-IfExpr"
+                description="if() expression function with streaming">
          <xslt3-specific count="66"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="choice-operand-group" count="66"/>
+            <key name="choices-motionless-motionless-consuming" count="23"/>
+            <key name="striding-then-grounded" count="9"/>
+            <key name="leading-lone-slash" count="57"/>
+            <key name="PathExpr" count="66"/>
+            <key name="fn:data" count="3"/>
+            <key name="fn:copy-of" count="3"/>
+            <key name="fn:tokenize" count="3"/>
+            <key name="ContextItemExpr" count="6"/>
+            <key name="SimpleMapExpr" count="21"/>
+            <key name="striding" count="27"/>
+            <key name="fn:count" count="9"/>
+            <key name="fn:sum" count="3"/>
+            <key name="motionless-predicate" count="3"/>
+            <key name="fn:position" count="6"/>
+            <key name="AdditiveExpr" count="9"/>
+            <key name="AxisStep" count="6"/>
+            <key name="positional-predicate" count="24"/>
+            <key name="xsl:for-each" count="3"/>
+            <key name="fn:name" count="9"/>
+            <key name="xsl:apply-templates" count="3"/>
+            <key name="xsl:copy-of" count="3"/>
+            <key name="crawling" count="6"/>
+            <key name="leading-double-slash" count="9"/>
+            <key name="text-nodes" count="6"/>
+            <key name="childless-nodes" count="6"/>
+            <key name="striding-then-crawling" count="6"/>
+            <key name="striding-then-climbing" count="6"/>
+            <key name="ancestor-axis" count="12"/>
+            <key name="climbing-then-climbing" count="9"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ancestor-or-self-axis" count="11"/>
+            <key name="climbing" count="2"/>
+            <key name="crawling-then-climbing" count="3"/>
+            <key name="choices-motionless-consuming-consuming" count="21"/>
+            <key name="fn:outermost" count="1"/>
+            <key name="crawling-then-striding" count="1"/>
+            <key name="choices-consuming-motionless-motionless" count="22"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="46" name="sx-intersectExpr" description="intersect expression function with streaming">
+      <test-set total-tests="46"
+                name="sx-IntersectExpr"
+                description="intersect expression function with streaming">
          <xslt3-specific count="46"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="ParenthesizedExpr" count="41"/>
+            <key name="mixed-posture" count="40"/>
+            <key name="striding" count="18"/>
+            <key name="leading-lone-slash" count="33"/>
+            <key name="PathExpr" count="41"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="12"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="6"/>
+            <key name="xsl:apply-templates" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="crawling" count="4"/>
+            <key name="leading-double-slash" count="8"/>
+            <key name="text-nodes" count="4"/>
+            <key name="childless-nodes" count="4"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ancestor-or-self-axis" count="8"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="4"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+         </keywords>
       </test-set>
-      <test-set total-tests="23" name="sx-InstanceofExpr" description="&#x22;instance of&#x22; expression with streaming">
+      <test-set total-tests="23"
+                name="sx-InstanceofExpr"
+                description="&#34;instance of&#34; expression with streaming">
          <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="11" name="sx-MapExpr" description="XPath map{} constructor expression with streaming">
+      <test-set total-tests="11"
+                name="sx-MapExpr"
+                description="XPath map{} constructor expression with streaming">
          <xslt3-specific count="11"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="10" name="sx-QuantifiedExpr" description="Some/Every expressions with streaming">
+      <test-set total-tests="10"
+                name="sx-QuantifiedExpr"
+                description="Some/Every expressions with streaming">
          <xslt3-specific count="10"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="23" name="sx-TreatExpr" description="&#x22;treat as&#x22; expression with streaming">
+      <test-set total-tests="11"
+                name="sx-SimpleMappingExpr"
+                description="Bang operator with streaming">
+         <xslt3-specific count="11"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="23"
+                name="sx-TreatExpr"
+                description="&#34;treat as&#34; expression with streaming">
          <xslt3-specific count="23"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="46" name="sx-unionExpr" description="union expression function with streaming">
+      <test-set total-tests="46"
+                name="sx-UnionExpr"
+                description="union expression function with streaming">
          <xslt3-specific count="46"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()">
+            <key name="ParenthesizedExpr" count="41"/>
+            <key name="mixed-posture" count="40"/>
+            <key name="striding" count="18"/>
+            <key name="leading-lone-slash" count="33"/>
+            <key name="PathExpr" count="41"/>
+            <key name="fn:count" count="6"/>
+            <key name="fn:sum" count="2"/>
+            <key name="motionless-predicate" count="2"/>
+            <key name="fn:position" count="4"/>
+            <key name="AdditiveExpr" count="6"/>
+            <key name="ContextItemExpr" count="2"/>
+            <key name="SimpleMapExpr" count="12"/>
+            <key name="AxisStep" count="4"/>
+            <key name="positional-predicate" count="16"/>
+            <key name="xsl:for-each" count="2"/>
+            <key name="fn:name" count="6"/>
+            <key name="xsl:apply-templates" count="2"/>
+            <key name="xsl:copy-of" count="2"/>
+            <key name="crawling" count="4"/>
+            <key name="leading-double-slash" count="8"/>
+            <key name="text-nodes" count="4"/>
+            <key name="childless-nodes" count="4"/>
+            <key name="striding-then-crawling" count="4"/>
+            <key name="striding-then-climbing" count="4"/>
+            <key name="ancestor-axis" count="6"/>
+            <key name="climbing-then-climbing" count="6"/>
+            <key name="attribute-axis" count="6"/>
+            <key name="ancestor-or-self-axis" count="8"/>
+            <key name="climbing" count="4"/>
+            <key name="crawling-then-climbing" count="4"/>
+            <key name="striding-then-grounded" count="1"/>
+            <key name="fn:copy-of" count="1"/>
+         </keywords>
       </test-set>
    </category>
    <category name="Typing and schema">
-      <overview total-tests-in-category="770">
-         <xslt3-specific count="90"/>
+      <overview total-tests-in-category="771">
+         <xslt3-specific count="91"/>
          <xslt2-specific count="306"/>
          <xslt-other count="374"/>
       </overview>
@@ -1229,41 +4198,90 @@
          <xslt3-specific count="0"/>
          <xslt2-specific count="23"/>
          <xslt-other count="89"/>
+         <keywords use-when="false()">
+            <key name="fn:true" count="18"/>
+            <key name="xsl:value-of" count="110"/>
+            <key name="fn:codepoint-equal" count="1"/>
+            <key name="string-literal" count="2"/>
+            <key name="AndExpr" count="7"/>
+            <key name="fn:not" count="11"/>
+            <key name="OrExpr" count="7"/>
+            <key name="fn:boolean" count="16"/>
+            <key name="empty-string" count="4"/>
+            <key name="GeneralComp" count="68"/>
+            <key name="fn:lang" count="2"/>
+            <key name="fn:false" count="22"/>
+            <key name="numeric-literals" count="45"/>
+            <key name="fn:number" count="2"/>
+            <key name="string-literals" count="34"/>
+            <key name="xs:boolean" count="2"/>
+            <key name="ValueComp" count="4"/>
+            <key name="lre" count="2"/>
+            <key name="avt" count="2"/>
+            <key name="MultiplicativeExpr" count="5"/>
+            <key name="AxisStep" count="2"/>
+            <key name="variable-reference" count="14"/>
+            <key name="PathExpr" count="3"/>
+            <key name="ForExpr" count="2"/>
+            <key name="sequence-comparison" count="22"/>
+            <key name="leading-double-slash" count="2"/>
+            <key name="xs:anyURI" count="1"/>
+            <key name="fn:count" count="2"/>
+            <key name="xs:integer" count="1"/>
+            <key name="empty-sequence" count="4"/>
+            <key name="stylesheet-function" count="1"/>
+            <key name="xsl:function" count="1"/>
+            <key name="NodeComp" count="4"/>
+            <key name="fn:exists" count="1"/>
+            <key name="fn:compare" count="1"/>
+            <key name="text-node" count="1"/>
+            <key name="xsl:if" count="1"/>
+            <key name="xs:string" count="7"/>
+            <key name="backwards-compatibility-mode" count="2"/>
+            <key name="predicate" count="7"/>
+         </keywords>
       </test-set>
       <test-set total-tests="138" name="date" description="Tests date">
          <xslt3-specific count="40"/>
          <xslt2-specific count="98"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="36" name="maps" description="Tests maps">
-         <xslt3-specific count="36"/>
+      <test-set total-tests="37" name="maps" description="Tests maps">
+         <xslt3-specific count="37"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="217" name="namespace" description="Tests namespace">
          <xslt3-specific count="8"/>
          <xslt2-specific count="69"/>
          <xslt-other count="140"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="32" name="node" description="Tests node">
          <xslt3-specific count="0"/>
          <xslt2-specific count="9"/>
          <xslt-other count="23"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="23" name="notation" description="Tests notation">
          <xslt3-specific count="4"/>
          <xslt2-specific count="19"/>
          <xslt-other count="0"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="133" name="string" description="Tests string">
          <xslt3-specific count="0"/>
          <xslt2-specific count="12"/>
          <xslt-other count="121"/>
+         <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="79" name="type" description="Tests type">
          <xslt3-specific count="2"/>
          <xslt2-specific count="76"/>
          <xslt-other count="1"/>
+         <keywords use-when="false()"/>
       </test-set>
    </category>
 </report>
--- a/admin/report-output.xslt	Sat Dec 22 23:46:54 2018 +0100
+++ b/admin/report-output.xslt	Sat Dec 22 23:49:44 2018 +0100
@@ -25,24 +25,25 @@
                     { 
                         width: 60px; 
                         border: 1px solid black;
+                        border-right: 1px dotted grey;
+                        border-left:  1px dotted grey;
                         padding: 2px;
-                        text-align: right;
+                        text-align: center;
                     }
                     .head th { text-align: left } 
                     th + th,
                     td + th {
-                        border-right: none;
+                        border-right: none;                        
                     }
-                    th + td,
+                    /*th + td,
                     th + td + td {  
                     border-left: none; 
                     border-right: none 
+                    }*/
+                    th + td + td + td + td + td,
+                    th + td + td + td + td + td + td + td + td + td { 
+                        font-weight: bold;                        
                     }
-                    th + td + td + td {  
-                        border-left: none; 
-                    }
-                    th + td + td + td + td + td { font-weight: bold; }
-                    th + td + td + td + td + td + td + td + td + td { font-weight: bold; }
                 </style>
             </head>
             <body>
@@ -52,9 +53,9 @@
                         <thead>
                             <tr class="head">
                                 <th>Name</th>
-                                <th colspan="4">XSLT 1.0</th>
-                                <th colspan="4">XSLT 2.0</th>
-                                <th colspan="4">XSLT 3.0</th>
+                                <th>1.0+</th>
+                                <th colspan="3">XSLT 2.0</th>
+                                <th colspan="2">XSLT 3.0</th>
                                 <th colspan="2">Unspecified</th>
                             </tr>
                         </thead>
@@ -62,23 +63,20 @@
                             <tr class="head" >
                                 <th>&#xA0;</th>
                                 <th>all</th>
-                                <th>spec</th>
-                                <th>back</th>
-                                <th>for</th>
                                 <th>all</th>
-                                <th>spec</th>
-                                <th>back</th>
-                                <th>for</th>
+                                <th>only</th>
+                                <th>plus+</th>
                                 <th>all</th>
-                                <th>spec</th>
-                                <th>back</th>
-                                <th>for</th>
-                                <th>nospec</th>
+                                <th>plus+</th>
                                 <th>wrong</th>
+                                <th>total</th>
                             </tr>
                             
                             
-                            <xsl:apply-templates select="report/test-set" />
+                            <xsl:apply-templates select="report/test-set" >
+                                <xsl:sort data-type="text" select="@uri" />
+                                <xsl:sort data-type="text" select="@name" />
+                            </xsl:apply-templates>
                         </tbody>
                     </table>
                 </div>
@@ -90,7 +88,8 @@
         <tr>
             <th>
                 <a href="{@uri}" title="{@description}">
-                    <xsl:value-of select="@name" />
+                    <xsl:value-of select="replace(@uri, '.*tip/tests/([a-z]+).*', '$1')" />
+                    <xsl:value-of select="' -> ' || @name" />
                 </a>
             </th>
         
@@ -98,7 +97,7 @@
         </tr>
     </xsl:template>
     
-    <xsl:template match="xslt1 | xslt2 | xslt3">
+    <xsl:template match="xslt2 | xslt3">
         <th>
             <xsl:value-of select="@count-total" />
         </th>
@@ -106,19 +105,31 @@
             <xsl:value-of select="@count-specific" />
         </td>
         <td>
-            <xsl:value-of select="@count-backward" />
+            <xsl:value-of select="@count-forward" />
         </td>
+    </xsl:template>
+    
+    <xsl:template match="xslt3">
+        <th>
+            <xsl:value-of select="@count-total" />
+        </th>
         <td>
             <xsl:value-of select="@count-forward" />
         </td>
     </xsl:template>
     
+    <xsl:template match="xslt1 ">
+        <th>
+            <xsl:value-of select="@count-total" />
+        </th>
+    </xsl:template>
+    
     <xsl:template match="other">
         <td>
             <xsl:value-of select="@count-nospec" />
         </td>
         <td>
-            <xsl:value-of select="@count-wrongvalue" />
+            <xsl:value-of select="@count-total" />
         </td>
     </xsl:template>
 </xsl:stylesheet>
\ No newline at end of file
--- a/admin/report-overview.html	Sat Dec 22 23:46:54 2018 +0100
+++ b/admin/report-overview.html	Sat Dec 22 23:49:44 2018 +0100
@@ -57,52 +57,52 @@
          </tr>
          <tr>
             <th>All categories</th>
-            <td>4425</td>
-            <td>4421</td>
-            <td>2801</td>
-            <td>11647</td>
+            <td>5936</td>
+            <td>5659</td>
+            <td>2916</td>
+            <td>14511</td>
          </tr>
          <tr>
             <th><a href="#Attributes-xt3">Attributes</a></th>
-            <td>681</td>
-            <td>361</td>
-            <td>173</td>
-            <td>1215</td>
+            <td>687</td>
+            <td>486</td>
+            <td>175</td>
+            <td>1348</td>
          </tr>
          <tr>
             <th><a href="#Declarations-xt3">Declarations</a></th>
-            <td>513</td>
-            <td>271</td>
-            <td>154</td>
-            <td>938</td>
+            <td>518</td>
+            <td>465</td>
+            <td>155</td>
+            <td>1138</td>
          </tr>
          <tr>
             <th><a href="#Expressions-xt3">Expressions</a></th>
-            <td>183</td>
-            <td>77</td>
-            <td>434</td>
-            <td>694</td>
+            <td>194</td>
+            <td>81</td>
+            <td>438</td>
+            <td>713</td>
          </tr>
          <tr>
             <th><a href="#Functions-xt3">Functions</a></th>
-            <td>413</td>
-            <td>128</td>
-            <td>387</td>
-            <td>928</td>
+            <td>418</td>
+            <td>472</td>
+            <td>388</td>
+            <td>1278</td>
          </tr>
          <tr>
             <th><a href="#Instructions-xt3">Instructions</a></th>
-            <td>581</td>
-            <td>373</td>
-            <td>263</td>
-            <td>1217</td>
+            <td>605</td>
+            <td>549</td>
+            <td>370</td>
+            <td>1524</td>
          </tr>
          <tr>
             <th><a href="#Miscellaneous-xt3">Miscellaneous</a></th>
-            <td>1748</td>
-            <td>1159</td>
+            <td>3208</td>
+            <td>1269</td>
             <td>97</td>
-            <td>3004</td>
+            <td>4574</td>
          </tr>
          <tr>
             <th><a href="#Posture%20and%20Sweep-xt3">Posture and Sweep</a></th>
@@ -114,16 +114,16 @@
          <tr>
             <th><a href="#Streaming-xt3">Streaming</a></th>
             <td>0</td>
-            <td>1962</td>
-            <td>0</td>
-            <td>1962</td>
+            <td>2241</td>
+            <td>0</td>
+            <td>2241</td>
          </tr>
          <tr>
             <th><a href="#Typing%20and%20schema-xt3">Typing and schema</a></th>
             <td>306</td>
-            <td>90</td>
+            <td>96</td>
             <td>374</td>
-            <td>770</td>
+            <td>776</td>
          </tr>
       </table>
       <table style="border-style:collapse;border:1pt grey solid;border-spacing: 0;">
@@ -134,35 +134,35 @@
          </tr>
          <tr>
             <th>All features</th>
-            <td>4627</td>
+            <td>5721</td>
          </tr>
          <tr>
             <th><a href="#Packages">Packages</a></th>
-            <td>93</td>
+            <td>181</td>
          </tr>
          <tr>
             <th><a href="#Streaming">Streaming</a></th>
-            <td>2881</td>
+            <td>3160</td>
          </tr>
          <tr>
             <th><a href="#Declarations">Declarations</a></th>
-            <td>147</td>
+            <td>217</td>
          </tr>
          <tr>
             <th><a href="#Instructions">Instructions</a></th>
-            <td>436</td>
+            <td>604</td>
          </tr>
          <tr>
             <th><a href="#Attributes">Attributes</a></th>
-            <td>306</td>
+            <td>356</td>
          </tr>
          <tr>
             <th><a href="#Stylesheet%20initialization">Stylesheet initialization</a></th>
-            <td>9</td>
+            <td>38</td>
          </tr>
          <tr>
             <th><a href="#Functions">Functions</a></th>
-            <td>224</td>
+            <td>505</td>
          </tr>
          <tr>
             <th><a href="#Maps">Maps</a></th>
@@ -170,7 +170,7 @@
          </tr>
          <tr>
             <th><a href="#Other">Other</a></th>
-            <td>479</td>
+            <td>608</td>
          </tr>
       </table>
       <table>
@@ -182,15 +182,15 @@
          </tr>
          <tr>
             <th>Packages - package</th>
-            <td>8</td>
+            <td>43</td>
          </tr>
          <tr>
             <th>Packages - use-package</th>
-            <td>30</td>
+            <td>34</td>
          </tr>
          <tr>
             <th>Packages - override</th>
-            <td>40</td>
+            <td>89</td>
          </tr>
          <tr>
             <th>Packages - xquery</th>
@@ -202,15 +202,15 @@
          </caption>
          <tr>
             <th>Streaming - instructions</th>
-            <td>653</td>
+            <td>801</td>
          </tr>
          <tr>
             <th>Streaming - functions</th>
-            <td>661</td>
+            <td>689</td>
          </tr>
          <tr>
             <th>Streaming - expressions</th>
-            <td>645</td>
+            <td>679</td>
          </tr>
          <tr>
             <th>Streaming - posture and sweep</th>
@@ -218,7 +218,7 @@
          </tr>
          <tr>
             <th>Streaming - other</th>
-            <td>3</td>
+            <td>72</td>
          </tr>
       </table>
       <table>
@@ -226,11 +226,11 @@
          </caption>
          <tr>
             <th>Accumulators</th>
-            <td>44</td>
+            <td>66</td>
          </tr>
          <tr>
             <th>Mode declarations</th>
-            <td>69</td>
+            <td>109</td>
          </tr>
          <tr>
             <th>Import declaration order relaxation</th>
@@ -242,7 +242,7 @@
          </tr>
          <tr>
             <th>Global context item declaration</th>
-            <td>3</td>
+            <td>11</td>
          </tr>
       </table>
       <table>
@@ -250,7 +250,7 @@
          </caption>
          <tr>
             <th>Try / catch</th>
-            <td>27</td>
+            <td>31</td>
          </tr>
          <tr>
             <th>Try / catch - rollback-output</th>
@@ -258,23 +258,23 @@
          </tr>
          <tr>
             <th>Iteration (xsl:iterate)</th>
-            <td>34</td>
+            <td>35</td>
          </tr>
          <tr>
             <th>Dynamic evaluation (xsl:evaluate)</th>
-            <td>43</td>
+            <td>47</td>
          </tr>
          <tr>
             <th>Assertions (xsl:assert)</th>
-            <td>6</td>
+            <td>10</td>
          </tr>
          <tr>
             <th>Merging (xsl:merge, incl strm)</th>
-            <td>70</td>
+            <td>94</td>
          </tr>
          <tr>
             <th>Conditional content construction (all)</th>
-            <td>118</td>
+            <td>182</td>
          </tr>
          <tr>
             <th>Conditional content construction - conditional-content</th>
@@ -282,11 +282,11 @@
          </tr>
          <tr>
             <th>Conditional content construction - on-empty</th>
-            <td>38</td>
+            <td>98</td>
          </tr>
          <tr>
             <th>Conditional content construction - on-non-empty</th>
-            <td>10</td>
+            <td>14</td>
          </tr>
          <tr>
             <th>Enhancements to analyze-string</th>
@@ -298,7 +298,7 @@
          </tr>
          <tr>
             <th>Number (xsl:number format-number) enhancements</th>
-            <td>10</td>
+            <td>13</td>
          </tr>
       </table>
       <table>
@@ -306,7 +306,7 @@
          </caption>
          <tr>
             <th>Declared modes</th>
-            <td>0</td>
+            <td>14</td>
          </tr>
          <tr>
             <th>Decimal format with exponent-separator</th>
@@ -322,7 +322,7 @@
          </tr>
          <tr>
             <th>Select attribute on copy instruction</th>
-            <td>30</td>
+            <td>31</td>
          </tr>
          <tr>
             <th>Static variables and parameters</th>
@@ -330,7 +330,7 @@
          </tr>
          <tr>
             <th>Cache, override, identity attributes on function declaration</th>
-            <td>28</td>
+            <td>53</td>
          </tr>
          <tr>
             <th>Shadow attributes</th>
@@ -338,11 +338,11 @@
          </tr>
          <tr>
             <th>Use-when enhancements</th>
-            <td>19</td>
+            <td>22</td>
          </tr>
          <tr>
             <th>Error-code attribute on message</th>
-            <td>8</td>
+            <td>10</td>
          </tr>
          <tr>
             <th>Html-version attribute on xsl:output/result-document (HTML5 support)</th>
@@ -358,7 +358,7 @@
          </tr>
          <tr>
             <th>Suppress-indentation attribute on xsl:output/result-document</th>
-            <td>128</td>
+            <td>133</td>
          </tr>
          <tr>
             <th>Disable-output-escaping silently ignored</th>
@@ -374,7 +374,7 @@
          </caption>
          <tr>
             <th>Initial function</th>
-            <td>5</td>
+            <td>34</td>
          </tr>
          <tr>
             <th>Initial template (xsl:initial-template)</th>
@@ -390,7 +390,7 @@
          </caption>
          <tr>
             <th>Higher order functions</th>
-            <td>70</td>
+            <td>72</td>
          </tr>
          <tr>
             <th>New function current-output-uri</th>
@@ -402,23 +402,23 @@
          </tr>
          <tr>
             <th>New function copy-of</th>
-            <td>22</td>
+            <td>23</td>
          </tr>
          <tr>
             <th>New function json-to-xml</th>
-            <td>52</td>
+            <td>60</td>
          </tr>
          <tr>
             <th>New function snapshot</th>
-            <td>33</td>
+            <td>41</td>
          </tr>
          <tr>
             <th>New function stream-available</th>
-            <td>5</td>
+            <td>6</td>
          </tr>
          <tr>
             <th>New function xml-to-json</th>
-            <td>28</td>
+            <td>115</td>
          </tr>
          <tr>
             <th>Enhancements on function deep-equal (maps support)</th>
@@ -426,11 +426,11 @@
          </tr>
          <tr>
             <th>Enhancements on function document (new error)</th>
-            <td>0</td>
+            <td>2</td>
          </tr>
          <tr>
             <th>Enhancements on function format-number (moved, but new formats)</th>
-            <td>2</td>
+            <td>4</td>
          </tr>
          <tr>
             <th>Enhancements on function key (composite keys)</th>
@@ -442,7 +442,7 @@
          </tr>
          <tr>
             <th>Enhancements on function system-property (new properties)</th>
-            <td>4</td>
+            <td>174</td>
          </tr>
          <tr>
             <th>Enhancements on function unparsed-entity-uri (arity zero)</th>
@@ -502,11 +502,11 @@
          </caption>
          <tr>
             <th>Expand text, text value templates</th>
-            <td>29</td>
+            <td>52</td>
          </tr>
          <tr>
             <th>Pattern enhancements</th>
-            <td>66</td>
+            <td>69</td>
          </tr>
          <tr>
             <th>EQName adoption</th>
@@ -514,7 +514,7 @@
          </tr>
          <tr>
             <th>JSON support (total)</th>
-            <td>80</td>
+            <td>175</td>
          </tr>
          <tr>
             <th>Default collation enhancements (allowed on any element)</th>
@@ -526,7 +526,7 @@
          </tr>
          <tr>
             <th>New error conditions and codes</th>
-            <td>152</td>
+            <td>155</td>
          </tr>
          <tr>
             <th>Recoverable errors do not exist anymore</th>
@@ -534,7 +534,7 @@
          </tr>
          <tr>
             <th>Enhancements to serialization (all)</th>
-            <td>128</td>
+            <td>133</td>
          </tr>
          <tr>
             <th>Type attribute validation with complex types and copy/copy-of (XTTE1535)</th>
@@ -550,45 +550,59 @@
          </caption>
          <tr>
             <th>Attributes (all)</th>
-            <td>681</td>
-            <td>361</td>
-            <td>173</td>
-            <td>1215</td>
+            <td>687</td>
+            <td>486</td>
+            <td>175</td>
+            <td>1348</td>
          </tr>
          <tr>
             <th><a href="#Tests%20as-keywords">Tests as</a></th>
-            <td>194</td>
-            <td>0</td>
-            <td>0</td>
-            <td>194</td>
+            <td>195</td>
+            <td>0</td>
+            <td>0</td>
+            <td>195</td>
          </tr>
          <tr>
             <th><a href="#Tests%20Attribute%20Value%20Templates-keywords">Tests Attribute Value Templates</a></th>
             <td>18</td>
+            <td>2</td>
+            <td>14</td>
+            <td>34</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20the%20effect%20of%20the%20declared-modes%20attribute%20on%20xsl%3Apackage%20%28or%20its%20absence%29-keywords">Tests the effect of the declared-modes attribute on xsl:package (or its absence)</a></th>
             <td>0</td>
             <td>14</td>
-            <td>32</td>
+            <td>0</td>
+            <td>14</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20XSLT%203.0%20expand-text%20attribute%20and%20content%20value%20templates-keywords">Tests the XSLT 3.0 expand-text attribute and content value templates</a></th>
             <td>0</td>
-            <td>29</td>
-            <td>0</td>
-            <td>29</td>
+            <td>52</td>
+            <td>0</td>
+            <td>52</td>
          </tr>
          <tr>
             <th><a href="#Tests%20match-keywords">Tests match</a></th>
-            <td>141</td>
-            <td>66</td>
-            <td>40</td>
-            <td>247</td>
+            <td>144</td>
+            <td>69</td>
+            <td>41</td>
+            <td>254</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20use%20of%20modes%20in%20xsl%3Atemplate%20and%20xsl%3Aapply-templates-keywords">Tests the use of modes in xsl:template and xsl:apply-templates</a></th>
             <td>18</td>
-            <td>68</td>
+            <td>108</td>
             <td>15</td>
-            <td>101</td>
+            <td>141</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20the%20effect%20of%20the%20package-version%20attribute-keywords">Tests the effect of the package-version attribute</a></th>
+            <td>1</td>
+            <td>32</td>
+            <td>1</td>
+            <td>34</td>
          </tr>
          <tr>
             <th><a href="#Tests%20select-keywords">Tests select</a></th>
@@ -614,9 +628,9 @@
          <tr>
             <th><a href="#Tests%20streamable%20apply-templates%20and%20modes-keywords">Tests streamable apply-templates and modes</a></th>
             <td>0</td>
-            <td>125</td>
-            <td>0</td>
-            <td>125</td>
+            <td>131</td>
+            <td>0</td>
+            <td>131</td>
          </tr>
          <tr>
             <th><a href="#Tests%20strip-type-annotations-keywords">Tests strip-type-annotations</a></th>
@@ -634,24 +648,24 @@
          </tr>
          <tr>
             <th><a href="#Tests%20use-when-keywords">Tests use-when</a></th>
-            <td>82</td>
-            <td>19</td>
+            <td>79</td>
+            <td>22</td>
             <td>1</td>
             <td>102</td>
          </tr>
          <tr>
             <th><a href="#Tests%20validation-keywords">Tests validation</a></th>
-            <td>37</td>
-            <td>5</td>
-            <td>1</td>
-            <td>43</td>
+            <td>40</td>
+            <td>7</td>
+            <td>1</td>
+            <td>48</td>
          </tr>
          <tr>
             <th><a href="#Tests%20version-keywords">Tests version</a></th>
-            <td>19</td>
+            <td>20</td>
             <td>0</td>
             <td>13</td>
-            <td>32</td>
+            <td>33</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xpath-default-namespace-keywords">Tests xpath-default-namespace</a></th>
@@ -666,17 +680,24 @@
          </caption>
          <tr>
             <th>Declarations (all)</th>
-            <td>513</td>
-            <td>271</td>
-            <td>154</td>
-            <td>938</td>
+            <td>518</td>
+            <td>465</td>
+            <td>155</td>
+            <td>1138</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20xsl%3Aaccept%20in%20XSLT%203.0-keywords">Tests xsl:accept in XSLT 3.0</a></th>
+            <td>0</td>
+            <td>29</td>
+            <td>0</td>
+            <td>29</td>
          </tr>
          <tr>
             <th><a href="#Tests%20accumulator-keywords">Tests accumulator</a></th>
             <td>0</td>
-            <td>44</td>
-            <td>0</td>
-            <td>44</td>
+            <td>66</td>
+            <td>0</td>
+            <td>66</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Aattribute-set-keywords">Tests xsl:attribute-set</a></th>
@@ -687,10 +708,10 @@
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Acharacter-map%20declaration-keywords">Tests the xsl:character-map declaration</a></th>
-            <td>24</td>
-            <td>0</td>
-            <td>0</td>
-            <td>24</td>
+            <td>25</td>
+            <td>0</td>
+            <td>0</td>
+            <td>25</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Acontext-item-keywords">Tests xsl:context-item</a></th>
@@ -700,18 +721,25 @@
             <td>28</td>
          </tr>
          <tr>
+            <th><a href="#Tests%20xsl%3Aexpose%20in%20XSLT%203.0-keywords">Tests xsl:expose in XSLT 3.0</a></th>
+            <td>0</td>
+            <td>20</td>
+            <td>0</td>
+            <td>20</td>
+         </tr>
+         <tr>
             <th><a href="#Tests%20function-keywords">Tests function</a></th>
-            <td>46</td>
-            <td>28</td>
-            <td>0</td>
-            <td>74</td>
+            <td>49</td>
+            <td>53</td>
+            <td>0</td>
+            <td>102</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Aglobal-context-item-keywords">Tests xsl:global-context-item</a></th>
             <td>0</td>
-            <td>3</td>
-            <td>0</td>
-            <td>3</td>
+            <td>11</td>
+            <td>0</td>
+            <td>11</td>
          </tr>
          <tr>
             <th><a href="#Tests%20import-keywords">Tests import</a></th>
@@ -738,29 +766,29 @@
             <th><a href="#Tests%20namespace-keywords">Tests namespace</a></th>
             <td>9</td>
             <td>0</td>
-            <td>6</td>
-            <td>15</td>
+            <td>7</td>
+            <td>16</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aoutput%20declaration%2C%20and%20hence%20serialization%20generally-keywords">Tests the xsl:output declaration, and hence serialization generally</a></th>
-            <td>140</td>
-            <td>73</td>
-            <td>0</td>
-            <td>213</td>
+            <td>141</td>
+            <td>74</td>
+            <td>0</td>
+            <td>215</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Aoverride%20in%20XSLT%203.0-keywords">Tests xsl:override in XSLT 3.0</a></th>
             <td>0</td>
-            <td>40</td>
-            <td>0</td>
-            <td>40</td>
+            <td>89</td>
+            <td>0</td>
+            <td>89</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Apackage%20in%20XSLT%203.0-keywords">Tests xsl:package in XSLT 3.0</a></th>
             <td>0</td>
-            <td>8</td>
-            <td>0</td>
-            <td>8</td>
+            <td>43</td>
+            <td>0</td>
+            <td>43</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aparam%20element-keywords">Tests the xsl:param element</a></th>
@@ -786,16 +814,16 @@
          <tr>
             <th><a href="#Tests%20xsl%3Ause-package%20in%20XSLT%203.0-keywords">Tests xsl:use-package in XSLT 3.0</a></th>
             <td>0</td>
-            <td>30</td>
-            <td>0</td>
-            <td>30</td>
+            <td>34</td>
+            <td>0</td>
+            <td>34</td>
          </tr>
          <tr>
             <th><a href="#Tests%20local%20and%20global%20variables-keywords">Tests local and global variables</a></th>
             <td>28</td>
-            <td>2</td>
+            <td>3</td>
             <td>71</td>
-            <td>101</td>
+            <td>102</td>
          </tr>
       </table>
       <table>
@@ -803,10 +831,10 @@
          </caption>
          <tr>
             <th>Expressions (all)</th>
-            <td>183</td>
-            <td>77</td>
-            <td>434</td>
-            <td>694</td>
+            <td>194</td>
+            <td>81</td>
+            <td>438</td>
+            <td>713</td>
          </tr>
          <tr>
             <th><a href="#Tests%20axes-keywords">Tests axes</a></th>
@@ -831,10 +859,10 @@
          </tr>
          <tr>
             <th><a href="#Tests%20expression-keywords">Tests expression</a></th>
-            <td>48</td>
-            <td>2</td>
+            <td>50</td>
+            <td>4</td>
             <td>54</td>
-            <td>104</td>
+            <td>108</td>
          </tr>
          <tr>
             <th><a href="#Tests%20for-keywords">Tests for</a></th>
@@ -846,16 +874,16 @@
          <tr>
             <th><a href="#Tests%20higher-order-functions-keywords">Tests higher-order-functions</a></th>
             <td>0</td>
-            <td>70</td>
-            <td>0</td>
-            <td>70</td>
+            <td>72</td>
+            <td>0</td>
+            <td>72</td>
          </tr>
          <tr>
             <th><a href="#Tests%20math-keywords">Tests math</a></th>
-            <td>34</td>
-            <td>4</td>
-            <td>108</td>
-            <td>146</td>
+            <td>43</td>
+            <td>4</td>
+            <td>110</td>
+            <td>157</td>
          </tr>
          <tr>
             <th><a href="#Tests%20nodetest-keywords">Tests nodetest</a></th>
@@ -875,8 +903,8 @@
             <th><a href="#Tests%20predicate-keywords">Tests predicate</a></th>
             <td>2</td>
             <td>0</td>
-            <td>50</td>
             <td>52</td>
+            <td>54</td>
          </tr>
          <tr>
             <th><a href="#Tests%20treat-as-keywords">Tests treat-as</a></th>
@@ -912,10 +940,10 @@
          </caption>
          <tr>
             <th>Functions (all)</th>
-            <td>413</td>
-            <td>128</td>
-            <td>387</td>
-            <td>928</td>
+            <td>418</td>
+            <td>472</td>
+            <td>388</td>
+            <td>1278</td>
          </tr>
          <tr>
             <th><a href="#Tests%20accessor-keywords">Tests accessor</a></th>
@@ -925,6 +953,13 @@
             <td>38</td>
          </tr>
          <tr>
+            <th><a href="#-keywords"></a></th>
+            <td>0</td>
+            <td>29</td>
+            <td>0</td>
+            <td>29</td>
+         </tr>
+         <tr>
             <th><a href="#Tests%20base-uri-keywords">Tests base-uri</a></th>
             <td>48</td>
             <td>0</td>
@@ -940,10 +975,10 @@
          </tr>
          <tr>
             <th><a href="#Tests%20collection-keywords">Tests collection</a></th>
-            <td>4</td>
-            <td>0</td>
-            <td>0</td>
-            <td>4</td>
+            <td>6</td>
+            <td>0</td>
+            <td>0</td>
+            <td>6</td>
          </tr>
          <tr>
             <th><a href="#Tests%20core-function-keywords">Tests core-function</a></th>
@@ -955,9 +990,16 @@
          <tr>
             <th><a href="#Tests%20the%20XSLT%203.0%20copy-of%28%29%20function-keywords">Tests the XSLT 3.0 copy-of() function</a></th>
             <td>0</td>
-            <td>12</td>
-            <td>0</td>
-            <td>12</td>
+            <td>13</td>
+            <td>0</td>
+            <td>13</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20the%20current%28%29%20function-keywords">Tests the current() function</a></th>
+            <td>0</td>
+            <td>0</td>
+            <td>1</td>
+            <td>1</td>
          </tr>
          <tr>
             <th><a href="#Tests%20current-output-uri%28%29%20function%20in%20XSLT%203.0-keywords">Tests current-output-uri() function in XSLT 3.0</a></th>
@@ -976,23 +1018,23 @@
          <tr>
             <th><a href="#Tests%20the%20fn%3Adocument%20function-keywords">Tests the fn:document function</a></th>
             <td>55</td>
-            <td>0</td>
+            <td>2</td>
             <td>9</td>
-            <td>64</td>
+            <td>66</td>
          </tr>
          <tr>
             <th><a href="#Tests%20extension-functions-keywords">Tests extension-functions</a></th>
             <td>5</td>
-            <td>0</td>
-            <td>0</td>
-            <td>5</td>
+            <td>2</td>
+            <td>0</td>
+            <td>7</td>
          </tr>
          <tr>
             <th><a href="#Tests%20format-date-keywords">Tests format-date</a></th>
-            <td>35</td>
-            <td>0</td>
-            <td>0</td>
-            <td>35</td>
+            <td>36</td>
+            <td>3</td>
+            <td>0</td>
+            <td>39</td>
          </tr>
          <tr>
             <th><a href="#Tests%20format-date-en-keywords">Tests format-date-en</a></th>
@@ -1003,17 +1045,17 @@
          </tr>
          <tr>
             <th><a href="#Tests%20format-number-keywords">Tests format-number</a></th>
-            <td>31</td>
-            <td>2</td>
+            <td>32</td>
+            <td>4</td>
             <td>37</td>
-            <td>70</td>
+            <td>73</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20function-available%28%29%20function-keywords">Tests the function-available() function</a></th>
-            <td>6</td>
-            <td>1</td>
-            <td>1</td>
-            <td>8</td>
+            <td>7</td>
+            <td>2</td>
+            <td>1</td>
+            <td>10</td>
          </tr>
          <tr>
             <th><a href="#Tests%20id-keywords">Tests id</a></th>
@@ -1023,18 +1065,25 @@
             <td>40</td>
          </tr>
          <tr>
+            <th><a href="#innermost%28%29%20function%20without%20streaming-keywords">innermost() function without streaming</a></th>
+            <td>0</td>
+            <td>2</td>
+            <td>0</td>
+            <td>2</td>
+         </tr>
+         <tr>
             <th><a href="#json-to-xml%28%29%20function-keywords">json-to-xml() function</a></th>
             <td>0</td>
-            <td>52</td>
-            <td>0</td>
-            <td>52</td>
+            <td>60</td>
+            <td>0</td>
+            <td>60</td>
          </tr>
          <tr>
             <th><a href="#Test%20xsl%3Akey%20and%20the%20key%28%29%20function-keywords">Test xsl:key and the key() function</a></th>
-            <td>31</td>
+            <td>32</td>
             <td>2</td>
             <td>55</td>
-            <td>88</td>
+            <td>89</td>
          </tr>
          <tr>
             <th><a href="#Test%20the%20fn%3Anormalize-unicode%28%29%20function%20introduced%20in%20XPath%202.0%2C%20together%20with%20the%20normalization-form%20option%20on%20serialization.-keywords">Test the fn:normalize-unicode() function introduced in XPath 2.0, together with the normalization-form option on serialization.</a></th>
@@ -1044,6 +1093,13 @@
             <td>18</td>
          </tr>
          <tr>
+            <th><a href="#outermost%28%29%20function%20without%20streaming-keywords">outermost() function without streaming</a></th>
+            <td>0</td>
+            <td>26</td>
+            <td>0</td>
+            <td>26</td>
+         </tr>
+         <tr>
             <th><a href="#Tests%20the%20position%28%29%20function-keywords">Tests the position() function</a></th>
             <td>32</td>
             <td>0</td>
@@ -1052,10 +1108,10 @@
          </tr>
          <tr>
             <th><a href="#Tests%20resolve-uri%28%29%20and%20other%20functionality%20related%20to%20resolution%20of%20relative%20URIs-keywords">Tests resolve-uri() and other functionality related to resolution of relative URIs</a></th>
-            <td>22</td>
-            <td>0</td>
-            <td>0</td>
-            <td>22</td>
+            <td>21</td>
+            <td>2</td>
+            <td>0</td>
+            <td>23</td>
          </tr>
          <tr>
             <th><a href="#Tests%20root-keywords">Tests root</a></th>
@@ -1067,23 +1123,23 @@
          <tr>
             <th><a href="#Tests%20the%20snapshot%28%29%20function%20%28unstreamed%29-keywords">Tests the snapshot() function (unstreamed)</a></th>
             <td>0</td>
-            <td>9</td>
-            <td>0</td>
-            <td>9</td>
+            <td>17</td>
+            <td>0</td>
+            <td>17</td>
          </tr>
          <tr>
             <th><a href="#Tests%20stream-available%28%29%20function%20in%20XSLT%203.0-keywords">Tests stream-available() function in XSLT 3.0</a></th>
             <td>0</td>
-            <td>5</td>
-            <td>0</td>
-            <td>5</td>
+            <td>6</td>
+            <td>0</td>
+            <td>6</td>
          </tr>
          <tr>
             <th><a href="#Tests%20system-property-keywords">Tests system-property</a></th>
             <td>10</td>
-            <td>4</td>
-            <td>1</td>
-            <td>15</td>
+            <td>174</td>
+            <td>1</td>
+            <td>185</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20type-available%28%29%20function-keywords">Tests the type-available() function</a></th>
@@ -1116,9 +1172,9 @@
          <tr>
             <th><a href="#xml-to-json%28%29%20function-keywords">xml-to-json() function</a></th>
             <td>0</td>
-            <td>28</td>
-            <td>0</td>
-            <td>28</td>
+            <td>115</td>
+            <td>0</td>
+            <td>115</td>
          </tr>
       </table>
       <table>
@@ -1126,31 +1182,38 @@
          </caption>
          <tr>
             <th>Instructions (all)</th>
-            <td>581</td>
-            <td>373</td>
-            <td>263</td>
-            <td>1217</td>
+            <td>605</td>
+            <td>549</td>
+            <td>370</td>
+            <td>1524</td>
          </tr>
          <tr>
             <th><a href="#Tests%20regex-keywords">Tests regex</a></th>
-            <td>39</td>
+            <td>41</td>
             <td>8</td>
             <td>0</td>
-            <td>47</td>
+            <td>49</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20xsl%3Aapply-imports%20%28note%2C%20most%20of%20the%20tests%20for%20this%20are%20elsewhere%2C%20e.g.%20under%20%22import%22%29-keywords">Tests xsl:apply-imports (note, most of the tests for this are elsewhere, e.g. under "import")</a></th>
+            <td>0</td>
+            <td>1</td>
+            <td>0</td>
+            <td>1</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aapply-templates%20instruction.%20In%20practice%2C%20as%20indicated%20by%20the%20test%20names%2C%20most%20of%20the%20tests%20concern%20conflict%20resolution.-keywords">Tests the xsl:apply-templates instruction. In practice, as indicated by the test names, most of the tests concern conflict resolution.</a></th>
-            <td>34</td>
-            <td>6</td>
+            <td>35</td>
+            <td>7</td>
             <td>8</td>
-            <td>48</td>
+            <td>50</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aassert%20instruction%20introduced%20in%20XSLT%203.0-keywords">Tests the xsl:assert instruction introduced in XSLT 3.0</a></th>
             <td>0</td>
-            <td>6</td>
-            <td>0</td>
-            <td>6</td>
+            <td>10</td>
+            <td>0</td>
+            <td>10</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aattribute%20instruction-keywords">Tests the xsl:attribute instruction</a></th>
@@ -1162,16 +1225,16 @@
          <tr>
             <th><a href="#Tests%20call-template-keywords">Tests call-template</a></th>
             <td>14</td>
-            <td>2</td>
+            <td>3</td>
             <td>20</td>
-            <td>36</td>
+            <td>37</td>
          </tr>
          <tr>
             <th><a href="#Tests%20choose-keywords">Tests choose</a></th>
             <td>23</td>
-            <td>0</td>
-            <td>25</td>
-            <td>48</td>
+            <td>1</td>
+            <td>27</td>
+            <td>51</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Adocument%20instruction%2C%20and%20construction%20of%20document%20nodes-keywords">Tests the xsl:document instruction, and construction of document nodes</a></th>
@@ -1184,29 +1247,36 @@
             <th><a href="#Tests%20the%20xsl%3Aelement%20instruction-keywords">Tests the xsl:element instruction</a></th>
             <td>18</td>
             <td>10</td>
-            <td>0</td>
-            <td>28</td>
+            <td>1</td>
+            <td>29</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20xsl%3Awhere-populated%20instruction%20introduced%20in%20XSLT%203.0%20%28unstreamed%29.-keywords">Tests xsl:where-populated instruction introduced in XSLT 3.0 (unstreamed).</a></th>
+            <td>0</td>
+            <td>23</td>
+            <td>0</td>
+            <td>23</td>
          </tr>
          <tr>
             <th><a href="#Tests%20instructions%20that%20create%20text%2C%20comment%2C%20processing-instruction%20etc%20nodes-keywords">Tests instructions that create text, comment, processing-instruction etc nodes</a></th>
             <td>29</td>
-            <td>0</td>
-            <td>4</td>
-            <td>33</td>
+            <td>1</td>
+            <td>4</td>
+            <td>34</td>
          </tr>
          <tr>
             <th><a href="#Tests%20copy-keywords">Tests copy</a></th>
-            <td>20</td>
-            <td>30</td>
+            <td>36</td>
+            <td>31</td>
             <td>53</td>
-            <td>103</td>
+            <td>120</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Aevaluate%2C%20tests%20are%20dependent%20on%20the%20evaluation%20feature%20in%2026.6%20of%20the%20spec-keywords">Tests xsl:evaluate, tests are dependent on the evaluation feature in 26.6 of the spec</a></th>
             <td>0</td>
-            <td>43</td>
-            <td>0</td>
-            <td>43</td>
+            <td>47</td>
+            <td>0</td>
+            <td>47</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Afor-each-group%20instruction-keywords">Tests the xsl:for-each-group instruction</a></th>
@@ -1218,9 +1288,9 @@
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aiterate%20instruction%20introduced%20in%20XSLT%203.0-keywords">Tests the xsl:iterate instruction introduced in XSLT 3.0</a></th>
             <td>0</td>
-            <td>34</td>
-            <td>0</td>
-            <td>34</td>
+            <td>35</td>
+            <td>0</td>
+            <td>35</td>
          </tr>
          <tr>
             <th><a href="#Tests%20lre-keywords">Tests lre</a></th>
@@ -1232,51 +1302,51 @@
          <tr>
             <th><a href="#Tests%20the%20xsl%3Amerge%20instruction-keywords">Tests the xsl:merge instruction</a></th>
             <td>0</td>
-            <td>64</td>
-            <td>0</td>
-            <td>64</td>
+            <td>87</td>
+            <td>0</td>
+            <td>87</td>
          </tr>
          <tr>
             <th><a href="#Tests%20message-keywords">Tests message</a></th>
             <td>23</td>
-            <td>8</td>
-            <td>1</td>
-            <td>32</td>
+            <td>10</td>
+            <td>1</td>
+            <td>34</td>
          </tr>
          <tr>
             <th><a href="#Tests%20xsl%3Anext-match-keywords">Tests xsl:next-match</a></th>
-            <td>26</td>
-            <td>0</td>
-            <td>0</td>
-            <td>26</td>
+            <td>27</td>
+            <td>4</td>
+            <td>0</td>
+            <td>31</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Anumber%20instruction-keywords">Tests the xsl:number instruction</a></th>
-            <td>63</td>
-            <td>8</td>
-            <td>87</td>
-            <td>158</td>
+            <td>65</td>
+            <td>9</td>
+            <td>191</td>
+            <td>265</td>
          </tr>
          <tr>
             <th><a href="#Tests%20sequence%20constructors%20containing%20xsl%3Aon-empty%20instructions-keywords">Tests sequence constructors containing xsl:on-empty instructions</a></th>
             <td>0</td>
-            <td>10</td>
-            <td>0</td>
-            <td>10</td>
+            <td>70</td>
+            <td>0</td>
+            <td>70</td>
          </tr>
          <tr>
             <th><a href="#Tests%20sequence%20constructors%20containing%20xsl%3Aon-non-empty%20instructions-keywords">Tests sequence constructors containing xsl:on-non-empty instructions</a></th>
             <td>0</td>
-            <td>10</td>
-            <td>0</td>
-            <td>10</td>
+            <td>14</td>
+            <td>0</td>
+            <td>14</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Aresult-document%20instruction.%20Note%3A%20most%20of%20the%20tests%20concern%20serialization%3B%20very%20few%20actually%20generate%20multiple%20output%20documents.-keywords">Tests the xsl:result-document instruction. Note: most of the tests concern serialization; very few actually generate multiple output documents.</a></th>
-            <td>72</td>
-            <td>55</td>
-            <td>0</td>
-            <td>127</td>
+            <td>74</td>
+            <td>59</td>
+            <td>0</td>
+            <td>133</td>
          </tr>
          <tr>
             <th><a href="#Tests%20the%20xsl%3Asequence%20instruction%20and%20other%20expressions%20that%20construct%20sequences-keywords">Tests the xsl:sequence instruction and other expressions that construct sequences</a></th>
@@ -1288,23 +1358,23 @@
          <tr>
             <th><a href="#Tests%20sort-keywords">Tests sort</a></th>
             <td>42</td>
-            <td>4</td>
+            <td>5</td>
             <td>32</td>
-            <td>78</td>
-         </tr>
-         <tr>
-            <th><a href="#Tests%20the%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0.%20The%20tests%20in%20this%20section%20focus%20on%20variants%20of%20the%20xsl%3Astream%20instruction%20itself%2C%20and%20not%20on%20testing%20the%20streamability%20of%20its%20content.-keywords">Tests the xsl:stream instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:stream instruction itself, and not on testing the streamability of its content.</a></th>
-            <td>0</td>
-            <td>19</td>
-            <td>0</td>
-            <td>19</td>
+            <td>79</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20the%20xsl%3Asource-document%20%28streamable%3D%22yes%22%29%20instruction%20introduced%20in%20XSLT%203.0.%20The%20tests%20in%20this%20section%20focus%20on%20variants%20of%20the%20xsl%3Asource-document%20%28streamable%3D%22yes%22%29%20instruction%20itself%2C%20and%20not%20on%20testing%20the%20streamability%20of%20its%20content.-keywords">Tests the xsl:source-document (streamable="yes") instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:source-document (streamable="yes") instruction itself, and not on testing the streamability of its content.</a></th>
+            <td>0</td>
+            <td>54</td>
+            <td>0</td>
+            <td>54</td>
          </tr>
          <tr>
             <th><a href="#Tests%20try-keywords">Tests try</a></th>
             <td>5</td>
-            <td>22</td>
-            <td>0</td>
-            <td>27</td>
+            <td>26</td>
+            <td>0</td>
+            <td>31</td>
          </tr>
       </table>
       <table>
@@ -1312,10 +1382,17 @@
          </caption>
          <tr>
             <th>Miscellaneous (all)</th>
-            <td>1748</td>
-            <td>1159</td>
+            <td>3208</td>
+            <td>1269</td>
             <td>97</td>
-            <td>3004</td>
+            <td>4574</td>
+         </tr>
+         <tr>
+            <th><a href="#Set%20of%20more%20elaborate%20tests%20that%20do%20not%20necessarily%20test%20any%20specific%20aspect%2C%20but%20more%20or%20less%20a%20combination%20of%20aspects.-keywords">Set of more elaborate tests that do not necessarily test any specific aspect, but more or less a combination of aspects.</a></th>
+            <td>0</td>
+            <td>1</td>
+            <td>0</td>
+            <td>1</td>
          </tr>
          <tr>
             <th><a href="#Tests%20backwards%20compatibility%20with%20XSLT%201.0-keywords">Tests backwards compatibility with XSLT 1.0</a></th>
@@ -1341,9 +1418,9 @@
          <tr>
             <th><a href="#Tests%20that%20the%20test%20catalog%20is%20valid-keywords">Tests that the test catalog is valid</a></th>
             <td>3</td>
-            <td>2</td>
-            <td>0</td>
-            <td>5</td>
+            <td>7</td>
+            <td>0</td>
+            <td>10</td>
          </tr>
          <tr>
             <th><a href="#Tests%20collations-keywords">Tests collations</a></th>
@@ -1362,16 +1439,16 @@
          <tr>
             <th><a href="#Tests%20error%20conditions.%20This%20test%20set%20should%20include%20a%20test%20for%20every%20error%20code%20%28however%2C%20coverage%20of%20new%20XSLT%203.0%20errors%20is%20incomplete%29.-keywords">Tests error conditions. This test set should include a test for every error code (however, coverage of new XSLT 3.0 errors is incomplete).</a></th>
             <td>417</td>
-            <td>152</td>
-            <td>0</td>
-            <td>569</td>
+            <td>155</td>
+            <td>0</td>
+            <td>572</td>
          </tr>
          <tr>
             <th><a href="#Tests%20Call%20Function%20XSLT%20invocation-keywords">Tests Call Function XSLT invocation</a></th>
             <td>0</td>
-            <td>5</td>
-            <td>0</td>
-            <td>5</td>
+            <td>34</td>
+            <td>0</td>
+            <td>34</td>
          </tr>
          <tr>
             <th><a href="#Tests%20initial-mode-keywords">Tests initial-mode</a></th>
@@ -1416,6 +1493,20 @@
             <td>987</td>
          </tr>
          <tr>
+            <th><a href="#Tests%20constructing%20content%20in%20sequence%20constructors-keywords">Tests constructing content in sequence constructors</a></th>
+            <td>0</td>
+            <td>72</td>
+            <td>0</td>
+            <td>72</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20whitespace-keywords">Tests whitespace</a></th>
+            <td>1460</td>
+            <td>0</td>
+            <td>0</td>
+            <td>1460</td>
+         </tr>
+         <tr>
             <th><a href="#Tests%20whitespace-keywords">Tests whitespace</a></th>
             <td>3</td>
             <td>0</td>
@@ -1629,9 +1720,9 @@
          <tr>
             <th>Streaming (all)</th>
             <td>0</td>
-            <td>1962</td>
-            <td>0</td>
-            <td>1962</td>
+            <td>2241</td>
+            <td>0</td>
+            <td>2241</td>
          </tr>
          <tr>
             <th><a href="#avg%28%29%20function%20with%20streaming-keywords">avg() function with streaming</a></th>
@@ -1669,6 +1760,13 @@
             <td>23</td>
          </tr>
          <tr>
+            <th><a href="#current%28%29%20function%20with%20streaming-keywords">current() function with streaming</a></th>
+            <td>0</td>
+            <td>12</td>
+            <td>0</td>
+            <td>12</td>
+         </tr>
+         <tr>
             <th><a href="#deep-equal%28%29%20function%20with%20streaming-keywords">deep-equal() function with streaming</a></th>
             <td>0</td>
             <td>35</td>
@@ -1755,9 +1853,9 @@
          <tr>
             <th><a href="#insert-before%28%29%20function%20with%20streaming-keywords">insert-before() function with streaming</a></th>
             <td>0</td>
-            <td>44</td>
-            <td>0</td>
-            <td>44</td>
+            <td>52</td>
+            <td>0</td>
+            <td>52</td>
          </tr>
          <tr>
             <th><a href="#max%28%29%20function%20with%20streaming-keywords">max() function with streaming</a></th>
@@ -1832,9 +1930,9 @@
          <tr>
             <th><a href="#sum%28%29%20function%20with%20streaming-keywords">sum() function with streaming</a></th>
             <td>0</td>
-            <td>35</td>
-            <td>0</td>
-            <td>35</td>
+            <td>38</td>
+            <td>0</td>
+            <td>38</td>
          </tr>
          <tr>
             <th><a href="#tail%28%29%20function%20with%20streaming-keywords">tail() function with streaming</a></th>
@@ -1858,6 +1956,13 @@
             <td>22</td>
          </tr>
          <tr>
+            <th><a href="#xml-to-json%28%29%20function%20with%20streaming-keywords">xml-to-json() function with streaming</a></th>
+            <td>0</td>
+            <td>5</td>
+            <td>0</td>
+            <td>5</td>
+         </tr>
+         <tr>
             <th><a href="#zero-or-one%28%29%20function%20with%20streaming-keywords">zero-or-one() function with streaming</a></th>
             <td>0</td>
             <td>7</td>
@@ -1874,9 +1979,9 @@
          <tr>
             <th><a href="#Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aapply-templates.-keywords">Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:apply-templates.</a></th>
             <td>0</td>
-            <td>5</td>
-            <td>0</td>
-            <td>5</td>
+            <td>6</td>
+            <td>0</td>
+            <td>6</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Aattribute%20instruction%20with%20streaming-keywords">xsl:attribute instruction with streaming</a></th>
@@ -1900,25 +2005,18 @@
             <td>8</td>
          </tr>
          <tr>
-            <th><a href="#Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aconditional-content.-keywords">Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:conditional-content.</a></th>
-            <td>0</td>
-            <td>1</td>
-            <td>0</td>
-            <td>1</td>
-         </tr>
-         <tr>
             <th><a href="#xsl%3Acopy%20with%20streaming-keywords">xsl:copy with streaming</a></th>
             <td>0</td>
-            <td>62</td>
-            <td>0</td>
-            <td>62</td>
+            <td>63</td>
+            <td>0</td>
+            <td>63</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Acopy-of%20with%20streaming-keywords">xsl:copy-of with streaming</a></th>
             <td>0</td>
-            <td>44</td>
-            <td>0</td>
-            <td>44</td>
+            <td>45</td>
+            <td>0</td>
+            <td>45</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Adocument%20with%20streaming-keywords">xsl:document with streaming</a></th>
@@ -1930,37 +2028,37 @@
          <tr>
             <th><a href="#xsl%3Aelement%20with%20streaming-keywords">xsl:element with streaming</a></th>
             <td>0</td>
-            <td>92</td>
-            <td>0</td>
-            <td>92</td>
-         </tr>
-         <tr>
-            <th><a href="#xsl%3Afor-each%20with%20streaming-keywords">xsl:for-each with streaming</a></th>
-            <td>0</td>
-            <td>15</td>
-            <td>0</td>
-            <td>15</td>
+            <td>93</td>
+            <td>0</td>
+            <td>93</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Afor-each%20with%20streaming-keywords">xsl:for-each with streaming</a></th>
             <td>0</td>
-            <td>68</td>
-            <td>0</td>
-            <td>68</td>
+            <td>20</td>
+            <td>0</td>
+            <td>20</td>
+         </tr>
+         <tr>
+            <th><a href="#xsl%3Afor-each%20with%20streaming-keywords">xsl:for-each with streaming</a></th>
+            <td>0</td>
+            <td>89</td>
+            <td>0</td>
+            <td>89</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Avalue-of%20instruction%20with%20streaming-keywords">xsl:value-of instruction with streaming</a></th>
             <td>0</td>
-            <td>11</td>
-            <td>0</td>
-            <td>11</td>
+            <td>36</td>
+            <td>0</td>
+            <td>36</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Aiterate%20with%20streaming-keywords">xsl:iterate with streaming</a></th>
             <td>0</td>
-            <td>25</td>
-            <td>0</td>
-            <td>25</td>
+            <td>27</td>
+            <td>0</td>
+            <td>27</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Amap%20with%20streaming-keywords">xsl:map with streaming</a></th>
@@ -1972,9 +2070,9 @@
          <tr>
             <th><a href="#xsl%3Amerge%20instruction%20with%20streaming-keywords">xsl:merge instruction with streaming</a></th>
             <td>0</td>
-            <td>6</td>
-            <td>0</td>
-            <td>6</td>
+            <td>7</td>
+            <td>0</td>
+            <td>7</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Anext-match%20with%20streaming-keywords">xsl:next-match with streaming</a></th>
@@ -1984,11 +2082,32 @@
             <td>2</td>
          </tr>
          <tr>
+            <th><a href="#Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aon-empty.-keywords">Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-empty.</a></th>
+            <td>0</td>
+            <td>33</td>
+            <td>0</td>
+            <td>33</td>
+         </tr>
+         <tr>
+            <th><a href="#Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aon-non-empty.-keywords">Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-non-empty.</a></th>
+            <td>0</td>
+            <td>35</td>
+            <td>0</td>
+            <td>35</td>
+         </tr>
+         <tr>
+            <th><a href="#xsl%3Aperform-sort%20instruction%20with%20streaming-keywords">xsl:perform-sort instruction with streaming</a></th>
+            <td>0</td>
+            <td>2</td>
+            <td>0</td>
+            <td>2</td>
+         </tr>
+         <tr>
             <th><a href="#Tests%20xsl%3Astream%20instruction%20with%20xsl%3Aresult-document.-keywords">Tests xsl:stream instruction with xsl:result-document.</a></th>
             <td>0</td>
-            <td>40</td>
-            <td>0</td>
-            <td>40</td>
+            <td>41</td>
+            <td>0</td>
+            <td>41</td>
          </tr>
          <tr>
             <th><a href="#xsl%3Atry%2Fxsl%3Acatch%20instruction%20with%20streaming-keywords">xsl:try/xsl:catch instruction with streaming</a></th>
@@ -2005,18 +2124,60 @@
             <td>36</td>
          </tr>
          <tr>
+            <th><a href="#Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Awhere-populated.-keywords">Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:where-populated.</a></th>
+            <td>0</td>
+            <td>21</td>
+            <td>0</td>
+            <td>21</td>
+         </tr>
+         <tr>
             <th><a href="#Literal%20result%20elements%20with%20streaming-keywords">Literal result elements with streaming</a></th>
             <td>0</td>
-            <td>91</td>
-            <td>0</td>
-            <td>91</td>
+            <td>90</td>
+            <td>0</td>
+            <td>90</td>
+         </tr>
+         <tr>
+            <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22absorbing%22-keywords">Streamable stylesheet functions: category "absorbing"</a></th>
+            <td>0</td>
+            <td>29</td>
+            <td>0</td>
+            <td>29</td>
+         </tr>
+         <tr>
+            <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22ascent%22-keywords">Streamable stylesheet functions: category "ascent"</a></th>
+            <td>0</td>
+            <td>10</td>
+            <td>0</td>
+            <td>10</td>
+         </tr>
+         <tr>
+            <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22filter%22-keywords">Streamable stylesheet functions: category "filter"</a></th>
+            <td>0</td>
+            <td>8</td>
+            <td>0</td>
+            <td>8</td>
+         </tr>
+         <tr>
+            <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22inspection%22-keywords">Streamable stylesheet functions: category "inspection"</a></th>
+            <td>0</td>
+            <td>8</td>
+            <td>0</td>
+            <td>8</td>
+         </tr>
+         <tr>
+            <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22shallow-descent%22-keywords">Streamable stylesheet functions: category "shallow-descent"</a></th>
+            <td>0</td>
+            <td>11</td>
+            <td>0</td>
+            <td>11</td>
          </tr>
          <tr>
             <th><a href="#Streamable%20stylesheet%20functions%3A%20category%20%22unclassified%22-keywords">Streamable stylesheet functions: category "unclassified"</a></th>
             <td>0</td>
-            <td>3</td>
-            <td>0</td>
-            <td>3</td>
+            <td>6</td>
+            <td>0</td>
+            <td>6</td>
          </tr>
          <tr>
             <th><a href="#Arithmetic%20expressions%20with%20streaming-keywords">Arithmetic expressions with streaming</a></th>
@@ -2028,9 +2189,9 @@
          <tr>
             <th><a href="#comma%20expression%20function%20with%20streaming-keywords">comma expression function with streaming</a></th>
             <td>0</td>
-            <td>46</td>
-            <td>0</td>
-            <td>46</td>
+            <td>55</td>
+            <td>0</td>
+            <td>55</td>
          </tr>
          <tr>
             <th><a href="#for%20expressions%20with%20streaming-keywords">for expressions with streaming</a></th>
@@ -2119,16 +2280,23 @@
          <tr>
             <th><a href="#XPath%20map%7B%7D%20constructor%20expression%20with%20streaming-keywords">XPath map{} constructor expression with streaming</a></th>
             <td>0</td>
+            <td>15</td>
+            <td>0</td>
+            <td>15</td>
+         </tr>
+         <tr>
+            <th><a href="#Some%2FEvery%20expressions%20with%20streaming-keywords">Some/Every expressions with streaming</a></th>
+            <td>0</td>
             <td>11</td>
             <td>0</td>
             <td>11</td>
          </tr>
          <tr>
-            <th><a href="#Some%2FEvery%20expressions%20with%20streaming-keywords">Some/Every expressions with streaming</a></th>
-            <td>0</td>
-            <td>10</td>
-            <td>0</td>
-            <td>10</td>
+            <th><a href="#Bang%20operator%20with%20streaming-keywords">Bang operator with streaming</a></th>
+            <td>0</td>
+            <td>11</td>
+            <td>0</td>
+            <td>11</td>
          </tr>
          <tr>
             <th><a href="#%22treat%20as%22%20expression%20with%20streaming-keywords">"treat as" expression with streaming</a></th>
@@ -2140,9 +2308,9 @@
          <tr>
             <th><a href="#union%20expression%20function%20with%20streaming-keywords">union expression function with streaming</a></th>
             <td>0</td>
-            <td>46</td>
-            <td>0</td>
-            <td>46</td>
+            <td>55</td>
+            <td>0</td>
+            <td>55</td>
          </tr>
       </table>
       <table>
@@ -2151,9 +2319,9 @@
          <tr>
             <th>Typing and schema (all)</th>
             <td>306</td>
-            <td>90</td>
+            <td>96</td>
             <td>374</td>
-            <td>770</td>
+            <td>776</td>
          </tr>
          <tr>
             <th><a href="#Tests%20boolean-keywords">Tests boolean</a></th>
@@ -2172,9 +2340,9 @@
          <tr>
             <th><a href="#Tests%20maps-keywords">Tests maps</a></th>
             <td>0</td>
-            <td>36</td>
-            <td>0</td>
-            <td>36</td>
+            <td>39</td>
+            <td>0</td>
+            <td>39</td>
          </tr>
          <tr>
             <th><a href="#Tests%20namespace-keywords">Tests namespace</a></th>
@@ -2200,9 +2368,9 @@
          <tr>
             <th><a href="#Tests%20string-keywords">Tests string</a></th>
             <td>12</td>
-            <td>0</td>
+            <td>3</td>
             <td>121</td>
-            <td>133</td>
+            <td>136</td>
          </tr>
          <tr>
             <th><a href="#Tests%20type-keywords">Tests type</a></th>
@@ -2267,7 +2435,7 @@
          </tr>
          <tr>
             <th>AtomicOrUnionType</th>
-            <td>100</td>
+            <td>101</td>
          </tr>
          <tr>
             <th>xs:anyAtomicType</th>
@@ -2275,7 +2443,7 @@
          </tr>
          <tr>
             <th>buildin-datatypes</th>
-            <td>20</td>
+            <td>21</td>
          </tr>
          <tr>
             <th>conversion</th>
@@ -2339,7 +2507,7 @@
          </tr>
          <tr>
             <th>lre-promotion</th>
-            <td>8</td>
+            <td>9</td>
          </tr>
          <tr>
             <th>xs:anyURI</th>
@@ -2653,11 +2821,11 @@
          </tr>
          <tr>
             <th>select-expression</th>
-            <td>17</td>
+            <td>18</td>
          </tr>
          <tr>
             <th>lre</th>
-            <td>21</td>
+            <td>22</td>
          </tr>
          <tr>
             <th>xsl:variable</th>
@@ -2835,6 +3003,35 @@
             <th>qname-resolution</th>
             <td>1</td>
          </tr>
+         <tr>
+            <th>AVT</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>in</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>an</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>illegal</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>place</th>
+            <td>1</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Tests%20the%20effect%20of%20the%20declared-modes%20attribute%20on%20xsl%3Apackage%20%28or%20its%20absence%29-keywords"></a>declared-modes (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the effect of the declared-modes attribute on xsl:package (or its absence))</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
       </table>
       <table style="width:300px">
          <caption><a id="Tests%20the%20XSLT%203.0%20expand-text%20attribute%20and%20content%20value%20templates-keywords"></a>expand-text (keywords)
@@ -2847,7 +3044,7 @@
          </tr>
          <tr>
             <th>expand-text-attribute</th>
-            <td>24</td>
+            <td>47</td>
          </tr>
          <tr>
             <th>xsl:stylesheet</th>
@@ -2989,7 +3186,7 @@
          </tr>
          <tr>
             <th>child-axis</th>
-            <td>92</td>
+            <td>94</td>
          </tr>
          <tr>
             <th>attribute-axis</th>
@@ -3141,7 +3338,7 @@
          </tr>
          <tr>
             <th>xsl:import-schema</th>
-            <td>95</td>
+            <td>97</td>
          </tr>
          <tr>
             <th>fn:element-with-id</th>
@@ -3197,7 +3394,7 @@
          </tr>
          <tr>
             <th>xsl:mode</th>
-            <td>13</td>
+            <td>15</td>
          </tr>
          <tr>
             <th>on-no-match-attribute</th>
@@ -3357,7 +3554,7 @@
          </tr>
          <tr>
             <th>typed-strict</th>
-            <td>6</td>
+            <td>8</td>
          </tr>
          <tr>
             <th>typed-lax</th>
@@ -3403,27 +3600,27 @@
          </tr>
          <tr>
             <th>xsl:mode</th>
-            <td>59</td>
+            <td>61</td>
          </tr>
          <tr>
             <th>on-no-match-attribute</th>
-            <td>59</td>
+            <td>61</td>
          </tr>
          <tr>
             <th>shallow-skip</th>
-            <td>19</td>
+            <td>21</td>
          </tr>
          <tr>
             <th>shallow-copy</th>
-            <td>28</td>
+            <td>30</td>
          </tr>
          <tr>
             <th>text-only-copy</th>
-            <td>29</td>
+            <td>31</td>
          </tr>
          <tr>
             <th>variable-reference</th>
-            <td>13</td>
+            <td>15</td>
          </tr>
          <tr>
             <th>comment-nodes</th>
@@ -3431,7 +3628,7 @@
          </tr>
          <tr>
             <th>parentless-nodes</th>
-            <td>13</td>
+            <td>15</td>
          </tr>
          <tr>
             <th>streamable</th>
@@ -3451,7 +3648,7 @@
          </tr>
          <tr>
             <th>namespace-nodes</th>
-            <td>5</td>
+            <td>7</td>
          </tr>
          <tr>
             <th>non-streamable</th>
@@ -3663,6 +3860,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20the%20effect%20of%20the%20package-version%20attribute-keywords"></a>package-version (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the effect of the package-version attribute)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20select-keywords"></a>select (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests select)</div>
@@ -4752,6 +4958,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Aaccept%20in%20XSLT%203.0-keywords"></a>accept (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:accept in XSLT 3.0)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20accumulator-keywords"></a>accumulator (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests accumulator)</div>
@@ -4946,11 +5161,11 @@
          </tr>
          <tr>
             <th>single-character-map</th>
-            <td>12</td>
+            <td>13</td>
          </tr>
          <tr>
             <th>xml-output-method</th>
-            <td>15</td>
+            <td>16</td>
          </tr>
          <tr>
             <th>composite-character-map</th>
@@ -5067,6 +5282,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Aexpose%20in%20XSLT%203.0-keywords"></a>expose (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:expose in XSLT 3.0)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20function-keywords"></a>function (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests function)</div>
@@ -5202,7 +5426,7 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="Tests%20whitespace-keywords"></a>whitespace (keywords)
+         <caption><a id="Tests%20whitespace-keywords"></a>strip-space (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests whitespace)</div>
          </caption>
@@ -5727,6 +5951,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="-keywords"></a>available-system-properties (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: )</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20base-uri-keywords"></a>base-uri (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests base-uri)</div>
@@ -5781,6 +6014,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20the%20current%28%29%20function-keywords"></a>current (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the current() function)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20current-output-uri%28%29%20function%20in%20XSLT%203.0-keywords"></a>current-output-uri (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests current-output-uri() function in XSLT 3.0)</div>
@@ -5862,7 +6104,7 @@
          </tr>
          <tr>
             <th>fn:function-available</th>
-            <td>8</td>
+            <td>10</td>
          </tr>
          <tr>
             <th>predicate</th>
@@ -5904,6 +6146,10 @@
             <th>constructor-functions</th>
             <td>1</td>
          </tr>
+         <tr>
+            <th>maps</th>
+            <td>2</td>
+         </tr>
       </table>
       <table style="width:300px">
          <caption><a id="Tests%20id-keywords"></a>id (keywords)
@@ -5915,6 +6161,44 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="innermost%28%29%20function%20without%20streaming-keywords"></a>innermost (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: innermost() function without streaming)</div>
+         </caption>
+         <tr>
+            <th>Key</th>
+            <th>Count</th>
+         </tr>
+         <tr>
+            <th>fn:snapshot</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>bug-24125</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>leading-lone-slash</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>PathExpr</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>XTSE3430</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>overlapping-nodes-with-transmission-usage</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>crawling</th>
+            <td>1</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="json-to-xml%28%29%20function-keywords"></a>json-to-xml (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: json-to-xml() function)</div>
@@ -5942,6 +6226,152 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="outermost%28%29%20function%20without%20streaming-keywords"></a>outermost (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: outermost() function without streaming)</div>
+         </caption>
+         <tr>
+            <th>Key</th>
+            <th>Count</th>
+         </tr>
+         <tr>
+            <th>striding-then-grounded</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>leading-lone-slash</th>
+            <td>19</td>
+         </tr>
+         <tr>
+            <th>PathExpr</th>
+            <td>26</td>
+         </tr>
+         <tr>
+            <th>fn:data</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>fn:copy-of</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>fn:tokenize</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>ContextItemExpr</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>SimpleMapExpr</th>
+            <td>7</td>
+         </tr>
+         <tr>
+            <th>striding</th>
+            <td>9</td>
+         </tr>
+         <tr>
+            <th>fn:count</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>fn:sum</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>motionless-predicate</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>fn:position</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>AdditiveExpr</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>AxisStep</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>positional-predicate</th>
+            <td>8</td>
+         </tr>
+         <tr>
+            <th>xsl:for-each</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>fn:name</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>xsl:apply-templates</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>xsl:copy-of</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>crawling-then-striding</th>
+            <td>6</td>
+         </tr>
+         <tr>
+            <th>leading-double-slash</th>
+            <td>7</td>
+         </tr>
+         <tr>
+            <th>text-nodes</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>childless-nodes</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>striding-then-crawling</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>crawling</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>striding-then-climbing</th>
+            <td>4</td>
+         </tr>
+         <tr>
+            <th>ancestor-axis</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>climbing-then-climbing</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>attribute-axis</th>
+            <td>4</td>
+         </tr>
+         <tr>
+            <th>ancestor-or-self-axis</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>climbing</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>crawling-then-climbing</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>fn:outermost</th>
+            <td>4</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20the%20position%28%29%20function-keywords"></a>position (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the position() function)</div>
@@ -6047,15 +6477,15 @@
          </tr>
          <tr>
             <th>simple-content</th>
-            <td>26</td>
+            <td>34</td>
          </tr>
          <tr>
             <th>fn:xml-to-json</th>
-            <td>28</td>
+            <td>36</td>
          </tr>
          <tr>
             <th>fn:json-to-xml</th>
-            <td>28</td>
+            <td>36</td>
          </tr>
          <tr>
             <th>json-null</th>
@@ -6071,15 +6501,15 @@
          </tr>
          <tr>
             <th>json-string</th>
-            <td>6</td>
+            <td>14</td>
          </tr>
          <tr>
             <th>json-array</th>
-            <td>8</td>
+            <td>12</td>
          </tr>
          <tr>
             <th>json-map</th>
-            <td>8</td>
+            <td>12</td>
          </tr>
          <tr>
             <th>complex-content</th>
@@ -6100,6 +6530,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Aapply-imports%20%28note%2C%20most%20of%20the%20tests%20for%20this%20are%20elsewhere%2C%20e.g.%20under%20%22import%22%29-keywords"></a>apply-imports (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:apply-imports (note, most of the tests for this are elsewhere, e.g. under "import"))</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20the%20xsl%3Aapply-templates%20instruction.%20In%20practice%2C%20as%20indicated%20by%20the%20test%20names%2C%20most%20of%20the%20tests%20concern%20conflict%20resolution.-keywords"></a>apply-templates (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the xsl:apply-templates instruction. In practice, as indicated by the test names, most of the tests concern conflict resolution.)</div>
@@ -6119,11 +6558,11 @@
          </tr>
          <tr>
             <th>xsl:assert</th>
-            <td>5</td>
+            <td>9</td>
          </tr>
          <tr>
             <th>ValueComp</th>
-            <td>3</td>
+            <td>4</td>
          </tr>
          <tr>
             <th>assert-fail</th>
@@ -6131,7 +6570,7 @@
          </tr>
          <tr>
             <th>assert-success</th>
-            <td>1</td>
+            <td>2</td>
          </tr>
          <tr>
             <th>use-when-attribute</th>
@@ -6349,6 +6788,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Awhere-populated%20instruction%20introduced%20in%20XSLT%203.0%20%28unstreamed%29.-keywords"></a>where-populated (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:where-populated instruction introduced in XSLT 3.0 (unstreamed).)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20instructions%20that%20create%20text%2C%20comment%2C%20processing-instruction%20etc%20nodes-keywords"></a>construct-node (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests instructions that create text, comment, processing-instruction etc nodes)</div>
@@ -6484,9 +6932,9 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="Tests%20the%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0.%20The%20tests%20in%20this%20section%20focus%20on%20variants%20of%20the%20xsl%3Astream%20instruction%20itself%2C%20and%20not%20on%20testing%20the%20streamability%20of%20its%20content.-keywords"></a>stream (keywords)
-                
-            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the xsl:stream instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:stream instruction itself, and not on testing the streamability of its content.)</div>
+         <caption><a id="Tests%20the%20xsl%3Asource-document%20%28streamable%3D%22yes%22%29%20instruction%20introduced%20in%20XSLT%203.0.%20The%20tests%20in%20this%20section%20focus%20on%20variants%20of%20the%20xsl%3Asource-document%20%28streamable%3D%22yes%22%29%20instruction%20itself%2C%20and%20not%20on%20testing%20the%20streamability%20of%20its%20content.-keywords"></a>source-document (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests the xsl:source-document (streamable="yes") instruction introduced in XSLT 3.0. The tests in this section focus on variants of the xsl:source-document (streamable="yes") instruction itself, and not on testing the streamability of its content.)</div>
          </caption>
          <tr>
             <td colspan="2">No keywords specified for this category yet</td>
@@ -6503,7 +6951,7 @@
          </tr>
          <tr>
             <th>xsl:try</th>
-            <td>27</td>
+            <td>31</td>
          </tr>
          <tr>
             <th>error-handling</th>
@@ -6518,10 +6966,6 @@
             <td>7</td>
          </tr>
          <tr>
-            <th>_WRONG:incorrect-dependency</th>
-            <td>21</td>
-         </tr>
-         <tr>
             <th>$err:code</th>
             <td>9</td>
          </tr>
@@ -6542,10 +6986,6 @@
             <td>2</td>
          </tr>
          <tr>
-            <th>_IMPROVE:cannot-test-error-variables</th>
-            <td>7</td>
-         </tr>
-         <tr>
             <th>_IMPROVE:cleanup-redundant-code</th>
             <td>1</td>
          </tr>
@@ -6586,6 +7026,10 @@
             <td>2</td>
          </tr>
          <tr>
+            <th>_IMPROVE:cannot-test-error-variables</th>
+            <td>6</td>
+         </tr>
+         <tr>
             <th>FOAR9876</th>
             <td>3</td>
          </tr>
@@ -6610,14 +7054,14 @@
             <td>2</td>
          </tr>
          <tr>
-            <th>_WRONG:test-output-incorrect</th>
-            <td>1</td>
-         </tr>
-         <tr>
             <th>2.0-only-behavior</th>
             <td>3</td>
          </tr>
          <tr>
+            <th>_WRONG:incorrect-dependency</th>
+            <td>7</td>
+         </tr>
+         <tr>
             <th>xsl:fallback</th>
             <td>6</td>
          </tr>
@@ -6671,6 +7115,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Set%20of%20more%20elaborate%20tests%20that%20do%20not%20necessarily%20test%20any%20specific%20aspect%2C%20but%20more%20or%20less%20a%20combination%20of%20aspects.-keywords"></a>aspiring (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Set of more elaborate tests that do not necessarily test any specific aspect, but more or less a combination of aspects.)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20backwards%20compatibility%20with%20XSLT%201.0-keywords"></a>backwards (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests backwards compatibility with XSLT 1.0)</div>
@@ -6708,7 +7161,7 @@
          </tr>
          <tr>
             <th>catalog-self-test</th>
-            <td>5</td>
+            <td>9</td>
          </tr>
          <tr>
             <th>schema-validity</th>
@@ -6732,6 +7185,18 @@
          </tr>
          <tr>
             <th>tests-stylesheet-schema-validity</th>
+            <td>2</td>
+         </tr>
+         <tr>
+            <th>element-available</th>
+            <td>3</td>
+         </tr>
+         <tr>
+            <th>relaxng</th>
+            <td>1</td>
+         </tr>
+         <tr>
+            <th>rng</th>
             <td>1</td>
          </tr>
       </table>
@@ -6826,6 +7291,24 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20constructing%20content%20in%20sequence%20constructors-keywords"></a>seqtor (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests constructing content in sequence constructors)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Tests%20whitespace-keywords"></a>unicode-90 (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests whitespace)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20whitespace-keywords"></a>whitespace (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests whitespace)</div>
@@ -7660,6 +8143,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="current%28%29%20function%20with%20streaming-keywords"></a>sf-current (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: current() function with streaming)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="deep-equal%28%29%20function%20with%20streaming-keywords"></a>sf-deep-equal (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: deep-equal() function with streaming)</div>
@@ -8832,6 +9324,18 @@
             <th>crawling-then-climbing</th>
             <td>2</td>
          </tr>
+         <tr>
+            <th>ParenthesizedExpr</th>
+            <td>8</td>
+         </tr>
+         <tr>
+            <th>mixed-posture</th>
+            <td>8</td>
+         </tr>
+         <tr>
+            <th></th>
+            <td>8</td>
+         </tr>
       </table>
       <table style="width:300px">
          <caption><a id="max%28%29%20function%20with%20streaming-keywords"></a>sf-max (keywords)
@@ -10677,6 +11181,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="xml-to-json%28%29%20function%20with%20streaming-keywords"></a>sf-xml-to-json (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: xml-to-json() function with streaming)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="zero-or-one%28%29%20function%20with%20streaming-keywords"></a>sf-zero-or-one (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: zero-or-one() function with streaming)</div>
@@ -10862,15 +11375,6 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aconditional-content.-keywords"></a>si-conditional-content (keywords)
-                
-            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:conditional-content.)</div>
-         </caption>
-         <tr>
-            <td colspan="2">No keywords specified for this category yet</td>
-         </tr>
-      </table>
-      <table style="width:300px">
          <caption><a id="xsl%3Acopy%20with%20streaming-keywords"></a>si-copy (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: xsl:copy with streaming)</div>
@@ -11055,6 +11559,33 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aon-empty.-keywords"></a>si-on-empty (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-empty.)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Aon-non-empty.-keywords"></a>si-on-non-empty (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:on-non-empty.)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="xsl%3Aperform-sort%20instruction%20with%20streaming-keywords"></a>si-perform-sort (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: xsl:perform-sort instruction with streaming)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Tests%20xsl%3Astream%20instruction%20with%20xsl%3Aresult-document.-keywords"></a>si-result-document (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:stream instruction with xsl:result-document.)</div>
@@ -11082,6 +11613,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Tests%20xsl%3Astream%20instruction%20introduced%20in%20XSLT%203.0%20with%20xsl%3Awhere-populated.-keywords"></a>si-where-populated (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Tests xsl:stream instruction introduced in XSLT 3.0 with xsl:where-populated.)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Literal%20result%20elements%20with%20streaming-keywords"></a>si-LRE (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Literal result elements with streaming)</div>
@@ -11091,6 +11631,51 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22absorbing%22-keywords"></a>su-absorbing (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "absorbing")</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22ascent%22-keywords"></a>su-ascent (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "ascent")</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22filter%22-keywords"></a>su-filter (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "filter")</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22inspection%22-keywords"></a>su-inspection (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "inspection")</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
+         <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22shallow-descent%22-keywords"></a>su-shallow-descent (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "shallow-descent")</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="Streamable%20stylesheet%20functions%3A%20category%20%22unclassified%22-keywords"></a>su-unclassified (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Streamable stylesheet functions: category "unclassified")</div>
@@ -11135,7 +11720,7 @@
          </tr>
          <tr>
             <th>ParenthesizedExpr</th>
-            <td>46</td>
+            <td>55</td>
          </tr>
          <tr>
             <th>fn:copy-of</th>
@@ -11155,7 +11740,7 @@
          </tr>
          <tr>
             <th>mixed-posture</th>
-            <td>40</td>
+            <td>49</td>
          </tr>
          <tr>
             <th>striding</th>
@@ -11253,6 +11838,10 @@
             <th>crawling-then-climbing</th>
             <td>4</td>
          </tr>
+         <tr>
+            <th></th>
+            <td>9</td>
+         </tr>
       </table>
       <table style="width:300px">
          <caption><a id="for%20expressions%20with%20streaming-keywords"></a>sx-ForExpr (keywords)
@@ -11264,7 +11853,7 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="except%20expression%20function%20with%20streaming-keywords"></a>sx-exceptExpr (keywords)
+         <caption><a id="except%20expression%20function%20with%20streaming-keywords"></a>sx-ExceptExpr (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: except expression function with streaming)</div>
          </caption>
@@ -12691,7 +13280,7 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="intersect%20expression%20function%20with%20streaming-keywords"></a>sx-intersectExpr (keywords)
+         <caption><a id="intersect%20expression%20function%20with%20streaming-keywords"></a>sx-IntersectExpr (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: intersect expression function with streaming)</div>
          </caption>
@@ -12856,6 +13445,15 @@
          </tr>
       </table>
       <table style="width:300px">
+         <caption><a id="Bang%20operator%20with%20streaming-keywords"></a>sx-SimpleMappingExpr (keywords)
+                
+            <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: Bang operator with streaming)</div>
+         </caption>
+         <tr>
+            <td colspan="2">No keywords specified for this category yet</td>
+         </tr>
+      </table>
+      <table style="width:300px">
          <caption><a id="%22treat%20as%22%20expression%20with%20streaming-keywords"></a>sx-TreatExpr (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: "treat as" expression with streaming)</div>
@@ -12865,7 +13463,7 @@
          </tr>
       </table>
       <table style="width:300px">
-         <caption><a id="union%20expression%20function%20with%20streaming-keywords"></a>sx-unionExpr (keywords)
+         <caption><a id="union%20expression%20function%20with%20streaming-keywords"></a>sx-UnionExpr (keywords)
                 
             <div style="padding-top:.5em;font-size:8pt;font-weight:normal">(description: union expression function with streaming)</div>
          </caption>
@@ -12875,11 +13473,11 @@
          </tr>
          <tr>
             <th>ParenthesizedExpr</th>
-            <td>41</td>
+            <td>50</td>
          </tr>
          <tr>
             <th>mixed-posture</th>
-            <td>40</td>
+            <td>49</td>
          </tr>
          <tr>
             <th>striding</th>
@@ -12994,6 +13592,10 @@
             <td>4</td>
          </tr>
          <tr>
+            <th></th>
+            <td>9</td>
+         </tr>
+         <tr>
             <th>striding-then-grounded</th>
             <td>1</td>
          </tr>
--- a/admin/report-overview.xml	Sat Dec 22 23:46:54 2018 +0100
+++ b/admin/report-overview.xml	Sat Dec 22 23:49:44 2018 +0100
@@ -1,74 +1,139 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<report xmlns="http://www.w3.org/2012/10/xslt-test-catalog" xmlns:xt="http://xt3report.com/functions">
-   <overview total-tests-in-xt3="11647">
-      <xslt3-specific count="4421"/>
-      <xslt2-specific count="4425"/>
-      <xslt-other count="2801"/>
+<report xmlns:xt="http://xt3report.com/functions"
+        xmlns="http://www.w3.org/2012/10/xslt-test-catalog">
+   <overview total-tests-in-xt3="14511">
+      <xslt3-specific count="5659"/>
+      <xslt2-specific count="5936"/>
+      <xslt-other count="2916"/>
    </overview>
    <changes-since-xslt2>
       <feature group="Packages" name="Packages - versioning" count="15"/>
-      <feature group="Packages" name="Packages - package" count="8"/>
-      <feature group="Packages" name="Packages - use-package" count="30"/>
-      <feature group="Packages" name="Packages - override" count="40"/>
+      <feature group="Packages" name="Packages - package" count="43"/>
+      <feature group="Packages" name="Packages - use-package" count="34"/>
+      <feature group="Packages" name="Packages - override" count="89"/>
       <feature group="Packages" name="Packages - xquery" count="unknown"/>
-      <feature group="Streaming" name="Streaming - instructions" count="653"/>
-      <feature group="Streaming" name="Streaming - functions" count="661"/>
-      <feature group="Streaming" name="Streaming - expressions" count="645"/>
+      <feature group="Streaming" name="Streaming - instructions" count="801"/>
+      <feature group="Streaming" name="Streaming - functions" count="689"/>
+      <feature group="Streaming" name="Streaming - expressions" count="679"/>
       <feature group="Streaming" name="Streaming - posture and sweep" count="919"/>
-      <feature group="Streaming" name="Streaming - other" count="3"/>
-      <feature group="Declarations" name="Accumulators" count="44"/>
-      <feature group="Declarations" name="Mode declarations" count="69"/>
-      <feature group="Declarations" name="Import declaration order relaxation" count="3"/>
+      <feature group="Streaming" name="Streaming - other" count="72"/>
+      <feature group="Declarations" name="Accumulators" count="66"/>
+      <feature group="Declarations" name="Mode declarations" count="109"/>
+      <feature group="Declarations"
+               name="Import declaration order relaxation"
+               count="3"/>
       <feature group="Declarations" name="Context item declaration" count="28"/>
-      <feature group="Declarations" name="Global context item declaration" count="3"/>
-      <feature group="Instructions" name="Try / catch" count="27"/>
+      <feature group="Declarations"
+               name="Global context item declaration"
+               count="11"/>
+      <feature group="Instructions" name="Try / catch" count="31"/>
       <feature group="Instructions" name="Try / catch - rollback-output" count="2"/>
-      <feature group="Instructions" name="Iteration (xsl:iterate)" count="34"/>
-      <feature group="Instructions" name="Dynamic evaluation (xsl:evaluate)" count="43"/>
-      <feature group="Instructions" name="Assertions (xsl:assert)" count="6"/>
-      <feature group="Instructions" name="Merging (xsl:merge, incl strm)" count="70"/>
-      <feature group="Instructions" name="Conditional content construction (all)" count="118"/>
-      <feature group="Instructions" name="Conditional content construction - conditional-content" count="70"/>
-      <feature group="Instructions" name="Conditional content construction - on-empty" count="38"/>
-      <feature group="Instructions" name="Conditional content construction - on-non-empty" count="10"/>
-      <feature group="Instructions" name="Enhancements to analyze-string" count="8"/>
+      <feature group="Instructions" name="Iteration (xsl:iterate)" count="35"/>
+      <feature group="Instructions"
+               name="Dynamic evaluation (xsl:evaluate)"
+               count="47"/>
+      <feature group="Instructions" name="Assertions (xsl:assert)" count="10"/>
+      <feature group="Instructions"
+               name="Merging (xsl:merge, incl strm)"
+               count="94"/>
+      <feature group="Instructions"
+               name="Conditional content construction (all)"
+               count="182"/>
+      <feature group="Instructions"
+               name="Conditional content construction - conditional-content"
+               count="70"/>
+      <feature group="Instructions"
+               name="Conditional content construction - on-empty"
+               count="98"/>
+      <feature group="Instructions"
+               name="Conditional content construction - on-non-empty"
+               count="14"/>
+      <feature group="Instructions"
+               name="Enhancements to analyze-string"
+               count="8"/>
       <feature group="Instructions" name="Value-of enhancement (empty)" count="0"/>
-      <feature group="Instructions" name="Number (xsl:number format-number) enhancements" count="10"/>
-      <feature group="Attributes" name="Declared modes" count="0"/>
-      <feature group="Attributes" name="Decimal format with exponent-separator" count="0"/>
-      <feature group="Attributes" name="Composite keys in for-each-group" count="15"/>
+      <feature group="Instructions"
+               name="Number (xsl:number format-number) enhancements"
+               count="13"/>
+      <feature group="Attributes" name="Declared modes" count="14"/>
+      <feature group="Attributes"
+               name="Decimal format with exponent-separator"
+               count="0"/>
+      <feature group="Attributes"
+               name="Composite keys in for-each-group"
+               count="15"/>
       <feature group="Attributes" name="Composite keys in keys" count="2"/>
-      <feature group="Attributes" name="Select attribute on copy instruction" count="30"/>
-      <feature group="Attributes" name="Static variables and parameters" count="37"/>
-      <feature group="Attributes" name="Cache, override, identity attributes on function declaration" count="28"/>
+      <feature group="Attributes"
+               name="Select attribute on copy instruction"
+               count="31"/>
+      <feature group="Attributes"
+               name="Static variables and parameters"
+               count="37"/>
+      <feature group="Attributes"
+               name="Cache, override, identity attributes on function declaration"
+               count="53"/>
       <feature group="Attributes" name="Shadow attributes" count="7"/>
-      <feature group="Attributes" name="Use-when enhancements" count="19"/>
-      <feature group="Attributes" name="Error-code attribute on message" count="8"/>
-      <feature group="Attributes" name="Html-version attribute on xsl:output/result-document (HTML5 support)" count="30"/>
-      <feature group="Attributes" name="Item-separator attribute on xsl:output/result-document" count="0"/>
-      <feature group="Attributes" name="Parameter-document attribute on xsl:output/result-document" count="0"/>
-      <feature group="Attributes" name="Suppress-indentation attribute on xsl:output/result-document" count="128"/>
-      <feature group="Attributes" name="Disable-output-escaping silently ignored" count="2"/>
-      <feature group="Attributes" name="Enhancements on typed=lax for non-validating processors" count="unknown"/>
-      <feature group="Stylesheet initialization" name="Initial function" count="5"/>
-      <feature group="Stylesheet initialization" name="Initial template (xsl:initial-template)" count="3"/>
+      <feature group="Attributes" name="Use-when enhancements" count="22"/>
+      <feature group="Attributes"
+               name="Error-code attribute on message"
+               count="10"/>
+      <feature group="Attributes"
+               name="Html-version attribute on xsl:output/result-document (HTML5 support)"
+               count="30"/>
+      <feature group="Attributes"
+               name="Item-separator attribute on xsl:output/result-document"
+               count="0"/>
+      <feature group="Attributes"
+               name="Parameter-document attribute on xsl:output/result-document"
+               count="0"/>
+      <feature group="Attributes"
+               name="Suppress-indentation attribute on xsl:output/result-document"
+               count="133"/>
+      <feature group="Attributes"
+               name="Disable-output-escaping silently ignored"
+               count="2"/>
+      <feature group="Attributes"
+               name="Enhancements on typed=lax for non-validating processors"
+               count="unknown"/>
+      <feature group="Stylesheet initialization"
+               name="Initial function"
+               count="34"/>
+      <feature group="Stylesheet initialization"
+               name="Initial template (xsl:initial-template)"
+               count="3"/>
       <feature group="Stylesheet initialization" name="Initial mode" count="1"/>
-      <feature group="Functions" name="Higher order functions" count="70"/>
+      <feature group="Functions" name="Higher order functions" count="72"/>
       <feature group="Functions" name="New function current-output-uri" count="5"/>
       <feature group="Functions" name="New function collation-key" count="0"/>
-      <feature group="Functions" name="New function copy-of" count="22"/>
-      <feature group="Functions" name="New function json-to-xml" count="52"/>
-      <feature group="Functions" name="New function snapshot" count="33"/>
-      <feature group="Functions" name="New function stream-available" count="5"/>
-      <feature group="Functions" name="New function xml-to-json" count="28"/>
-      <feature group="Functions" name="Enhancements on function deep-equal (maps support)" count="0"/>
-      <feature group="Functions" name="Enhancements on function document (new error)" count="0"/>
-      <feature group="Functions" name="Enhancements on function format-number (moved, but new formats)" count="2"/>
-      <feature group="Functions" name="Enhancements on function key (composite keys)" count="2"/>
-      <feature group="Functions" name="Enhancements on function type-available (XSD 1.1)" count="1"/>
-      <feature group="Functions" name="Enhancements on function system-property (new properties)" count="4"/>
-      <feature group="Functions" name="Enhancements on function unparsed-entity-uri (arity zero)" count="0"/>
-      <feature group="Functions" name="Enhancements on function unparsed-entity-public-id (arity zero)" count="0"/>
+      <feature group="Functions" name="New function copy-of" count="23"/>
+      <feature group="Functions" name="New function json-to-xml" count="60"/>
+      <feature group="Functions" name="New function snapshot" count="41"/>
+      <feature group="Functions" name="New function stream-available" count="6"/>
+      <feature group="Functions" name="New function xml-to-json" count="115"/>
+      <feature group="Functions"
+               name="Enhancements on function deep-equal (maps support)"
+               count="0"/>
+      <feature group="Functions"
+               name="Enhancements on function document (new error)"
+               count="2"/>
+      <feature group="Functions"
+               name="Enhancements on function format-number (moved, but new formats)"
+               count="4"/>
+      <feature group="Functions"
+               name="Enhancements on function key (composite keys)"
+               count="2"/>
+      <feature group="Functions"
+               name="Enhancements on function type-available (XSD 1.1)"
+               count="1"/>
+      <feature group="Functions"
+               name="Enhancements on function system-property (new properties)"
+               count="174"/>
+      <feature group="Functions"
+               name="Enhancements on function unparsed-entity-uri (arity zero)"
+               count="0"/>
+      <feature group="Functions"
+               name="Enhancements on function unparsed-entity-public-id (arity zero)"
+               count="0"/>
       <feature group="Maps" name="Maps - function contains" count="1"/>
       <feature group="Maps" name="Maps - function entry" count="0"/>
       <feature group="Maps" name="Maps - function get" count="2"/>
@@ -79,27 +144,37 @@
       <feature group="Maps" name="Maps - function remove" count="0"/>
       <feature group="Maps" name="Maps - function size" count="2"/>
       <feature group="Maps" name="Maps - expressions / other" count="36"/>
-      <feature group="Other" name="Expand text, text value templates" count="29"/>
-      <feature group="Other" name="Pattern enhancements" count="66"/>
+      <feature group="Other" name="Expand text, text value templates" count="52"/>
+      <feature group="Other" name="Pattern enhancements" count="69"/>
       <feature group="Other" name="EQName adoption" count="23"/>
-      <feature group="Other" name="JSON support (total)" count="80"/>
-      <feature group="Other" name="Default collation enhancements (allowed on any element)" count="0"/>
-      <feature group="Other" name="Backwards compatibility (XSLT 3.0 to 2.0)" count="1"/>
-      <feature group="Other" name="New error conditions and codes" count="152"/>
-      <feature group="Other" name="Recoverable errors do not exist anymore" count="unknown"/>
-      <feature group="Other" name="Enhancements to serialization (all)" count="128"/>
-      <feature group="Other" name="Type attribute validation with complex types and copy/copy-of (XTTE1535)" count="unknown"/>
+      <feature group="Other" name="JSON support (total)" count="175"/>
+      <feature group="Other"
+               name="Default collation enhancements (allowed on any element)"
+               count="0"/>
+      <feature group="Other"
+               name="Backwards compatibility (XSLT 3.0 to 2.0)"
+               count="1"/>
+      <feature group="Other" name="New error conditions and codes" count="155"/>
+      <feature group="Other"
+               name="Recoverable errors do not exist anymore"
+               count="unknown"/>
+      <feature group="Other"
+               name="Enhancements to serialization (all)"
+               count="133"/>
+      <feature group="Other"
+               name="Type attribute validation with complex types and copy/copy-of (XTTE1535)"
+               count="unknown"/>
       <feature group="Other" name="XSD 1.1 types" count="unknown"/>
    </changes-since-xslt2>
    <category name="Attributes">
-      <overview total-tests-in-category="1215">
-         <xslt3-specific count="361"/>
-         <xslt2-specific count="681"/>
-         <xslt-other count="173"/>
+      <overview total-tests-in-category="1348">
+         <xslt3-specific count="486"/>
+         <xslt2-specific count="687"/>
+         <xslt-other count="175"/>
       </overview>
-      <test-set total-tests="194" name="as" description="Tests as">
+      <test-set total-tests="195" name="as" description="Tests as">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="194"/>
+         <xslt2-specific count="195"/>
          <xslt-other count="0"/>
          <keywords use-when="false()">
             <key name="instance-of" count="5"/>
@@ -113,9 +188,9 @@
             <key name="xsl:function" count="11"/>
             <key name="xs:untypedAtomic" count="20"/>
             <key name="text-conversion" count="1"/>
-            <key name="AtomicOrUnionType" count="100"/>
+            <key name="AtomicOrUnionType" count="101"/>
             <key name="xs:anyAtomicType" count="11"/>
-            <key name="buildin-datatypes" count="20"/>
+            <key name="buildin-datatypes" count="21"/>
             <key name="conversion" count="9"/>
             <key name="mixed-sequence" count="6"/>
             <key name="OccurrenceIndicator" count="59"/>
@@ -131,7 +206,7 @@
             <key name="subtype-substitution" count="2"/>
             <key name="xs:duration" count="1"/>
             <key name="xs:yearMonthDuration" count="1"/>
-            <key name="lre-promotion" count="8"/>
+            <key name="lre-promotion" count="9"/>
             <key name="xs:anyURI" count="7"/>
             <key name="xsl:document" count="4"/>
             <key name="DocumentTest" count="8"/>
@@ -207,15 +282,17 @@
             <key name="xs:IDREFS" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="32" name="avt" description="Tests Attribute Value Templates">
-         <xslt3-specific count="0"/>
+      <test-set total-tests="34"
+                name="avt"
+                description="Tests Attribute Value Templates">
+         <xslt3-specific count="2"/>
          <xslt2-specific count="18"/>
          <xslt-other count="14"/>
          <keywords use-when="false()">
             <key name="mixed-sequence" count="1"/>
             <key name="literals" count="5"/>
-            <key name="select-expression" count="17"/>
-            <key name="lre" count="21"/>
+            <key name="select-expression" count="18"/>
+            <key name="lre" count="22"/>
             <key name="xsl:variable" count="1"/>
             <key name="temporary-tree" count="1"/>
             <key name="sequence" count="5"/>
@@ -260,14 +337,29 @@
             <key name="xsl:element" count="1"/>
             <key name="name-attribute" count="1"/>
             <key name="qname-resolution" count="1"/>
+            <key name="AVT" count="1"/>
+            <key name="in" count="1"/>
+            <key name="an" count="1"/>
+            <key name="illegal" count="1"/>
+            <key name="place" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="29" name="expand-text" description="Tests the XSLT 3.0 expand-text attribute and content value templates">
-         <xslt3-specific count="29"/>
+      <test-set total-tests="14"
+                name="declared-modes"
+                description="Tests the effect of the declared-modes attribute on xsl:package (or its absence)">
+         <xslt3-specific count="14"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="52"
+                name="expand-text"
+                description="Tests the XSLT 3.0 expand-text attribute and content value templates">
+         <xslt3-specific count="52"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()">
-            <key name="expand-text-attribute" count="24"/>
+            <key name="expand-text-attribute" count="47"/>
             <key name="xsl:stylesheet" count="9"/>
             <key name="variable-reference" count="10"/>
             <key name="lre" count="21"/>
@@ -298,16 +390,16 @@
             <key name="xsl:for-each" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="247" name="match" description="Tests match">
-         <xslt3-specific count="66"/>
-         <xslt2-specific count="141"/>
-         <xslt-other count="40"/>
+      <test-set total-tests="254" name="match" description="Tests match">
+         <xslt3-specific count="69"/>
+         <xslt2-specific count="144"/>
+         <xslt-other count="41"/>
          <keywords use-when="false()">
             <key name="descendant-or-self-axis" count="17"/>
             <key name="leading-double-slash" count="10"/>
             <key name="UnionExpr" count="18"/>
             <key name="predicate" count="36"/>
-            <key name="child-axis" count="92"/>
+            <key name="child-axis" count="94"/>
             <key name="attribute-axis" count="23"/>
             <key name="GeneralComp" count="18"/>
             <key name="ContextItemExpr" count="6"/>
@@ -345,7 +437,7 @@
             <key name="fn:current" count="4"/>
             <key name="fn:name" count="1"/>
             <key name="fn:doc" count="5"/>
-            <key name="xsl:import-schema" count="95"/>
+            <key name="xsl:import-schema" count="97"/>
             <key name="fn:element-with-id" count="2"/>
             <key name="not-XTSE0340" count="5"/>
             <key name="fn:true" count="1"/>
@@ -359,7 +451,7 @@
             <key name="ParenthesizedExpr" count="9"/>
             <key name="bug-18861" count="2"/>
             <key name="namespace-axis" count="1"/>
-            <key name="xsl:mode" count="13"/>
+            <key name="xsl:mode" count="15"/>
             <key name="on-no-match-attribute" count="2"/>
             <key name="shallow-skip" count="1"/>
             <key name="deep-skip" count="1"/>
@@ -399,7 +491,7 @@
             <key name="self-axis" count="1"/>
             <key name="_TEST:verify-correct" count="1"/>
             <key name="stylesheet-function" count="1"/>
-            <key name="typed-strict" count="6"/>
+            <key name="typed-strict" count="8"/>
             <key name="typed-lax" count="1"/>
             <key name="typed-yes" count="1"/>
             <key name="typed-true" count="1"/>
@@ -410,24 +502,26 @@
             <key name="on-multiple-match" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="101" name="mode" description="Tests the use of modes in xsl:template and xsl:apply-templates">
-         <xslt3-specific count="68"/>
+      <test-set total-tests="141"
+                name="mode"
+                description="Tests the use of modes in xsl:template and xsl:apply-templates">
+         <xslt3-specific count="108"/>
          <xslt2-specific count="18"/>
          <xslt-other count="15"/>
          <keywords use-when="false()">
-            <key name="xsl:mode" count="59"/>
-            <key name="on-no-match-attribute" count="59"/>
-            <key name="shallow-skip" count="19"/>
-            <key name="shallow-copy" count="28"/>
-            <key name="text-only-copy" count="29"/>
-            <key name="variable-reference" count="13"/>
+            <key name="xsl:mode" count="61"/>
+            <key name="on-no-match-attribute" count="61"/>
+            <key name="shallow-skip" count="21"/>
+            <key name="shallow-copy" count="30"/>
+            <key name="text-only-copy" count="31"/>
+            <key name="variable-reference" count="15"/>
             <key name="comment-nodes" count="3"/>
-            <key name="parentless-nodes" count="13"/>
+            <key name="parentless-nodes" count="15"/>
             <key name="streamable" count="21"/>
             <key name="processing-instruction-nodes" count="3"/>
             <key name="text-nodes" count="2"/>
             <key name="attribute-nodes" count="4"/>
-            <key name="namespace-nodes" count="5"/>
+            <key name="namespace-nodes" count="7"/>
             <key name="non-streamable" count="2"/>
             <key name="stylesheet-function" count="1"/>
             <key name="predicate" count="1"/>
@@ -482,13 +576,23 @@
             <key name="xsl:import" count="4"/>
          </keywords>
       </test-set>
+      <test-set total-tests="34"
+                name="package-version"
+                description="Tests the effect of the package-version attribute">
+         <xslt3-specific count="32"/>
+         <xslt2-specific count="1"/>
+         <xslt-other count="1"/>
+         <keywords use-when="false()"/>
+      </test-set>
       <test-set total-tests="157" name="select" description="Tests select">
          <xslt3-specific count="1"/>
          <xslt2-specific count="71"/>
          <xslt-other count="85"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="7" name="shadow" description="Tests Shadow Attributes (Static AVTs)">
+      <test-set total-tests="7"
+                name="shadow"
+                description="Tests Shadow Attributes (Static AVTs)">
          <xslt3-specific count="7"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
@@ -508,7 +612,9 @@
             <key name="_xpath-default-namespace" count="2"/>
          </keywords>
       </test-set>
-      <test-set total-tests="37" name="static" description="Tests static attributes on xsl:variable and xsl:param declarations">
+      <test-set total-tests="37"
+                name="static"
+                description="Tests static attributes on xsl:variable and xsl:param declarations">
          <xslt3-specific count="37"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
@@ -533,8 +639,10 @@
             <key name="ERR:XTSE0090" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="125" name="streamable" description="Tests streamable apply-templates and modes">
-         <xslt3-specific count="125"/>
+      <test-set total-tests="131"
+                name="streamable"
+                description="Tests streamable apply-templates and modes">
+         <xslt3-specific count="131"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()">
@@ -693,7 +801,9 @@
             <key name="fn:has-children" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="26" name="strip-type-annotations" description="Tests strip-type-annotations">
+      <test-set total-tests="26"
+                name="strip-type-annotations"
+                description="Tests strip-type-annotations">
          <xslt3-specific count="0"/>
          <xslt2-specific count="26"/>
          <xslt-other count="0"/>
@@ -706,20 +816,20 @@
          <keywords use-when="false()"/>
       </test-set>
       <test-set total-tests="102" name="use-when" description="Tests use-when">
-         <xslt3-specific count="19"/>
-         <xslt2-specific count="82"/>
+         <xslt3-specific count="22"/>
+         <xslt2-specific count="79"/>
          <xslt-other count="1"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="43" name="validation" description="Tests validation">
-         <xslt3-specific count="5"/>
-         <xslt2-specific count="37"/>
+      <test-set total-tests="48" name="validation" description="Tests validation">
+         <xslt3-specific count="7"/>
+         <xslt2-specific count="40"/>
          <xslt-other count="1"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="32" name="version" description="Tests version">
+      <test-set total-tests="33" name="version" description="Tests version">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="19"/>
+         <xslt2-specific count="20"/>
          <xslt-other count="13"/>
          <keywords use-when="false()">
             <key name="fn:system-property" count="6"/>
@@ -755,7 +865,9 @@
             <key name="XTDE0160" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="25" name="xpath-default-namespace" description="Tests xpath-default-namespace">
+      <test-set total-tests="25"
+                name="xpath-default-namespace"
+                description="Tests xpath-default-namespace">
          <xslt3-specific count="0"/>
          <xslt2-specific count="21"/>
          <xslt-other count="4"/>
@@ -789,13 +901,21 @@
       </test-set>
    </category>
    <category name="Declarations">
-      <overview total-tests-in-category="938">
-         <xslt3-specific count="271"/>
-         <xslt2-specific count="513"/>
-         <xslt-other count="154"/>
+      <overview total-tests-in-category="1138">
+         <xslt3-specific count="465"/>
+         <xslt2-specific count="518"/>
+         <xslt-other count="155"/>
       </overview>
-      <test-set total-tests="44" name="accumulator" description="Tests accumulator">
-         <xslt3-specific count="44"/>
+      <test-set total-tests="29"
+                name="accept"
+                description="Tests xsl:accept in XSLT 3.0">
+         <xslt3-specific count="29"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="66" name="accumulator" description="Tests accumulator">
+         <xslt3-specific count="66"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()">
@@ -819,7 +939,9 @@
             <key name="xsl:accumulator" count="5"/>
          </keywords>
       </test-set>
-      <test-set total-tests="47" name="attribute-set" description="Tests xsl:attribute-set">
+      <test-set total-tests="47"
+                name="attribute-set"
+                description="Tests xsl:attribute-set">
          <xslt3-specific count="4"/>
          <xslt2-specific count="7"/>
          <xslt-other count="36"/>
@@ -849,13 +971,15 @@
             <key name="_IMPROVE:test-in-wrong-location" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="24" name="character-map" description="Tests the xsl:character-map declaration">
+      <test-set total-tests="25"
+                name="character-map"
+                description="Tests the xsl:character-map declaration">
          <xslt3-specific count="0"/>
-         <xslt2-specific count="24"/>
+         <xslt2-specific count="25"/>
          <xslt-other count="0"/>
          <keywords use-when="false()">
-            <key name="single-character-map" count="12"/>
-            <key name="xml-output-method" count="15"/>
+            <key name="single-character-map" count="13"/>
+            <key name="xml-output-method" count="16"/>
             <key name="composite-character-map" count="3"/>
             <key name="conflict-resolution" count="6"/>
             <key name="multiple-character-maps" count="8"/>
@@ -883,20 +1007,32 @@
             <key name="circular-reference" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="28" name="context-item" description="Tests xsl:context-item">
+      <test-set total-tests="28"
+                name="context-item"
+                description="Tests xsl:context-item">
          <xslt3-specific count="28"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="74" name="function" description="Tests function">
-         <xslt3-specific count="28"/>
-         <xslt2-specific count="46"/>
+      <test-set total-tests="20"
+                name="expose"
+                description="Tests xsl:expose in XSLT 3.0">
+         <xslt3-specific count="20"/>
+         <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="3" name="global-context-item" description="Tests xsl:global-context-item">
-         <xslt3-specific count="3"/>
+      <test-set total-tests="102" name="function" description="Tests function">
+         <xslt3-specific count="53"/>
+         <xslt2-specific count="49"/>
+         <xslt-other count="0"/>
+         <keywords use-when="false()"/>
+      </test-set>
+      <test-set total-tests="11"
+                name="global-context-item"
+                description="Tests xsl:global-context-item">
+         <xslt3-specific count="11"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
@@ -907,7 +1043,9 @@
          <xslt-other count="12"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="195" name="import-schema" description="Tests import-schema">
+      <test-set total-tests="195"
+                name="import-schema"
+                description="Tests import-schema">
          <xslt3-specific count="2"/>
          <xslt2-specific count="193"/>
          <xslt-other count="0"/>
@@ -931,37 +1069,47 @@
             <key name="multiple-imports" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="15" name="namespace-alias" description="Tests namespace">
+      <test-set total-tests="16"
+                name="namespace-alias"
+                description="Tests namespace">
          <xslt3-specific count="0"/>
          <xslt2-specific count="9"/>
-         <xslt-other count="6"/>
+         <xslt-other count="7"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="213" name="output" description="Tests the xsl:output declaration, and hence serialization generally">
-         <xslt3-specific count="73"/>
-         <xslt2-specific count="140"/>
+      <test-set total-tests="215"
+                name="output"
+                description="Tests the xsl:output declaration, and hence serialization generally">
+         <xslt3-specific count="74"/>
+         <xslt2-specific count="141"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="40" name="override" description="Tests xsl:override in XSLT 3.0">
-         <xslt3-specific count="40"/>
+      <test-set total-tests="89"
+                name="override"
+                description="Tests xsl:override in XSLT 3.0">
+         <xslt3-specific count="89"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="8" name="package" description="Tests xsl:package in XSLT 3.0">
-         <xslt3-specific count="8"/>
+      <test-set total-tests="43"
+                name="package"
+                description="Tests xsl:package in XSLT 3.0">
+         <xslt3-specific count="43"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="29" name="param" description="Tests the xsl:param element">
+      <test-set total-tests="29"
+                name="param"
+                description="Tests the xsl:param element">
          <xslt3-specific count="4"/>
          <xslt2-specific count="25"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>
       </test-set>
-      <test-set total-tests="23" name="whitespace" description="Tests whitespace">
+      <test-set total-tests="23" name="strip-space" description="Tests whitespace">
          <xslt3-specific count="1"/>
          <xslt2-specific count="1"/>
          <xslt-other count="21"/>
@@ -985,24 +1133,28 @@
             <key name="leading-lone-slash" count="1"/>
          </keywords>
       </test-set>
-      <test-set total-tests="30" name="use-package" description="Tests xsl:use-package in XSLT 3.0">
-         <xslt3-specific count="30"/>
+      <test-set total-tests="34"
+                name="use-package"
+                description="Tests xsl:use-package in XSLT 3.0">
+         <xslt3-specific count="34"/>
          <xslt2-specific count="0"/>
          <xslt-other count="0"/>
          <keywords use-when="false()"/>