Updated reports report
authorabraaksm
Fri, 03 Apr 2015 02:17:48 +0200
branchreport
changeset 946 782b585bea00
parent 910 435c939b6bc2
child 947 a17e7f87c5ba
Updated reports
admin/report-changes-since-xslt2.xml
admin/report-changes-since-xslt2.xsl
admin/reports.xslt
report/J.1. changes since 2.0 report.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin/report-changes-since-xslt2.xml	Fri Apr 03 02:17:48 2015 +0200
@@ -0,0 +1,1269 @@
+<?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"/>
+   </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"/>
+   </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>
+      <test-set total-tests="194" name="as" description="Tests as">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="194"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="32" name="avt" description="Tests Attribute Value Templates">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="14"/>
+      </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"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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>
+      <test-set total-tests="101" name="mode" description="Tests the use of modes in xsl:template and xsl:apply-templates">
+         <xslt3-specific count="68"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="15"/>
+      </test-set>
+      <test-set total-tests="157" name="select" description="Tests select">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="71"/>
+         <xslt-other count="85"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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"/>
+      </test-set>
+      <test-set total-tests="42" name="validation" description="Tests validation">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="37"/>
+         <xslt-other count="1"/>
+      </test-set>
+      <test-set total-tests="31" name="version" description="Tests version">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="13"/>
+      </test-set>
+      <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"/>
+      </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>
+      <test-set total-tests="44" name="accumulator" description="Tests accumulator">
+         <xslt3-specific count="44"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="46" name="attribute-set" description="Tests xsl:attribute-set">
+         <xslt3-specific count="3"/>
+         <xslt2-specific count="7"/>
+         <xslt-other count="36"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="74" name="function" description="Tests function">
+         <xslt3-specific count="28"/>
+         <xslt2-specific count="46"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </test-set>
+      <test-set total-tests="42" name="import" description="Tests import">
+         <xslt3-specific count="3"/>
+         <xslt2-specific count="27"/>
+         <xslt-other count="12"/>
+      </test-set>
+      <test-set total-tests="195" name="import-schema" description="Tests import-schema">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="193"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="16" name="include" description="Tests include">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="12"/>
+         <xslt-other count="3"/>
+      </test-set>
+      <test-set total-tests="15" name="namespace-alias" description="Tests namespace">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="9"/>
+         <xslt-other count="6"/>
+      </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"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="40" name="override" description="Tests xsl:override in XSLT 3.0">
+         <xslt3-specific count="40"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="8" name="package" description="Tests xsl:package in XSLT 3.0">
+         <xslt3-specific count="8"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="6" name="template" description="Tests template">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="1"/>
+         <xslt-other count="5"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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>
+      <test-set total-tests="202" name="axes" description="Tests axes">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="20"/>
+         <xslt-other count="182"/>
+      </test-set>
+      <test-set total-tests="4" name="castable" description="Tests castable">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="4"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="28" name="data-manipulation" description="Tests data-manipulation">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="28"/>
+      </test-set>
+      <test-set total-tests="104" name="expression" description="Tests expression">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="48"/>
+         <xslt-other count="54"/>
+      </test-set>
+      <test-set total-tests="4" name="for" description="Tests for">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="4"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="146" name="math" description="Tests math">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="34"/>
+         <xslt-other count="108"/>
+      </test-set>
+      <test-set total-tests="38" name="nodetest" description="Tests nodetest">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="36"/>
+         <xslt-other count="2"/>
+      </test-set>
+      <test-set total-tests="10" name="path" description="Tests path">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="10"/>
+      </test-set>
+      <test-set total-tests="52" name="predicate" description="Tests predicate">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="2"/>
+         <xslt-other count="50"/>
+      </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"/>
+      </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"/>
+      </test-set>
+      <test-set total-tests="10" name="type-functions" description="Tests type-functions">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="9"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="18" name="xpath-compat" description="Tests xpath-compat">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="0"/>
+      </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>
+      <test-set total-tests="38" name="accessor" description="Tests accessor">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="37"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </test-set>
+      <test-set total-tests="5" name="collation" description="Tests collation">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="5"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="4" name="collection" description="Tests collection">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="4"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="90" name="core-function" description="Tests core-function">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="5"/>
+         <xslt-other count="85"/>
+      </test-set>
+      <test-set total-tests="12" name="copy-of" description="Tests the XSLT 3.0 copy-of() function">
+         <xslt3-specific count="12"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="5" name="extension-functions" description="Tests extension-functions">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="5"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="70" name="format-number" description="Tests format-number">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="31"/>
+         <xslt-other count="37"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="40" name="id" description="Tests id">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="13"/>
+         <xslt-other count="27"/>
+      </test-set>
+      <test-set total-tests="52" name="json-to-xml" description="json-to-xml() function">
+         <xslt3-specific count="52"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="88" name="key" description="Test xsl:key and the key() function">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="31"/>
+         <xslt-other count="55"/>
+      </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.">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="205" name="position" description="Tests the position() function">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="32"/>
+         <xslt-other count="173"/>
+      </test-set>
+      <test-set total-tests="21" name="resolve-uri" description="Tests resolve-uri() and other functionality related to resolution of relative URIs">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="21"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="10" name="root" description="Tests root">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="10"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="9" name="snapshot" description="Tests the snapshot() function (unstreamed)">
+         <xslt3-specific count="9"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="5" name="stream-available" description="Tests stream-available() function in XSLT 3.0">
+         <xslt3-specific count="5"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="15" name="system-property" description="Tests system-property">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="10"/>
+         <xslt-other count="1"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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>
+      <test-set total-tests="47" name="analyze-string" description="Tests regex">
+         <xslt3-specific count="8"/>
+         <xslt2-specific count="39"/>
+         <xslt-other count="0"/>
+      </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.">
+         <xslt3-specific count="6"/>
+         <xslt2-specific count="34"/>
+         <xslt-other count="8"/>
+      </test-set>
+      <test-set total-tests="6" name="assert" description="Tests the xsl:assert instruction introduced in XSLT 3.0">
+         <xslt3-specific count="6"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="36" name="call-template" description="Tests call-template">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="14"/>
+         <xslt-other count="20"/>
+      </test-set>
+      <test-set total-tests="48" name="choose" description="Tests choose">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="23"/>
+         <xslt-other count="25"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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"/>
+         <xslt2-specific count="29"/>
+         <xslt-other count="4"/>
+      </test-set>
+      <test-set total-tests="103" name="copy" description="Tests copy">
+         <xslt3-specific count="30"/>
+         <xslt2-specific count="20"/>
+         <xslt-other count="53"/>
+      </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"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="30" name="lre" description="Tests lre">
+         <xslt3-specific count="7"/>
+         <xslt2-specific count="5"/>
+         <xslt-other count="18"/>
+      </test-set>
+      <test-set total-tests="64" name="merge" description="Tests the xsl:merge instruction">
+         <xslt3-specific count="64"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="32" name="message" description="Tests message">
+         <xslt3-specific count="8"/>
+         <xslt2-specific count="23"/>
+         <xslt-other count="1"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="158" name="number" description="Tests the xsl:number instruction">
+         <xslt3-specific count="8"/>
+         <xslt2-specific count="63"/>
+         <xslt-other count="87"/>
+      </test-set>
+      <test-set total-tests="10" name="on-empty" description="Tests sequence constructors containing xsl:on-empty instructions">
+         <xslt3-specific count="10"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="78" name="sort" description="Tests sort">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="42"/>
+         <xslt-other count="32"/>
+      </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"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="27" name="try" description="Tests try">
+         <xslt3-specific count="22"/>
+         <xslt2-specific count="5"/>
+         <xslt-other count="0"/>
+      </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>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="5" name="catalog" description="Tests that the test catalog is valid">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="3"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="34" name="collations" description="Tests collations">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="32"/>
+         <xslt-other count="2"/>
+      </test-set>
+      <test-set total-tests="18" name="embedded-stylesheet" description="Tests embedded-stylesheet">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="18"/>
+         <xslt-other count="0"/>
+      </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"/>
+         <xslt2-specific count="417"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="5" name="initial-function" description="Tests Call Function XSLT invocation">
+         <xslt3-specific count="5"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="4" name="initial-mode" description="Tests initial-mode">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="2"/>
+         <xslt-other count="1"/>
+      </test-set>
+      <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"/>
+      </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...">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="120"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="49" name="regex" description="Tests regex">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="49"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="987" name="regex-syntax" description="Tests regex-syntax">
+         <xslt3-specific count="987"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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>
+      <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"/>
+      </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"/>
+      </test-set>
+   </category>
+   <category name="Posture and Sweep">
+      <overview total-tests-in-category="919">
+         <xslt3-specific count="0"/>
+         <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">
+         <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"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="18"/>
+      </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"/>
+      </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"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="14"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="85"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="70"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="32"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="35"/>
+      </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}">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="23"/>
+      </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)">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="34"/>
+      </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)">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="16"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="16"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="18"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="58"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="53"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="52"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="81"/>
+      </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">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="27"/>
+      </test-set>
+   </category>
+   <category name="Streaming">
+      <overview total-tests-in-category="1962">
+         <xslt3-specific count="1962"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </overview>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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().">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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.">
+         <xslt3-specific count="1"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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.">
+         <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"/>
+      </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">
+         <xslt3-specific count="44"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </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"/>
+      </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"/>
+      </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"/>
+      </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"/>
+      </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">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </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">
+         <xslt3-specific count="62"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="15" name="si-for-each" description="xsl:for-each with streaming">
+         <xslt3-specific count="15"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="11" name="si-fork" description="xsl:value-of instruction with streaming">
+         <xslt3-specific count="11"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="25" name="si-iterate" description="xsl:iterate with streaming">
+         <xslt3-specific count="25"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="91" name="si-LRE" description="Literal result elements with streaming">
+         <xslt3-specific count="91"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="3" name="su-unclassified" description="Streamable stylesheet functions: category &#x22;unclassified&#x22;">
+         <xslt3-specific count="3"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="52" name="sx-GeneralComp-eq" description="&#x22;=&#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-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">
+         <xslt3-specific count="52"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="52" name="sx-GeneralComp-le" description="&#x22;&lt;=&#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-lt" 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-ne" description="&#x22;!=&#x22; operator with streaming">
+         <xslt3-specific count="52"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="23" name="sx-InstanceofExpr" description="&#x22;instance of&#x22; expression with streaming">
+         <xslt3-specific count="23"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <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"/>
+      </test-set>
+      <test-set total-tests="23" name="sx-TreatExpr" description="&#x22;treat as&#x22; expression with streaming">
+         <xslt3-specific count="23"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <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"/>
+      </test-set>
+   </category>
+   <category name="Typing and schema">
+      <overview total-tests-in-category="770">
+         <xslt3-specific count="90"/>
+         <xslt2-specific count="306"/>
+         <xslt-other count="374"/>
+      </overview>
+      <test-set total-tests="112" name="boolean" description="Tests boolean">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="23"/>
+         <xslt-other count="89"/>
+      </test-set>
+      <test-set total-tests="138" name="date" description="Tests date">
+         <xslt3-specific count="40"/>
+         <xslt2-specific count="98"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="36" name="maps" description="Tests maps">
+         <xslt3-specific count="36"/>
+         <xslt2-specific count="0"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="217" name="namespace" description="Tests namespace">
+         <xslt3-specific count="8"/>
+         <xslt2-specific count="69"/>
+         <xslt-other count="140"/>
+      </test-set>
+      <test-set total-tests="32" name="node" description="Tests node">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="9"/>
+         <xslt-other count="23"/>
+      </test-set>
+      <test-set total-tests="23" name="notation" description="Tests notation">
+         <xslt3-specific count="4"/>
+         <xslt2-specific count="19"/>
+         <xslt-other count="0"/>
+      </test-set>
+      <test-set total-tests="133" name="string" description="Tests string">
+         <xslt3-specific count="0"/>
+         <xslt2-specific count="12"/>
+         <xslt-other count="121"/>
+      </test-set>
+      <test-set total-tests="79" name="type" description="Tests type">
+         <xslt3-specific count="2"/>
+         <xslt2-specific count="76"/>
+         <xslt-other count="1"/>
+      </test-set>
+   </category>
+</report>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/admin/report-changes-since-xslt2.xsl	Fri Apr 03 02:17:48 2015 +0200
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    xmlns:math="http://www.w3.org/2005/xpath-functions/math"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns="http://www.w3.org/2012/10/xslt-test-catalog"
+    xpath-default-namespace="http://www.w3.org/2012/10/xslt-test-catalog"
+    exclude-result-prefixes="math xs xsi"
+    version="3.0">
+    
+    <xsl:output indent="no" method="text"/>
+    
+    <xsl:mode on-no-match="shallow-copy" />
+    
+    <xsl:template match="/">
+         <xsl:apply-templates select="report/*"/>
+    </xsl:template>
+    
+    <xsl:template match="feature">
+       <xsl:value-of select="@name" />
+       <xsl:text>: </xsl:text>
+       <xsl:value-of select="@count" />
+    </xsl:template>
+
+ </xsl:stylesheet>
\ No newline at end of file
--- a/admin/reports.xslt	Fri Apr 03 01:44:45 2015 +0200
+++ b/admin/reports.xslt	Fri Apr 03 02:17:48 2015 +0200
@@ -3,30 +3,197 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     xmlns:math="http://www.w3.org/2005/xpath-functions/math"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:xt="http://xt3report.com/functions"
     xmlns="http://www.w3.org/2012/10/xslt-test-catalog"
     xpath-default-namespace="http://www.w3.org/2012/10/xslt-test-catalog"
+    exclude-result-prefixes="math xs xsi"
     version="3.0">
     
     <xsl:output indent="yes"/>
     
+    <xsl:mode name="report" on-no-match="shallow-copy" />
+    
     <xsl:template match="/">
-        <report 
-            xmlns:xs="http://www.w3.org/2001/XMLSchema"
-            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <report>
             <xsl:apply-templates select="doc('../catalog.xml')" mode="catalog"/>
         </report>
     </xsl:template>
     
     <xsl:template match="/" mode="catalog">
         <xsl:variable name="all">
-            <xsl:apply-templates select="catalog/test-set" mode="#current" />
+            <category name="Attributes">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/attr/')]" mode="#current" />
+            </category>
+            <category name="Declarations">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/decl/')]" mode="#current" />
+            </category>
+            <category name="Expressions">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/expr/')]" mode="#current" />
+            </category>
+            <category name="Functions">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/fn/')]" mode="#current" />
+            </category>
+            <category name="Instructions">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/insn/')]" mode="#current" />
+            </category>
+            <category name="Miscellaneous">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/misc/')]" mode="#current" />
+            </category>
+            <category name="Posture and Sweep">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/sandp/')]" mode="#current" />
+            </category>
+            <category name="Streaming">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/strm/')]" mode="#current" />
+            </category>
+            <category name="Typing and schema">
+                <xsl:apply-templates select="catalog/test-set[@file/contains(., '/type/')]" mode="#current" />
+            </category>
         </xsl:variable>
-        <xsl:apply-templates select="$all/test-set
-            [test-case-information[xslt3[@count-specific + @count-forward > 0]]]" mode="report"/>
+        <xsl:apply-templates select="$all" mode="report" />
     </xsl:template>
     
-    <xsl:template match="test-set" mode="report">
-         <xsl:copy-of select="." />
+    <xsl:template match="/" mode="report">
+        <xsl:copy>
+            <xsl:copy-of select="@*" />
+            <overview total-tests-in-xt3="{sum(//test-set/@total-tests)}">
+                <xslt3-specific count="{sum(//xslt3-specific/@count)}" />
+                <xslt2-specific count="{sum(//xslt2-specific/@count)}" />
+                <xslt-other count="{sum(//xslt-other/@count)}" />
+            </overview>
+            <changes-since-xslt2>
+                <!-- packages -->
+                <feature name="Packages" count="{sum(//category[@name='Declarations']/test-set[@name=('override', 'package', 'use-package')]/@total-tests)}" />
+                <feature name="Packages - versioning" count="{15 (: deep query needed :)}" />
+                <feature name="Packages - package" count="{sum(//category[@name='Declarations']/test-set[@name=('package')]/@total-tests)}" />
+                <feature name="Packages - use-package" count="{sum(//category[@name='Declarations']/test-set[@name=('use-package')]/@total-tests)}" />
+                <feature name="Packages - override" count="{sum(//category[@name='Declarations']/test-set[@name=('override')]/@total-tests)}" />
+                <feature name="Packages - xquery" count="{'unknown'}" />
+
+                <!-- streaming -->
+                <feature name="Streaming" count="{sum(//category[@name=('Streaming', 'Posture and Sweep')]/test-set/@total-tests)}" />
+                <feature name="Streaming - instructions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'si')]/@total-tests)}" />
+                <feature name="Streaming - functions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sf')]/@total-tests)}" />
+                <feature name="Streaming - expressions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sx')]/@total-tests)}" />
+                <feature name="Streaming - posture and sweep" count="{sum(//category[@name=('Posture and Sweep')]/test-set/@total-tests)}" />
+                <feature name="Streaming - other" count="{sum(//category[@name='Streaming']/test-set[@name[not(starts-with(., 'si') or starts-with(., 'sf') or starts-with(., 'sx'))]]/@total-tests)}" />
+                
+                <!-- new declarations -->
+                <feature name="Accumulators" count="{sum(//category[@name='Declarations']/test-set[@name='accumulator']/@total-tests)}" />
+                <feature name="Mode declarations" count="{sum(//category[@name=('Attributes' (: there's no decl/mode category :) , 'Miscellaneous')]/test-set[@name=('initial-mode', 'mode')]/xslt3-specific/@count)}" />
+                <feature name="Import declaration order relaxation" count="{sum(//category[@name=('Declarations')]/test-set[@name=('import')]/xslt3-specific/@count)}" />
+                <feature name="Context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('context-item')]/@total-tests)}" />
+                <feature name="Global context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('global-context-item')]/@total-tests)}" />
+                
+                <!-- new instructions -->
+                <feature name="Try / catch" count="{sum(//category[@name='Instructions']/test-set[@name=('try')]/@total-tests)}" />
+                <feature name="Try / catch - rollback-output" count="{2 (: deep-search needed :)}" />
+                <feature name="Iteration (xsl:iterate)" count="{sum(//category[@name='Instructions']/test-set[@name=('iterate')]/@total-tests)}" />
+                <feature name="Dynamic evaluation (xsl:evaluate)" count="{sum(//category[@name='Instructions']/test-set[@name=('evaluate')]/@total-tests)}" />
+                <feature name="Assertions (xsl:assert)" count="{sum(//category[@name='Instructions']/test-set[@name=('assert')]/@total-tests)}" />
+                <feature name="Merging (xsl:merge, incl strm)" count="{sum(//category[@name=('Instructions', 'Streaming')]/test-set[@name=('merge', 'si-merge')]/@total-tests)}" />
+                <feature name="Conditional content construction (all)" count="{70 + 28 (: see next :)  + sum(//category[@name='Instructions']/test-set[@name=('on-empty', 'on-non-empty')]/@total-tests)}" />
+                <feature name="Conditional content construction - conditional-content" count="{70 (: deep search needed :)}" />
+                <feature name="Conditional content construction - on-empty" count="{28 (: deep search needed :) + sum(//category[@name='Instructions']/test-set[@name=('on-empty')]/@total-tests)}" />
+                <feature name="Conditional content construction - on-non-empty" count="{(: all are in cat on-non-empty :) sum(//category[@name='Instructions']/test-set[@name=('on-non-empty')]/@total-tests)}" />
+                <feature name="Enhancements to analyze-string" count="{sum(//category[@name=('Instructions')]/test-set[@name=('analyze-string')]/xslt3-specific/@count)}" />
+                <feature name="Value-of enhancement (empty)" count="{sum(//category[@name=('Instructions')]/test-set[@name=('value-of')]/xslt3-specific/@count)}" />
+                <feature name="Number (xsl:number format-number) enhancements" count="{sum(//category[@name=('Instructions', 'Functions')]/test-set[@name=('number', 'format-number')]/xslt3-specific/@count)}" />
+
+                <!-- new attributes -->
+                <feature name="Declared modes" count="{sum(//category[@name='Attributes']/test-set[@name=('declared-modes')]/@total-tests)}" />
+                <feature name="Decimal format with exponent-separator" count="{(: there is no cat decimal-format, create/move from format-number? :) sum(//category[@name=('Attributes', 'Declarations')]/test-set[@name=('decimal-format', 'exponent-separator')]/@total-tests)}" />
+                <feature name="Composite keys in for-each-group" count="{15 (: deep search needed:) (: sum(//category[@name=('Instructions')]/test-set[@name=('for-each-group')]/xslt3-specific/@count) :)}" />
+                <feature name="Composite keys in keys" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
+                <feature name="Select attribute on copy instruction" count="{sum(//category[@name=('Instructions')]/test-set[@name=('copy')]/xslt3-specific/@count)}" />
+                <feature name="Static variables and parameters" count="{sum(//category[@name=('Attributes')]/test-set[@name=('static')]/@total-tests)}" />
+                <feature name="Cache, override, identity attributes on function declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('function')]/xslt3-specific/@count)}" />
+                <feature name="Shadow attributes" count="{sum(//category[@name=('Attributes')]/test-set[@name=('shadow')]/@total-tests)}" />
+                <feature name="Use-when enhancements" count="{sum(//category[@name=('Attributes')]/test-set[@name=('use-when')]/xslt3-specific/@count)}" />
+                <feature name="Error-code attribute on message" count="{(: deep query needed :) sum(//category[@name=('Instructions')]/test-set[@name=('message')]/xslt3-specific/@count)}" />
+                <feature name="Html-version attribute on xsl:output/result-document (HTML5 support)" count="{30 (: 4 on r-doc, 26 on output, deep search needed :)}" />
+                <feature name="Item-separator attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
+                <feature name="Parameter-document attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
+                <feature name="Suppress-indentation attribute on xsl:output/result-document" count="{(: deep query needed? :) sum(//category[@name=('Declarations', 'Instructions')]/test-set[@name=('output', 'result-document')]/xslt3-specific/@count)}" />
+                <feature name="Disable-output-escaping silently ignored" count="{2 (: deep query needed? :)}" />
+                <feature name="Enhancements on typed=lax for non-validating processors" count="{'unknown'}" />
+
+                <!-- stylesheet initialization -->
+                <feature name="Initial function" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-function')]/@total-tests)}" />
+                <feature name="Initial template (xsl:initial-template)" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-template')]/xslt3-specific/@count)}" />
+                <feature name="Initial mode" count="{sum(//category[@name=('Attributes', 'Miscellaneous')]/test-set[@name=('initial-mode')]/xslt3-specific/@count)}" />
+
+                <!-- new functions -->
+                <feature name="Higher order functions" count="{sum(//category[@name='Expressions']/test-set[@name=('higher-order-functions')]/@total-tests)}" />
+                <feature name="New function current-output-uri" count="{sum(//category[@name=('Functions')]/test-set[@name=('current-output-uri')]/@total-tests)}" />
+                <feature name="New function collation-key" count="{sum(//category[@name=('Functions')]/test-set[@name=('collation-key')]/@total-tests)}" />
+                <feature name="New function copy-of" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('copy-of', 'sf-copy-of')]/@total-tests)}" />
+                <feature name="New function json-to-xml" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml')]/@total-tests)}" />
+                <feature name="New function snapshot" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('snapshot', 'sf-snapshot')]/@total-tests)}" />
+                <feature name="New function stream-available" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('stream-available', 'sf-stream-available')]/@total-tests)}" />
+                <feature name="New function xml-to-json" count="{sum(//category[@name=('Functions')]/test-set[@name=('xml-to-json')]/@total-tests)}" />
+                
+                <!-- changes in existing functions -->
+                <!-- note: regex-group, document, type-available and key have not changed, but normative references have -->
+                <feature name="Enhancements on function deep-equal (maps support)" count="{(: there are three tests in maps that test disappearance of deep-equal2 :) sum(//category[@name=('Functions')]/test-set[@name=('deep-equal')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function document (new error)" count="{(: there are three tests in maps that test disappearance of deep-equal2 :) sum(//category[@name=('Functions')]/test-set[@name=('document')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function format-number (moved, but new formats)" count="{sum(//category[@name=('Functions')]/test-set[@name=('format-number')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function key (composite keys)" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function type-available (XSD 1.1)" count="{sum(//category[@name=('Functions')]/test-set[@name=('type-available')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function system-property (new properties)" count="{sum(//category[@name=('Functions')]/test-set[@name=('system-property')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function unparsed-entity-uri (arity zero)" count="{(: only one 2.0 test :) sum(//category[@name=('Functions')]/test-set[@name=('unparsed-entity-uri')]/xslt3-specific/@count)}" />
+                <feature name="Enhancements on function unparsed-entity-public-id (arity zero)" count="{(: cat does not exist :) sum(//category[@name=('Functions')]/test-set[@name=('unparsed-entity-public-id')]/xslt3-specific/@count)}" />
+                
+                <!-- maps (functions count by hand) -->
+                <feature name="Maps" count="{sum(//category[@name='Typing and schema']/test-set[@name=('maps')]/@total-tests)}" />
+                <feature name="Maps - function contains" count="{1 (: in accumulator :)}" />
+                <feature name="Maps - function entry" count="{0 (: can't find, probably none yet :)}" />
+                <feature name="Maps - function get" count="{2 (: in accumulator, maps :)}" />
+                <feature name="Maps - function for-each" count="{0 (: can't find, probably none yet :)}" />
+                <feature name="Maps - function keys" count="{4 (: si-iterate, maps, accumulator :)}" />
+                <feature name="Maps - function merge" count="{5 (: si-iterate, maps, sx-MapExpr :)}" />
+                <feature name="Maps - function put" count="{2 (: accumulator :)}" />
+                <feature name="Maps - function remove" count="{0 (: can't find, probably none yet :)}" />
+                <feature name="Maps - function size" count="{2 (: error, maps :)}" />
+                
+                <!-- other -->
+                <feature name="Expand text, text value templates" count="{sum(//category[@name='Attributes']/test-set[@name=('expand-text')]/@total-tests)}" />
+                <feature name="Pattern enhancements" count="{sum(//category[@name='Attributes']/test-set[@name=('match')]/xslt3-specific/@count)}" />
+                <feature name="EQName adoption" count="{23 (: deep search needed, or new category :) }" />
+                <feature name="JSON support (total)" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml', 'xml-to-json')]/@total-tests)}" />
+                <feature name="Default collation enhancements (allowed on any element)" count="{sum(//category[@name=('Functions', 'Miscellaneous')]/test-set[@name=('collation', 'collations')]/xslt3-specific/@count)}" />
+                <feature name="Backwards compatibility (XSLT 3.0 to 2.0)" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('backwards', 'xslt-compat')]/xslt3-specific/@count)}" />
+                <feature name="New error conditions and codes" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('error')]/xslt3-specific/@count)}" />
+                <feature name="Recoverable errors do not exist anymore" count="{'unknown/todo'}" />
+                <feature name="Enhancements to serialization (all)" count="{sum(//category[@name=('Declarations', 'Instructions')]/test-set[@name=('output', 'result-document')]/xslt3-specific/@count)}" />
+                <feature name="Type attribute validation with complex types and copy/copy-of (XTTE1535)" count="{'unknown'}" />
+                <feature name="XSD 1.1 types" count="{'unknown'}" />
+
+            </changes-since-xslt2>
+            <xsl:apply-templates mode="report" />
+        </xsl:copy>
+    </xsl:template>
+    
+    <xsl:template match="category" mode="report">
+         <xsl:copy>
+             <xsl:copy-of select="@*" />
+             <overview total-tests-in-category="{sum(.//test-set/@total-tests)}">
+                 <xslt3-specific count="{sum(.//xslt3-specific/@count)}" />
+                 <xslt2-specific count="{sum(.//xslt2-specific/@count)}" />
+                 <xslt-other count="{sum(.//xslt-other/@count)}" />
+             </overview>
+             <xsl:apply-templates mode="report" />
+         </xsl:copy>
+    </xsl:template>
+    
+    <xsl:template match="*:report" mode="report">
+         <xsl:copy>
+             <overview>
+                 <xslt3-specific count="{sum(//xslt3-specific/@count)}" />
+                 <xslt2-specific count="{sum(//xslt2-specific/@count)}" />
+                 <xslt-other count="{sum(//xslt-other/@count)}" />
+             </overview>
+             <xsl:apply-templates />
+         </xsl:copy>
     </xsl:template>
     
     
@@ -35,52 +202,42 @@
         <xsl:apply-templates select="doc(concat('../', @file))" mode="test-set" />
     </xsl:template>
     
+    <!-- count the number of tests depending on the XSLT version supported -->
     <xsl:template match="/" mode="test-set">
-        <test-set name="{test-set/@name}" uri="{base-uri()}" description="{test-set/description}">
-            <test-case-information count="{count(test-set/test-case)}" >
-                <xslt1 count-total="{count(test-set/test-case/dependencies[spec[@value='XSLT10' or @value='XSLT10+']])}"
-                    count-specific="{count(test-set/test-case/dependencies[spec[@value='XSLT10']])}"
-                    count-backward="0"
-                    count-forward="{count(test-set/test-case/dependencies[spec[@value='XSLT10+']])}">
-                    
-                </xslt1>
-                <xslt2 count-total="{count(test-set/test-case/dependencies[spec[@value='XSLT20' or @value='XSLT20+' or @value='XSLT10+']])}"
-                    count-specific="{count(test-set/test-case/dependencies[spec[@value='XSLT20']])}"
-                    count-backward="{count(test-set/test-case/dependencies[spec[@value='XSLT10+']])}"
-                    count-forward="{count(test-set/test-case/dependencies[spec[@value='XSLT20+']])}">
-                    
-                </xslt2>
-                <xslt3 count-total="{count(test-set/test-case/dependencies[spec[@value='XSLT30' or @value='XSLT30+' or @value='XSLT20+' or @value='XSLT10+']])}" 
-                    count-specific="{count(test-set/test-case/dependencies[spec[@value='XSLT30']])}" 
-                    count-backward="{count(test-set/test-case/dependencies[spec[@value='XSLT20+' or @value='XSLT10+']])}" 
-                    count-forward="{count(test-set/test-case/dependencies[spec[@value='XSLT30+']])}">
-                    <coverage>
-                        <xsl:variable name="xsl-elements">
-                            <xsl:apply-templates select="test-set/test-case[1]/test/stylesheet/@file" mode="#current" />
-                        </xsl:variable>
-                        <xsl:for-each select="distinct-values($xsl-elements/xsl-elements/@found/tokenize(., ' '))">
-                            <element name="xsl:{.}" count="{count($xsl-elements/xsl-elements[contains(@found, current())])}" />
-                        </xsl:for-each>                        
-                    </coverage>
-                </xslt3>
-                <other count-nospec="{count(test-set/test-case/dependencies[not(spec)])}" 
-                    count-wrongvalue="{count(test-set/test-case/dependencies[spec[not(starts-with(@value,'XSLT3') or starts-with(@value,'XSLT2') or starts-with(@value,'XSLT1'))]])}" />
-                    
-            </test-case-information>
+        
+        
+        <xsl:variable name="xslt3" select="xt:count-tests-by-spec-version(test-set, 'XSLT30')" />
+        <xsl:variable name="xslt2" select="xt:count-tests-by-spec-version(test-set, 'XSLT20')" />
+        
+        <test-set total-tests="{count(test-set/test-case)}" name="{test-set/@name}" description="{normalize-space(test-set/description)}">
+            <xslt3-specific count="{$xslt3}" />
+            <xslt2-specific count="{$xslt2}" />
+            <xslt-other  count="{count(test-set/test-case) - $xslt3 - $xslt2}" />
+            <keywords use-when="false()">
+                <xsl:variable name="keywords" select="distinct-values(test-set/test-case/keywords/tokenize(., ' '))"/>
+                <xsl:variable name="keywords-with-dupes" select="test-set/test-case/keywords/tokenize(., ' ')" />
+                <xsl:for-each select="$keywords">
+                    <key name="{.}" count="{count($keywords-with-dupes[. = current()])}" />
+                </xsl:for-each>                    
+            </keywords>
         </test-set>
     </xsl:template>
     
-    <xsl:template match="@file" mode="test-set">
-        <xsl:variable name="base-path" select="replace(base-uri(.), '[^/]+$', '')" />
-       <xsl:try>
-           <xsl:apply-templates select="doc(concat($base-path, .))" mode="test-xslfile" />
-           <xsl:catch>
-               <xsl-elements error-in-file="{concat($base-path, .)}" error="" />
-           </xsl:catch>
-       </xsl:try>
-    </xsl:template>
+    <!-- count number of tests in a test-set based on spec-version -->
+    <xsl:function name="xt:count-tests-by-spec-version">
+        <xsl:param name="test-set" />
+        <xsl:param name="spec-version" />
+        
+        <xsl:variable name="count-all-in-set" select="count($test-set/test-case)" />
+        
+        <xsl:value-of select="(: if a top level dependencies is present :)
+            if($test-set/dependencies/spec[@value/contains(., $spec-version)])
+            
+            (: then count all, except those that are overridden :)
+            then $count-all-in-set -  count($test-set/test-case/dependencies[spec[@value/not(contains(., $spec-version))]])
+            
+            (: else, count only the ones that are overridden locally :)
+            else count($test-set/test-case/dependencies[spec[@value/contains(., $spec-version)]])" />
+    </xsl:function>
     
-    <xsl:template match="/" mode="test-xslfile">
-        <xsl-elements found="{distinct-values(//xsl:*/local-name())}" />
-    </xsl:template>
-</xsl:stylesheet>
\ No newline at end of file
+ </xsl:stylesheet>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/report/J.1. changes since 2.0 report.xml	Fri Apr 03 02:17:48 2015 +0200
@@ -0,0 +1,586 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report xmlns:q="http://www.w3.org/2014/05/test-report">
+   <spec-ref section="J.1" item="J.1 #01. A stylesheet may now consist of multiple packages.">
+      <aggregate total-queried-stylesheets="1769" total-tests-in-applicable-testsets="557" applicable-tests="477"/>
+      <test-set test-set-name="override" total-queried-stylesheets="23" description="Packages" instruction="package" applicable-tests="92">
+         <attribute name="name" count="23" element="package"/>
+         <attribute name="package-version" count="23" element="package"/>
+         <attribute name="version" count="23" element="package"/>
+         <attribute name="exclude-result-prefixes" count="23" element="package"/>
+         <attribute name="input-type-annotations" count="0" element="package"/>
+         <attribute name="declared-modes" count="0" element="package"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-validation" count="0" element="package"/>
+         <attribute name="default-collation" count="0" element="package"/>
+         <attribute name="extension-element-prefixes" count="0" element="package"/>
+         <attribute name="expand-text" count="0" element="package"/>
+         <attribute name="use-when" count="0" element="package"/>
+         <attribute name="xpath-default-namespaces" count="0" element="package"/>
+      </test-set>
+      <test-set test-set-name="override" total-queried-stylesheets="23" description="Packages -- use-package" instruction="use-package" applicable-tests="40">
+         <attribute name="name" count="20" element="use-package"/>
+         <attribute name="package-version" count="20" element="use-package"/>
+      </test-set>
+      <test-set test-set-name="override" total-queried-stylesheets="23" description="Packages -- override" instruction="override" applicable-tests="20">
+         <instruction name="xsl:template" count="6"/>
+         <instruction name="xsl:function" count="12"/>
+         <instruction name="xsl:accumulator" count="0"/>
+         <instruction name="xsl:variable" count="2"/>
+         <instruction name="xsl:param" count="0"/>
+         <instruction name="xsl:attribute-set" count="0"/>
+      </test-set>
+      <test-set test-set-name="package" total-queried-stylesheets="8" description="Packages" instruction="package" applicable-tests="30">
+         <attribute name="name" count="6" element="package"/>
+         <attribute name="package-version" count="8" element="package"/>
+         <attribute name="version" count="8" element="package"/>
+         <attribute name="exclude-result-prefixes" count="8" element="package"/>
+         <attribute name="input-type-annotations" count="0" element="package"/>
+         <attribute name="declared-modes" count="0" element="package"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-validation" count="0" element="package"/>
+         <attribute name="default-collation" count="0" element="package"/>
+         <attribute name="extension-element-prefixes" count="0" element="package"/>
+         <attribute name="expand-text" count="0" element="package"/>
+         <attribute name="use-when" count="0" element="package"/>
+         <attribute name="xpath-default-namespaces" count="0" element="package"/>
+      </test-set>
+      <test-set test-set-name="package" total-queried-stylesheets="8" description="Packages -- use-package" instruction="use-package" applicable-tests="1">
+         <attribute name="name" count="1" element="use-package"/>
+         <attribute name="package-version" count="0" element="use-package"/>
+      </test-set>
+      <test-set test-set-name="use-package" total-queried-stylesheets="38" description="Packages" instruction="package" applicable-tests="152">
+         <attribute name="name" count="38" element="package"/>
+         <attribute name="package-version" count="38" element="package"/>
+         <attribute name="version" count="38" element="package"/>
+         <attribute name="exclude-result-prefixes" count="38" element="package"/>
+         <attribute name="input-type-annotations" count="0" element="package"/>
+         <attribute name="declared-modes" count="0" element="package"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-validation" count="0" element="package"/>
+         <attribute name="default-collation" count="0" element="package"/>
+         <attribute name="extension-element-prefixes" count="0" element="package"/>
+         <attribute name="expand-text" count="0" element="package"/>
+         <attribute name="use-when" count="0" element="package"/>
+         <attribute name="xpath-default-namespaces" count="0" element="package"/>
+      </test-set>
+      <test-set test-set-name="use-package" total-queried-stylesheets="38" description="Packages -- use-package" instruction="use-package" applicable-tests="60">
+         <attribute name="name" count="30" element="use-package"/>
+         <attribute name="package-version" count="30" element="use-package"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Packages" instruction="package" applicable-tests="43">
+         <attribute name="version" count="16" element="package"/>
+         <attribute name="name" count="16" element="package"/>
+         <attribute name="package-version" count="7" element="package"/>
+         <attribute name="exclude-result-prefixes" count="4" element="package"/>
+         <attribute name="input-type-annotations" count="0" element="package"/>
+         <attribute name="declared-modes" count="0" element="package"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-validation" count="0" element="package"/>
+         <attribute name="default-collation" count="0" element="package"/>
+         <attribute name="extension-element-prefixes" count="0" element="package"/>
+         <attribute name="expand-text" count="0" element="package"/>
+         <attribute name="use-when" count="0" element="package"/>
+         <attribute name="xpath-default-namespaces" count="0" element="package"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Packages -- use-package" instruction="use-package" applicable-tests="30">
+         <attribute name="name" count="15" element="use-package"/>
+         <attribute name="package-version" count="15" element="use-package"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Packages -- override" instruction="override" applicable-tests="9">
+         <instruction name="xsl:template" count="9"/>
+         <instruction name="xsl:function" count="0"/>
+         <instruction name="xsl:accumulator" count="0"/>
+         <instruction name="xsl:variable" count="0"/>
+         <instruction name="xsl:param" count="0"/>
+         <instruction name="xsl:attribute-set" count="0"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #02.a. A mode may be declared to be streamable, and rules are given that constrain what the template rules in a streamable mode can do.">
+      <aggregate total-queried-stylesheets="98" total-tests-in-applicable-testsets="101" applicable-tests="31"/>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Streamable modes" instruction="mode" applicable-tests="31">
+         <attribute name="streamable" count="31" element="mode"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #02.b. An xsl:mode declaration may define the action to be taken when there is no matching template rule, and the action to be taken when there are multiple matching template rules.">
+      <aggregate total-queried-stylesheets="634" total-tests-in-applicable-testsets="557" applicable-tests="107"/>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Modes with warning-on-no-match, on-multiple-match and on-no-match" instruction="mode" applicable-tests="98">
+         <attribute name="on-no-match" count="88" element="mode"/>
+         <attribute name="warning-on-no-match" count="9" element="mode"/>
+         <attribute name="on-multiple-match" count="1" element="mode"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Modes with warning-on-no-match, on-multiple-match and on-no-match" instruction="mode" applicable-tests="9">
+         <attribute name="on-multiple-match" count="3" element="mode"/>
+         <attribute name="on-no-match" count="6" element="mode"/>
+         <attribute name="warning-on-no-match" count="0" element="mode"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #02.c. An xsl:mode declaration may indicate that the template rules in a given mode are designed to process typed (schema-validated) nodes only, or untyped nodes only. It may also indicate that element names appearing in match patterns for the mode are only to match elements in the source document that have been validated against the corresponding element declarations in the schema.">
+      <aggregate total-queried-stylesheets="634" total-tests-in-applicable-testsets="557" applicable-tests="9"/>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Typed modes" instruction="mode" applicable-tests="6">
+         <attribute name="typed" count="6" element="mode"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Typed modes" instruction="mode" applicable-tests="3">
+         <attribute name="typed" count="3" element="mode"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #02.d. A default mode can be declared for a stylesheet module, making it easier to reuse existing stylesheet modules to construct a composite stylesheet.">
+      <aggregate total-queried-stylesheets="634" total-tests-in-applicable-testsets="557" applicable-tests="8"/>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Default modes" instruction="*" applicable-tests="6">
+         <attribute name="default-mode" count="3" element="stylesheet"/>
+         <attribute name="default-mode" count="0" element="transform"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-mode" count="3" element="template"/>
+         <attribute name="default-mode" count="0" element="function"/>
+         <attribute name="default-mode" count="0" element="lre"/>
+         <attribute name="default-mode" count="0" element="for-each"/>
+         <attribute name="default-mode" count="0" element="for-each-group"/>
+         <attribute name="default-mode" count="0" element="merge-action"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Default modes" instruction="*" applicable-tests="2">
+         <attribute name="default-mode" count="1" element="stylesheet"/>
+         <attribute name="default-mode" count="0" element="transform"/>
+         <attribute name="default-mode" count="0" element="package"/>
+         <attribute name="default-mode" count="1" element="template"/>
+         <attribute name="default-mode" count="0" element="function"/>
+         <attribute name="default-mode" count="0" element="lre"/>
+         <attribute name="default-mode" count="0" element="for-each"/>
+         <attribute name="default-mode" count="0" element="for-each-group"/>
+         <attribute name="default-mode" count="0" element="merge-action"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #03.b. The xsl:iterate instruction allows iterative processing of a sequence, with the ability for the processing of one item to depend on the results of processing of previous items, and with the ability to terminate the iteration before all the items in the sequence have been processed.">
+      <aggregate total-queried-stylesheets="583" total-tests-in-applicable-testsets="557" applicable-tests="0"/>
+      <test-set test-set-name="iterate" total-queried-stylesheets="33" description="xsl:iterate instruction" instruction="iterate" applicable-tests="0"/>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="xsl:iterate instruction" instruction="iterate" applicable-tests="0"/>
+      <test-set test-set-name="si-iterate" total-queried-stylesheets="14" description="xsl:iterate instruction" instruction="iterate" applicable-tests="0"/>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #03.c. The xsl:merge instruction allows several input sequences to be merged into a single output sequence, based on the value of a merge key.">
+      <aggregate total-queried-stylesheets="2448" total-tests-in-applicable-testsets="557" applicable-tests="481"/>
+      <test-set test-set-name="merge" total-queried-stylesheets="64" description="xsl:merge instruction" instruction="merge" applicable-tests="5">
+         <attribute name="xml:base" count="5"/>
+      </test-set>
+      <test-set test-set-name="merge" total-queried-stylesheets="64" description="xsl:merge-source instruction" instruction="merge-source" applicable-tests="158">
+         <attribute name="for-each-item" count="9"/>
+         <attribute name="select" count="94"/>
+         <attribute name="sort-before-merge" count="8"/>
+         <attribute name="for-each-stream" count="21"/>
+         <attribute name="validation" count="8"/>
+         <attribute name="name" count="10"/>
+         <attribute name="type" count="4"/>
+         <attribute name="streamable" count="4"/>
+      </test-set>
+      <test-set test-set-name="merge" total-queried-stylesheets="64" description="Streamable xsl:merge-key instruction" instruction="merge-key" applicable-tests="182">
+         <attribute name="select" count="114"/>
+         <attribute name="order" count="35"/>
+         <attribute name="data-type" count="24"/>
+         <attribute name="lang" count="4"/>
+         <attribute name="stable" count="1"/>
+         <attribute name="collation" count="4"/>
+      </test-set>
+      <test-set test-set-name="merge" total-queried-stylesheets="64" description="xsl:merge-action instruction" instruction="merge-action" applicable-tests="0"/>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="xsl:merge instruction" instruction="merge" applicable-tests="0"/>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="xsl:merge-source instruction" instruction="merge-source" applicable-tests="34">
+         <attribute name="name" count="14"/>
+         <attribute name="select" count="16"/>
+         <attribute name="for-each-item" count="1"/>
+         <attribute name="for-each-stream" count="2"/>
+         <attribute name="streamable" count="1"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Streamable xsl:merge-key instruction" instruction="merge-key" applicable-tests="19">
+         <attribute name="select" count="17"/>
+         <attribute name="lang" count="2"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="xsl:merge-action instruction" instruction="merge-action" applicable-tests="0"/>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="xsl:merge instruction" instruction="merge" applicable-tests="0"/>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="xsl:merge-source instruction" instruction="merge-source" applicable-tests="34">
+         <attribute name="name" count="4"/>
+         <attribute name="streamable" count="10"/>
+         <attribute name="for-each-stream" count="9"/>
+         <attribute name="select" count="10"/>
+         <attribute name="for-each-item" count="1"/>
+      </test-set>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="Streamable xsl:merge-key instruction" instruction="merge-key" applicable-tests="16">
+         <attribute name="select" count="10"/>
+         <attribute name="order" count="6"/>
+      </test-set>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="xsl:merge-action instruction" instruction="merge-action" applicable-tests="0"/>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="Streamable xsl:merge instruction" instruction="merge" applicable-tests="0"/>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="Streamable xsl:merge-source instruction" instruction="merge-source" applicable-tests="23">
+         <attribute name="name" count="2"/>
+         <attribute name="streamable" count="7"/>
+         <attribute name="for-each-stream" count="7"/>
+         <attribute name="select" count="7"/>
+      </test-set>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="Streamable xsl:merge-action instruction" instruction="merge-action" applicable-tests="0"/>
+      <test-set test-set-name="si-merge" total-queried-stylesheets="6" description="Streamable xsl:merge-key instruction" instruction="merge-key" applicable-tests="10">
+         <attribute name="select" count="7"/>
+         <attribute name="order" count="3"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #03.d. The xsl:fork instruction allows multiple results to be computed during a single pass of a streamed input document.">
+      <aggregate total-queried-stylesheets="3" total-tests-in-applicable-testsets="11" applicable-tests="11"/>
+      <test-set test-set-name="si-fork" total-queried-stylesheets="3" description="xsl:fork instruction" instruction="fork" applicable-tests="11">
+         <instruction name="xsl:for-each-group" count="0"/>
+         <instruction name="xsl:sequence" count="11"/>
+         <instruction name="xsl:fallback" count="0"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #04.a. The new top-level declaration xsl:accumulator is introduced. An accumulator represents information about a node in a document that can be computed during a streamed pass over the document, starting at the start and ending at that node.">
+      <aggregate total-queried-stylesheets="1126" total-tests-in-applicable-testsets="557" applicable-tests="215"/>
+      <test-set test-set-name="accumulator" total-queried-stylesheets="27" description="xsl:accumulator declaration" instruction="accumulator" applicable-tests="134">
+         <attribute name="name" count="32"/>
+         <attribute name="as" count="33"/>
+         <attribute name="initial-value" count="32"/>
+         <attribute name="_streamable" count="13"/>
+         <attribute name="_initial-value" count="1"/>
+         <attribute name="applies-to" count="5"/>
+         <attribute name="_applies-to" count="2"/>
+         <attribute name="streamable" count="14"/>
+         <attribute name="_name" count="2"/>
+      </test-set>
+      <test-set test-set-name="accumulator" total-queried-stylesheets="27" description="Streaming xsl:accumulator declaration" instruction="accumulator" applicable-tests="47">
+         <attribute name="name" count="11"/>
+         <attribute name="as" count="11"/>
+         <attribute name="initial-value" count="11"/>
+         <attribute name="streamable" count="11"/>
+         <attribute name="applies-to" count="3"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="xsl:accumulator declaration" instruction="accumulator" applicable-tests="28">
+         <attribute name="name" count="12"/>
+         <attribute name="initial-value" count="12"/>
+         <attribute name="streamable" count="4"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Streaming xsl:accumulator declaration" instruction="accumulator" applicable-tests="6">
+         <attribute name="name" count="2"/>
+         <attribute name="streamable" count="2"/>
+         <attribute name="initial-value" count="2"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #04.b. New functions copy-of and snapshot are provided, to enable streaming applications to operate in 'windowing' mode, where the input document is divided into a sequence of small subtrees processed one at a time.">
+      <aggregate total-queried-stylesheets="380" total-tests-in-applicable-testsets="236" applicable-tests="41"/>
+      <test-set test-set-name="match" total-queried-stylesheets="235" description="fn:copy-of function" applicable-tests="1" attribute="copy-of">
+         <function name="copy-of" count="1"/>
+      </test-set>
+      <test-set test-set-name="streamable" total-queried-stylesheets="124" description="fn:copy-of function" applicable-tests="2" attribute="copy-of">
+         <function name="copy-of" count="2"/>
+      </test-set>
+      <test-set test-set-name="copy-of" total-queried-stylesheets="12" description="fn:copy-of function" applicable-tests="12" attribute="copy-of">
+         <function name="copy-of" count="12"/>
+      </test-set>
+      <test-set test-set-name="snapshot" total-queried-stylesheets="7" description="fn:snapshot function" applicable-tests="19" attribute="snapshot">
+         <function name="snapshot" count="19"/>
+      </test-set>
+      <test-set test-set-name="si-copy-of" total-queried-stylesheets="2" description="fn:copy-of function" applicable-tests="7" attribute="copy-of">
+         <function name="copy-of" count="7"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #05.a. The xsl:try instruction allows recovery from dynamic errors.">
+      <aggregate total-queried-stylesheets="1434" total-tests-in-applicable-testsets="557" applicable-tests="69"/>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="mode" total-queried-stylesheets="98" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="assert" total-queried-stylesheets="1" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="assert" total-queried-stylesheets="1" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="evaluate" total-queried-stylesheets="39" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="evaluate" total-queried-stylesheets="39" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="try" total-queried-stylesheets="26" description="Structured error handling" instruction="try" applicable-tests="8">
+         <attribute name="select" count="8" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="try" total-queried-stylesheets="26" description="Structured error handling" instruction="try" applicable-tests="8">
+         <attribute name="select" count="8" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Structured error handling" instruction="try" applicable-tests="3">
+         <attribute name="select" count="2" element="try"/>
+         <attribute name="rollback-output" count="1" element="try"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Structured error handling" instruction="try" applicable-tests="2">
+         <attribute name="select" count="2" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="si-try" total-queried-stylesheets="2" description="Structured error handling" instruction="try" applicable-tests="24">
+         <attribute name="select" count="24" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="si-try" total-queried-stylesheets="2" description="Structured error handling" instruction="try" applicable-tests="24">
+         <attribute name="select" count="24" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="try"/>
+         <attribute name="rollback-output" count="0" element="try"/>
+      </test-set>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Structured error handling" instruction="try" applicable-tests="0">
+         <attribute name="select" count="0" element="catch"/>
+         <attribute name="errors" count="0" element="catch"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #05.b. A new xsl:evaluate instruction is provided, to allow evaluation of XPath expressions constructed dynamically from strings, or read from a source document.">
+      <aggregate total-queried-stylesheets="601" total-tests-in-applicable-testsets="557" applicable-tests="109"/>
+      <test-set test-set-name="evaluate" total-queried-stylesheets="39" description="Dynamic expression evaluation" instruction="evaluate" applicable-tests="103">
+         <attribute name="xpath" count="54" element="evaluate"/>
+         <attribute name="as" count="9" element="evaluate"/>
+         <attribute name="context-item" count="18" element="evaluate"/>
+         <attribute name="schema-aware" count="12" element="evaluate"/>
+         <attribute name="base-uri" count="6" element="evaluate"/>
+         <attribute name="namespace-context" count="4" element="evaluate"/>
+         <attribute name="with-params" count="0" element="evaluate"/>
+      </test-set>
+      <test-set test-set-name="try" total-queried-stylesheets="26" description="Dynamic expression evaluation" instruction="evaluate" applicable-tests="1">
+         <attribute name="xpath" count="1" element="evaluate"/>
+         <attribute name="as" count="0" element="evaluate"/>
+         <attribute name="base-uri" count="0" element="evaluate"/>
+         <attribute name="with-params" count="0" element="evaluate"/>
+         <attribute name="context-item" count="0" element="evaluate"/>
+         <attribute name="namespace-context" count="0" element="evaluate"/>
+         <attribute name="schema-aware" count="0" element="evaluate"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Dynamic expression evaluation" instruction="evaluate" applicable-tests="5">
+         <attribute name="xpath" count="3" element="evaluate"/>
+         <attribute name="namespace-context" count="1" element="evaluate"/>
+         <attribute name="context-item" count="1" element="evaluate"/>
+         <attribute name="as" count="0" element="evaluate"/>
+         <attribute name="base-uri" count="0" element="evaluate"/>
+         <attribute name="with-params" count="0" element="evaluate"/>
+         <attribute name="schema-aware" count="0" element="evaluate"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #05.c. The xsl:assert instruction allows arbitrary assertions about the state of variables or the input document, improving testability and robustness.">
+      <aggregate total-queried-stylesheets="536" total-tests-in-applicable-testsets="557" applicable-tests="0"/>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Assertions with xsl:assert" instruction="evaluate" applicable-tests="0">
+         <attribute name="test" count="0" element="assert"/>
+         <attribute name="select" count="0" element="assert"/>
+         <attribute name="error-code" count="0" element="assert"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1"
+             item="J.1 #06. Text nodes within a sequence constructor may now contain text value templates (XPath expressions enclosed in curly brackets), if this is enabled by setting expand-text='yes' on an enclosing element.">
+      <aggregate total-queried-stylesheets="28" total-tests-in-applicable-testsets="29" applicable-tests="8"/>
+      <test-set test-set-name="expand-text" total-queried-stylesheets="28" description="Text value templates" applicable-tests="8" attribute="expand-text">
+         <instruction name="xsl:template" count="7"/>
+         <literal-result-element name="out" count="1"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #07. The syntax of patterns has been generalized. Patterns may now match any item (not only nodes).">
+      <aggregate total-queried-stylesheets="250" total-tests-in-applicable-testsets="236" applicable-tests="0"/>
+      <test-set test-set-name="match" total-queried-stylesheets="235" description="Text value templates" instruction="template" applicable-tests="0"/>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Text value templates" instruction="template" applicable-tests="0"/>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #08. A new datatype, called a map, has been introduced, together with supporting functions, operators, and type syntax.">
+      <aggregate total-queried-stylesheets="63" total-tests-in-applicable-testsets="36" applicable-tests="7"/>
+      <test-set test-set-name="si-map" total-queried-stylesheets="4" description="Map instruction" instruction="map" applicable-tests="0"/>
+      <test-set test-set-name="si-map" total-queried-stylesheets="4" description="Map instruction (xsl:map-entry)" instruction="map-entry" applicable-tests="0"/>
+      <test-set test-set-name="si-map" total-queried-stylesheets="4" description="Map functions" applicable-tests="0" attribute="map">
+         <function name="map:merge" count="0"/>
+         <function name="map:size" count="0"/>
+         <function name="map:keys" count="0"/>
+         <function name="map:contains" count="0"/>
+         <function name="map:get" count="0"/>
+         <function name="map:put" count="0"/>
+         <function name="map:entry" count="0"/>
+         <function name="map:remove" count="0"/>
+         <function name="map:for-each" count="0"/>
+         <function name="collation-key" count="0"/>
+      </test-set>
+      <test-set test-set-name="sx-MapExpr" total-queried-stylesheets="3" description="Map instruction" instruction="map" applicable-tests="0"/>
+      <test-set test-set-name="sx-MapExpr" total-queried-stylesheets="3" description="Map functions" applicable-tests="1" attribute="map">
+         <function name="map:merge" count="1"/>
+         <function name="map:size" count="0"/>
+         <function name="map:keys" count="0"/>
+         <function name="map:contains" count="0"/>
+         <function name="map:get" count="0"/>
+         <function name="map:put" count="0"/>
+         <function name="map:entry" count="0"/>
+         <function name="map:remove" count="0"/>
+         <function name="map:for-each" count="0"/>
+         <function name="collation-key" count="0"/>
+      </test-set>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Map instruction" instruction="map" applicable-tests="0"/>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Map instruction (xsl:map-entry)" instruction="map-entry" applicable-tests="0"/>
+      <test-set test-set-name="maps" total-queried-stylesheets="15" description="Map functions" applicable-tests="6" attribute="map">
+         <function name="map:merge" count="2"/>
+         <function name="map:size" count="2"/>
+         <function name="map:keys" count="1"/>
+         <function name="map:contains" count="0"/>
+         <function name="map:get" count="1"/>
+         <function name="map:put" count="0"/>
+         <function name="map:entry" count="0"/>
+         <function name="map:remove" count="0"/>
+         <function name="map:for-each" count="0"/>
+         <function name="collation-key" count="0"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.b. The xsl:copy instruction now has a select attribute, which is convenient when it is used inside a function where there is no context item.">
+      <aggregate total-queried-stylesheets="107" total-tests-in-applicable-testsets="103" applicable-tests="99"/>
+      <test-set test-set-name="copy" total-queried-stylesheets="102" description="Copy with @select" instruction="copy" applicable-tests="28">
+         <attribute name="select" count="17"/>
+         <attribute name="on-empty" count="11"/>
+      </test-set>
+      <test-set test-set-name="si-copy" total-queried-stylesheets="5" description="Copy with @select" instruction="copy" applicable-tests="71">
+         <attribute name="select" count="39"/>
+         <attribute name="use-attribute-sets" count="4"/>
+         <attribute name="on-empty" count="6"/>
+         <attribute name="validation" count="17"/>
+         <attribute name="type" count="5"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.c. Composite keys are supported in xsl:for-each-group.">
+      <aggregate total-queried-stylesheets="102" total-tests-in-applicable-testsets="69" applicable-tests="33"/>
+      <test-set test-set-name="for-each-group" total-queried-stylesheets="66" description="Composite keys in for-each-group" instruction="for-each-group" applicable-tests="21">
+         <attribute name="select" count="7"/>
+         <attribute name="group-by" count="3"/>
+         <attribute name="composite" count="7"/>
+         <attribute name="group-adjacent" count="3"/>
+         <attribute name="group-starting-with" count="1"/>
+      </test-set>
+      <test-set test-set-name="si-for-each-group" total-queried-stylesheets="36" description="Composite keys in for-each-group" instruction="for-each-group" applicable-tests="12">
+         <attribute name="select" count="4"/>
+         <attribute name="group-adjacent" count="4"/>
+         <attribute name="composite" count="4"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.d. The override attribute of xsl:function is renamed override-extension-function, retaining the old name as a deprecated synonym.">
+      <aggregate total-queried-stylesheets="73" total-tests-in-applicable-testsets="74" applicable-tests="11"/>
+      <test-set test-set-name="function" total-queried-stylesheets="73" description="Renaming of override attribute into override-extension-function" instruction="function" applicable-tests="11">
+         <attribute name="override-extension-function" count="9" element="function"/>
+         <attribute name="override" count="2" element="function"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.d. Two new attributes have been added to xsl:function to provide increased scope for optimization: identity-sensitive and cache.">
+      <aggregate total-queried-stylesheets="73" total-tests-in-applicable-testsets="74" applicable-tests="3"/>
+      <test-set test-set-name="function" total-queried-stylesheets="73" description="Functions with identity-sensitive or cache" instruction="function" applicable-tests="3">
+         <attribute name="identity-sensitive" count="3" element="function"/>
+         <attribute name="cache" count="0" element="function"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.f. The rule requiring xsl:import declarations to precede all other declarations in a stylesheet module has been removed.">
+      <aggregate total-queried-stylesheets="40" total-tests-in-applicable-testsets="42" applicable-tests="0"/>
+      <test-set test-set-name="import" total-queried-stylesheets="40" description="Order of xsl:import with preceding declarations" instruction="import" applicable-tests="0"/>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.g. Composite keys are supported in xsl:for-each-group.">
+      <aggregate total-queried-stylesheets="625" total-tests-in-applicable-testsets="557" applicable-tests="8"/>
+      <test-set test-set-name="key" total-queried-stylesheets="89" description="Composite keys in xsl:key" instruction="key" applicable-tests="4">
+         <attribute name="name" count="1"/>
+         <attribute name="match" count="1"/>
+         <attribute name="use" count="1"/>
+         <attribute name="composite" count="1"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Composite keys in xsl:key" instruction="key" applicable-tests="4">
+         <attribute name="name" count="1"/>
+         <attribute name="match" count="1"/>
+         <attribute name="use" count="1"/>
+         <attribute name="composite" count="1"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.h. A new attribute on xsl:message allows specification of the error code to be returned with terminate='yes' is specified.">
+      <aggregate total-queried-stylesheets="568" total-tests-in-applicable-testsets="557" applicable-tests="12"/>
+      <test-set test-set-name="message" total-queried-stylesheets="32" description="Error codes returned from xsl:message" instruction="message" applicable-tests="8">
+         <attribute name="terminate" count="4"/>
+         <attribute name="error-code" count="4"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Error codes returned from xsl:message" instruction="message" applicable-tests="4">
+         <attribute name="terminate" count="2"/>
+         <attribute name="error-code" count="2"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.j. An xsl:template declaration may contain an xsl:context-item element to declare the required type of the context item when the template is called.">
+      <aggregate total-queried-stylesheets="564" total-tests-in-applicable-testsets="557" applicable-tests="37"/>
+      <test-set test-set-name="context-item" total-queried-stylesheets="28" description="Error codes returned from xsl:message" instruction="context-item" applicable-tests="36">
+         <attribute name="as" count="17"/>
+         <attribute name="use" count="18"/>
+         <attribute name="select" count="1"/>
+      </test-set>
+      <test-set test-set-name="error" total-queried-stylesheets="536" description="Error codes returned from xsl:message" instruction="context-item" applicable-tests="1">
+         <attribute name="use" count="1"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.k. An empty xsl:value-of instruction with no select attribute is now permitted; its effect is to construct a zero-length text node.">
+      <aggregate total-queried-stylesheets="910" total-tests-in-applicable-testsets="202" applicable-tests="11"/>
+      <test-set test-set-name="select" total-queried-stylesheets="156" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="shadow" total-queried-stylesheets="6" description="xsl:value-of without @select" instruction="value-of" applicable-tests="2">
+         <attribute name="_select" count="2"/>
+      </test-set>
+      <test-set test-set-name="streamable" total-queried-stylesheets="124" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="use-when" total-queried-stylesheets="87" description="xsl:value-of without @select" instruction="value-of" applicable-tests="1">
+         <attribute name="my" count="1"/>
+      </test-set>
+      <test-set test-set-name="version" total-queried-stylesheets="31" description="xsl:value-of without @select" instruction="value-of" applicable-tests="2">
+         <attribute name="extension-element-prefixes" count="1"/>
+         <attribute name="version" count="1"/>
+      </test-set>
+      <test-set test-set-name="attribute-set" total-queried-stylesheets="44" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="override" total-queried-stylesheets="23" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="axes" total-queried-stylesheets="202" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="construct-node" total-queried-stylesheets="33" description="xsl:value-of without @select" instruction="value-of" applicable-tests="4">
+         <attribute name="separator" count="4"/>
+      </test-set>
+      <test-set test-set-name="result-document" total-queried-stylesheets="103" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="si-value-of" total-queried-stylesheets="1" description="xsl:value-of without @select" instruction="value-of" applicable-tests="0"/>
+      <test-set test-set-name="date" total-queried-stylesheets="100" description="xsl:value-of without @select" instruction="value-of" applicable-tests="2">
+         <attribute name="_select" count="2"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #09.l. The xsl:variable and xsl:param elements may now specify static='yes'">
+      <aggregate total-queried-stylesheets="180" total-tests-in-applicable-testsets="80" applicable-tests="55"/>
+      <test-set test-set-name="shadow" total-queried-stylesheets="6" description="Static variables" instruction="variable" applicable-tests="12">
+         <attribute name="name" count="4"/>
+         <attribute name="static" count="4"/>
+         <attribute name="select" count="4"/>
+      </test-set>
+      <test-set test-set-name="use-when" total-queried-stylesheets="87" description="Static variables" instruction="variable" applicable-tests="34">
+         <attribute name="name" count="11"/>
+         <attribute name="select" count="11"/>
+         <attribute name="static" count="11"/>
+         <attribute name="xml:base" count="1"/>
+      </test-set>
+      <test-set test-set-name="use-when" total-queried-stylesheets="87" description="Static parameters" instruction="param" applicable-tests="9">
+         <attribute name="name" count="3"/>
+         <attribute name="select" count="3"/>
+         <attribute name="static" count="3"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #10. New functions are available to import and export data in JSON format.">
+      <aggregate total-queried-stylesheets="5" total-tests-in-applicable-testsets="52" applicable-tests="110"/>
+      <test-set test-set-name="json-to-xml" total-queried-stylesheets="3" description="JSON functions" applicable-tests="51" attribute="json-to-xml">
+         <function name="xml-to-json" count="0"/>
+         <function name="json-to-xml" count="51"/>
+      </test-set>
+      <test-set test-set-name="xml-to-json" total-queried-stylesheets="2" description="JSON functions" applicable-tests="59" attribute="xml-to-json">
+         <function name="xml-to-json" count="30"/>
+         <function name="json-to-xml" count="29"/>
+      </test-set>
+   </spec-ref>
+   <spec-ref section="J.1" item="J.1 #14. The rule that effectively prevented references to external documents in [xsl:]use-when expressions has been removed.">
+      <aggregate total-queried-stylesheets="87" total-tests-in-applicable-testsets="80" applicable-tests="1"/>
+      <test-set test-set-name="use-when" total-queried-stylesheets="87" description="use-when with external documents" applicable-tests="1" attribute="use-when">
+         <function name="doc" count="1"/>
+         <function name="document" count="0"/>
+         <function name="collection" count="0"/>
+         <function name="unparsed-text" count="0"/>
+         <function name="unparsed-text-lines" count="0"/>
+      </test-set>
+   </spec-ref>
+</report>