admin/reports.xslt
branchreport
changeset 948 34e4ac52bc0a
parent 946 782b585bea00
equal deleted inserted replaced
947:a17e7f87c5ba 948:34e4ac52bc0a
    60                 <xslt2-specific count="{sum(//xslt2-specific/@count)}" />
    60                 <xslt2-specific count="{sum(//xslt2-specific/@count)}" />
    61                 <xslt-other count="{sum(//xslt-other/@count)}" />
    61                 <xslt-other count="{sum(//xslt-other/@count)}" />
    62             </overview>
    62             </overview>
    63             <changes-since-xslt2>
    63             <changes-since-xslt2>
    64                 <!-- packages -->
    64                 <!-- packages -->
    65                 <feature name="Packages" count="{sum(//category[@name='Declarations']/test-set[@name=('override', 'package', 'use-package')]/@total-tests)}" />
    65                 <feature group="Packages" name="Packages - versioning" count="{15 (: deep query needed :)}" />
    66                 <feature name="Packages - versioning" count="{15 (: deep query needed :)}" />
    66                 <feature group="Packages" name="Packages - package" count="{sum(//category[@name='Declarations']/test-set[@name=('package')]/@total-tests)}" />
    67                 <feature name="Packages - package" count="{sum(//category[@name='Declarations']/test-set[@name=('package')]/@total-tests)}" />
    67                 <feature group="Packages" name="Packages - use-package" count="{sum(//category[@name='Declarations']/test-set[@name=('use-package')]/@total-tests)}" />
    68                 <feature name="Packages - use-package" count="{sum(//category[@name='Declarations']/test-set[@name=('use-package')]/@total-tests)}" />
    68                 <feature group="Packages" name="Packages - override" count="{sum(//category[@name='Declarations']/test-set[@name=('override')]/@total-tests)}" />
    69                 <feature name="Packages - override" count="{sum(//category[@name='Declarations']/test-set[@name=('override')]/@total-tests)}" />
    69                 <feature group="Packages" name="Packages - xquery" count="{'unknown'}" />
    70                 <feature name="Packages - xquery" count="{'unknown'}" />
       
    71 
    70 
    72                 <!-- streaming -->
    71                 <!-- streaming -->
    73                 <feature name="Streaming" count="{sum(//category[@name=('Streaming', 'Posture and Sweep')]/test-set/@total-tests)}" />
    72                 <feature group="Streaming" name="Streaming - instructions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'si')]/@total-tests)}" />
    74                 <feature name="Streaming - instructions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'si')]/@total-tests)}" />
    73                 <feature group="Streaming" name="Streaming - functions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sf')]/@total-tests)}" />
    75                 <feature name="Streaming - functions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sf')]/@total-tests)}" />
    74                 <feature group="Streaming" name="Streaming - expressions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sx')]/@total-tests)}" />
    76                 <feature name="Streaming - expressions" count="{sum(//category[@name='Streaming']/test-set[@name/starts-with(., 'sx')]/@total-tests)}" />
    75                 <feature group="Streaming" name="Streaming - posture and sweep" count="{sum(//category[@name=('Posture and Sweep')]/test-set/@total-tests)}" />
    77                 <feature name="Streaming - posture and sweep" count="{sum(//category[@name=('Posture and Sweep')]/test-set/@total-tests)}" />
    76                 <feature group="Streaming" 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)}" />
    78                 <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)}" />
       
    79                 
    77                 
    80                 <!-- new declarations -->
    78                 <!-- new declarations -->
    81                 <feature name="Accumulators" count="{sum(//category[@name='Declarations']/test-set[@name='accumulator']/@total-tests)}" />
    79                 <feature group="Declarations" name="Accumulators" count="{sum(//category[@name='Declarations']/test-set[@name='accumulator']/@total-tests)}" />
    82                 <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)}" />
    80                 <feature group="Declarations" name="Mode declarations" count="{sum(//category[@name=('Attributes' (: there's no decl/mode category :) , 'Miscellaneous')]/test-set[@name=('initial-mode', 'mode')]/xslt3-specific/@count)}" />
    83                 <feature name="Import declaration order relaxation" count="{sum(//category[@name=('Declarations')]/test-set[@name=('import')]/xslt3-specific/@count)}" />
    81                 <feature group="Declarations" name="Import declaration order relaxation" count="{sum(//category[@name=('Declarations')]/test-set[@name=('import')]/xslt3-specific/@count)}" />
    84                 <feature name="Context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('context-item')]/@total-tests)}" />
    82                 <feature group="Declarations" name="Context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('context-item')]/@total-tests)}" />
    85                 <feature name="Global context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('global-context-item')]/@total-tests)}" />
    83                 <feature group="Declarations" name="Global context item declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('global-context-item')]/@total-tests)}" />
    86                 
    84                 
    87                 <!-- new instructions -->
    85                 <!-- new instructions -->
    88                 <feature name="Try / catch" count="{sum(//category[@name='Instructions']/test-set[@name=('try')]/@total-tests)}" />
    86                 <feature group="Instructions" name="Try / catch" count="{sum(//category[@name='Instructions']/test-set[@name=('try')]/@total-tests)}" />
    89                 <feature name="Try / catch - rollback-output" count="{2 (: deep-search needed :)}" />
    87                 <feature group="Instructions" name="Try / catch - rollback-output" count="{2 (: deep-search needed :)}" />
    90                 <feature name="Iteration (xsl:iterate)" count="{sum(//category[@name='Instructions']/test-set[@name=('iterate')]/@total-tests)}" />
    88                 <feature group="Instructions" name="Iteration (xsl:iterate)" count="{sum(//category[@name='Instructions']/test-set[@name=('iterate')]/@total-tests)}" />
    91                 <feature name="Dynamic evaluation (xsl:evaluate)" count="{sum(//category[@name='Instructions']/test-set[@name=('evaluate')]/@total-tests)}" />
    89                 <feature group="Instructions" name="Dynamic evaluation (xsl:evaluate)" count="{sum(//category[@name='Instructions']/test-set[@name=('evaluate')]/@total-tests)}" />
    92                 <feature name="Assertions (xsl:assert)" count="{sum(//category[@name='Instructions']/test-set[@name=('assert')]/@total-tests)}" />
    90                 <feature group="Instructions" name="Assertions (xsl:assert)" count="{sum(//category[@name='Instructions']/test-set[@name=('assert')]/@total-tests)}" />
    93                 <feature name="Merging (xsl:merge, incl strm)" count="{sum(//category[@name=('Instructions', 'Streaming')]/test-set[@name=('merge', 'si-merge')]/@total-tests)}" />
    91                 <feature group="Instructions" name="Merging (xsl:merge, incl strm)" count="{sum(//category[@name=('Instructions', 'Streaming')]/test-set[@name=('merge', 'si-merge')]/@total-tests)}" />
    94                 <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)}" />
    92                 <feature group="Instructions" name="Conditional content construction (all)" count="{70 + 28 (: see next :)  + sum(//category[@name='Instructions']/test-set[@name=('on-empty', 'on-non-empty')]/@total-tests)}" />
    95                 <feature name="Conditional content construction - conditional-content" count="{70 (: deep search needed :)}" />
    93                 <feature group="Instructions" name="Conditional content construction - conditional-content" count="{70 (: deep search needed :)}" />
    96                 <feature name="Conditional content construction - on-empty" count="{28 (: deep search needed :) + sum(//category[@name='Instructions']/test-set[@name=('on-empty')]/@total-tests)}" />
    94                 <feature group="Instructions" name="Conditional content construction - on-empty" count="{28 (: deep search needed :) + sum(//category[@name='Instructions']/test-set[@name=('on-empty')]/@total-tests)}" />
    97                 <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)}" />
    95                 <feature group="Instructions" 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)}" />
    98                 <feature name="Enhancements to analyze-string" count="{sum(//category[@name=('Instructions')]/test-set[@name=('analyze-string')]/xslt3-specific/@count)}" />
    96                 <feature group="Instructions" name="Enhancements to analyze-string" count="{sum(//category[@name=('Instructions')]/test-set[@name=('analyze-string')]/xslt3-specific/@count)}" />
    99                 <feature name="Value-of enhancement (empty)" count="{sum(//category[@name=('Instructions')]/test-set[@name=('value-of')]/xslt3-specific/@count)}" />
    97                 <feature group="Instructions" name="Value-of enhancement (empty)" count="{sum(//category[@name=('Instructions')]/test-set[@name=('value-of')]/xslt3-specific/@count)}" />
   100                 <feature name="Number (xsl:number format-number) enhancements" count="{sum(//category[@name=('Instructions', 'Functions')]/test-set[@name=('number', 'format-number')]/xslt3-specific/@count)}" />
    98                 <feature group="Instructions" name="Number (xsl:number format-number) enhancements" count="{sum(//category[@name=('Instructions', 'Functions')]/test-set[@name=('number', 'format-number')]/xslt3-specific/@count)}" />
   101 
    99 
   102                 <!-- new attributes -->
   100                 <!-- new attributes -->
   103                 <feature name="Declared modes" count="{sum(//category[@name='Attributes']/test-set[@name=('declared-modes')]/@total-tests)}" />
   101                 <feature group="Attributes" name="Declared modes" count="{sum(//category[@name='Attributes']/test-set[@name=('declared-modes')]/@total-tests)}" />
   104                 <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)}" />
   102                 <feature group="Attributes" 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)}" />
   105                 <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) :)}" />
   103                 <feature group="Attributes" 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) :)}" />
   106                 <feature name="Composite keys in keys" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
   104                 <feature group="Attributes" name="Composite keys in keys" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
   107                 <feature name="Select attribute on copy instruction" count="{sum(//category[@name=('Instructions')]/test-set[@name=('copy')]/xslt3-specific/@count)}" />
   105                 <feature group="Attributes" name="Select attribute on copy instruction" count="{sum(//category[@name=('Instructions')]/test-set[@name=('copy')]/xslt3-specific/@count)}" />
   108                 <feature name="Static variables and parameters" count="{sum(//category[@name=('Attributes')]/test-set[@name=('static')]/@total-tests)}" />
   106                 <feature group="Attributes" name="Static variables and parameters" count="{sum(//category[@name=('Attributes')]/test-set[@name=('static')]/@total-tests)}" />
   109                 <feature name="Cache, override, identity attributes on function declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('function')]/xslt3-specific/@count)}" />
   107                 <feature group="Attributes" name="Cache, override, identity attributes on function declaration" count="{sum(//category[@name=('Declarations')]/test-set[@name=('function')]/xslt3-specific/@count)}" />
   110                 <feature name="Shadow attributes" count="{sum(//category[@name=('Attributes')]/test-set[@name=('shadow')]/@total-tests)}" />
   108                 <feature group="Attributes" name="Shadow attributes" count="{sum(//category[@name=('Attributes')]/test-set[@name=('shadow')]/@total-tests)}" />
   111                 <feature name="Use-when enhancements" count="{sum(//category[@name=('Attributes')]/test-set[@name=('use-when')]/xslt3-specific/@count)}" />
   109                 <feature group="Attributes" name="Use-when enhancements" count="{sum(//category[@name=('Attributes')]/test-set[@name=('use-when')]/xslt3-specific/@count)}" />
   112                 <feature name="Error-code attribute on message" count="{(: deep query needed :) sum(//category[@name=('Instructions')]/test-set[@name=('message')]/xslt3-specific/@count)}" />
   110                 <feature group="Attributes" name="Error-code attribute on message" count="{(: deep query needed :) sum(//category[@name=('Instructions')]/test-set[@name=('message')]/xslt3-specific/@count)}" />
   113                 <feature name="Html-version attribute on xsl:output/result-document (HTML5 support)" count="{30 (: 4 on r-doc, 26 on output, deep search needed :)}" />
   111                 <feature group="Attributes" name="Html-version attribute on xsl:output/result-document (HTML5 support)" count="{30 (: 4 on r-doc, 26 on output, deep search needed :)}" />
   114                 <feature name="Item-separator attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
   112                 <feature group="Attributes" name="Item-separator attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
   115                 <feature name="Parameter-document attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
   113                 <feature group="Attributes" name="Parameter-document attribute on xsl:output/result-document" count="{0 (: none found, deep search needed :)}" />
   116                 <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)}" />
   114                 <feature group="Attributes" 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)}" />
   117                 <feature name="Disable-output-escaping silently ignored" count="{2 (: deep query needed? :)}" />
   115                 <feature group="Attributes" name="Disable-output-escaping silently ignored" count="{2 (: deep query needed? :)}" />
   118                 <feature name="Enhancements on typed=lax for non-validating processors" count="{'unknown'}" />
   116                 <feature group="Attributes" name="Enhancements on typed=lax for non-validating processors" count="{'unknown'}" />
   119 
   117 
   120                 <!-- stylesheet initialization -->
   118                 <!-- stylesheet initialization -->
   121                 <feature name="Initial function" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-function')]/@total-tests)}" />
   119                 <feature group="Stylesheet initialization" name="Initial function" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-function')]/@total-tests)}" />
   122                 <feature name="Initial template (xsl:initial-template)" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-template')]/xslt3-specific/@count)}" />
   120                 <feature group="Stylesheet initialization" name="Initial template (xsl:initial-template)" count="{sum(//category[@name='Miscellaneous']/test-set[@name=('initial-template')]/xslt3-specific/@count)}" />
   123                 <feature name="Initial mode" count="{sum(//category[@name=('Attributes', 'Miscellaneous')]/test-set[@name=('initial-mode')]/xslt3-specific/@count)}" />
   121                 <feature group="Stylesheet initialization" name="Initial mode" count="{sum(//category[@name=('Attributes', 'Miscellaneous')]/test-set[@name=('initial-mode')]/xslt3-specific/@count)}" />
   124 
   122 
   125                 <!-- new functions -->
   123                 <!-- new functions -->
   126                 <feature name="Higher order functions" count="{sum(//category[@name='Expressions']/test-set[@name=('higher-order-functions')]/@total-tests)}" />
   124                 <feature group="Functions" name="Higher order functions" count="{sum(//category[@name='Expressions']/test-set[@name=('higher-order-functions')]/@total-tests)}" />
   127                 <feature name="New function current-output-uri" count="{sum(//category[@name=('Functions')]/test-set[@name=('current-output-uri')]/@total-tests)}" />
   125                 <feature group="Functions" name="New function current-output-uri" count="{sum(//category[@name=('Functions')]/test-set[@name=('current-output-uri')]/@total-tests)}" />
   128                 <feature name="New function collation-key" count="{sum(//category[@name=('Functions')]/test-set[@name=('collation-key')]/@total-tests)}" />
   126                 <feature group="Functions" name="New function collation-key" count="{sum(//category[@name=('Functions')]/test-set[@name=('collation-key')]/@total-tests)}" />
   129                 <feature name="New function copy-of" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('copy-of', 'sf-copy-of')]/@total-tests)}" />
   127                 <feature group="Functions" name="New function copy-of" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('copy-of', 'sf-copy-of')]/@total-tests)}" />
   130                 <feature name="New function json-to-xml" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml')]/@total-tests)}" />
   128                 <feature group="Functions" name="New function json-to-xml" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml')]/@total-tests)}" />
   131                 <feature name="New function snapshot" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('snapshot', 'sf-snapshot')]/@total-tests)}" />
   129                 <feature group="Functions" name="New function snapshot" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('snapshot', 'sf-snapshot')]/@total-tests)}" />
   132                 <feature name="New function stream-available" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('stream-available', 'sf-stream-available')]/@total-tests)}" />
   130                 <feature group="Functions" name="New function stream-available" count="{sum(//category[@name=('Functions', 'Streaming')]/test-set[@name=('stream-available', 'sf-stream-available')]/@total-tests)}" />
   133                 <feature name="New function xml-to-json" count="{sum(//category[@name=('Functions')]/test-set[@name=('xml-to-json')]/@total-tests)}" />
   131                 <feature group="Functions" name="New function xml-to-json" count="{sum(//category[@name=('Functions')]/test-set[@name=('xml-to-json')]/@total-tests)}" />
   134                 
   132                 
   135                 <!-- changes in existing functions -->
   133                 <!-- changes in existing functions -->
   136                 <!-- note: regex-group, document, type-available and key have not changed, but normative references have -->
   134                 <!-- note: regex-group, document, type-available and key have not changed, but normative references have -->
   137                 <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)}" />
   135                 <feature group="Functions" 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)}" />
   138                 <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)}" />
   136                 <feature group="Functions" 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)}" />
   139                 <feature name="Enhancements on function format-number (moved, but new formats)" count="{sum(//category[@name=('Functions')]/test-set[@name=('format-number')]/xslt3-specific/@count)}" />
   137                 <feature group="Functions" name="Enhancements on function format-number (moved, but new formats)" count="{sum(//category[@name=('Functions')]/test-set[@name=('format-number')]/xslt3-specific/@count)}" />
   140                 <feature name="Enhancements on function key (composite keys)" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
   138                 <feature group="Functions" name="Enhancements on function key (composite keys)" count="{sum(//category[@name=('Functions')]/test-set[@name=('key')]/xslt3-specific/@count)}" />
   141                 <feature name="Enhancements on function type-available (XSD 1.1)" count="{sum(//category[@name=('Functions')]/test-set[@name=('type-available')]/xslt3-specific/@count)}" />
   139                 <feature group="Functions" name="Enhancements on function type-available (XSD 1.1)" count="{sum(//category[@name=('Functions')]/test-set[@name=('type-available')]/xslt3-specific/@count)}" />
   142                 <feature name="Enhancements on function system-property (new properties)" count="{sum(//category[@name=('Functions')]/test-set[@name=('system-property')]/xslt3-specific/@count)}" />
   140                 <feature group="Functions" name="Enhancements on function system-property (new properties)" count="{sum(//category[@name=('Functions')]/test-set[@name=('system-property')]/xslt3-specific/@count)}" />
   143                 <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)}" />
   141                 <feature group="Functions" 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)}" />
   144                 <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)}" />
   142                 <feature group="Functions" 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)}" />
   145                 
   143                 
   146                 <!-- maps (functions count by hand) -->
   144                 <!-- maps (functions count by hand) -->
   147                 <feature name="Maps" count="{sum(//category[@name='Typing and schema']/test-set[@name=('maps')]/@total-tests)}" />
   145                 <feature group="Maps" name="Maps - function contains" count="{1 (: in accumulator :)}" />
   148                 <feature name="Maps - function contains" count="{1 (: in accumulator :)}" />
   146                 <feature group="Maps" name="Maps - function entry" count="{0 (: can't find, probably none yet :)}" />
   149                 <feature name="Maps - function entry" count="{0 (: can't find, probably none yet :)}" />
   147                 <feature group="Maps" name="Maps - function get" count="{2 (: in accumulator, maps :)}" />
   150                 <feature name="Maps - function get" count="{2 (: in accumulator, maps :)}" />
   148                 <feature group="Maps" name="Maps - function for-each" count="{0 (: can't find, probably none yet :)}" />
   151                 <feature name="Maps - function for-each" count="{0 (: can't find, probably none yet :)}" />
   149                 <feature group="Maps" name="Maps - function keys" count="{4 (: si-iterate, maps, accumulator :)}" />
   152                 <feature name="Maps - function keys" count="{4 (: si-iterate, maps, accumulator :)}" />
   150                 <feature group="Maps" name="Maps - function merge" count="{5 (: si-iterate, maps, sx-MapExpr :)}" />
   153                 <feature name="Maps - function merge" count="{5 (: si-iterate, maps, sx-MapExpr :)}" />
   151                 <feature group="Maps" name="Maps - function put" count="{2 (: accumulator :)}" />
   154                 <feature name="Maps - function put" count="{2 (: accumulator :)}" />
   152                 <feature group="Maps" name="Maps - function remove" count="{0 (: can't find, probably none yet :)}" />
   155                 <feature name="Maps - function remove" count="{0 (: can't find, probably none yet :)}" />
   153                 <feature group="Maps" name="Maps - function size" count="{2 (: error, maps :)}" />
   156                 <feature name="Maps - function size" count="{2 (: error, maps :)}" />
   154                 <feature group="Maps" name="Maps - expressions / other" count="{36 (: total in maps of 52, minus the above of 16 :)}" />
   157                 
   155                 
   158                 <!-- other -->
   156                 <!-- other -->
   159                 <feature name="Expand text, text value templates" count="{sum(//category[@name='Attributes']/test-set[@name=('expand-text')]/@total-tests)}" />
   157                 <feature group="Other" name="Expand text, text value templates" count="{sum(//category[@name='Attributes']/test-set[@name=('expand-text')]/@total-tests)}" />
   160                 <feature name="Pattern enhancements" count="{sum(//category[@name='Attributes']/test-set[@name=('match')]/xslt3-specific/@count)}" />
   158                 <feature group="Other" name="Pattern enhancements" count="{sum(//category[@name='Attributes']/test-set[@name=('match')]/xslt3-specific/@count)}" />
   161                 <feature name="EQName adoption" count="{23 (: deep search needed, or new category :) }" />
   159                 <feature group="Other" name="EQName adoption" count="{23 (: deep search needed, or new category :) }" />
   162                 <feature name="JSON support (total)" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml', 'xml-to-json')]/@total-tests)}" />
   160                 <feature group="Other" name="JSON support (total)" count="{sum(//category[@name=('Functions')]/test-set[@name=('json-to-xml', 'xml-to-json')]/@total-tests)}" />
   163                 <feature name="Default collation enhancements (allowed on any element)" count="{sum(//category[@name=('Functions', 'Miscellaneous')]/test-set[@name=('collation', 'collations')]/xslt3-specific/@count)}" />
   161                 <feature group="Other" name="Default collation enhancements (allowed on any element)" count="{sum(//category[@name=('Functions', 'Miscellaneous')]/test-set[@name=('collation', 'collations')]/xslt3-specific/@count)}" />
   164                 <feature name="Backwards compatibility (XSLT 3.0 to 2.0)" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('backwards', 'xslt-compat')]/xslt3-specific/@count)}" />
   162                 <feature group="Other" name="Backwards compatibility (XSLT 3.0 to 2.0)" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('backwards', 'xslt-compat')]/xslt3-specific/@count)}" />
   165                 <feature name="New error conditions and codes" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('error')]/xslt3-specific/@count)}" />
   163                 <feature group="Other" name="New error conditions and codes" count="{sum(//category[@name=('Miscellaneous')]/test-set[@name=('error')]/xslt3-specific/@count)}" />
   166                 <feature name="Recoverable errors do not exist anymore" count="{'unknown/todo'}" />
   164                 <feature group="Other" name="Recoverable errors do not exist anymore" count="{'unknown'}" />
   167                 <feature name="Enhancements to serialization (all)" count="{sum(//category[@name=('Declarations', 'Instructions')]/test-set[@name=('output', 'result-document')]/xslt3-specific/@count)}" />
   165                 <feature group="Other" name="Enhancements to serialization (all)" count="{sum(//category[@name=('Declarations', 'Instructions')]/test-set[@name=('output', 'result-document')]/xslt3-specific/@count)}" />
   168                 <feature name="Type attribute validation with complex types and copy/copy-of (XTTE1535)" count="{'unknown'}" />
   166                 <feature group="Other" name="Type attribute validation with complex types and copy/copy-of (XTTE1535)" count="{'unknown'}" />
   169                 <feature name="XSD 1.1 types" count="{'unknown'}" />
   167                 <feature group="Other" name="XSD 1.1 types" count="{'unknown'}" />
   170 
   168 
   171             </changes-since-xslt2>
   169             </changes-since-xslt2>
   172             <xsl:apply-templates mode="report" />
   170             <xsl:apply-templates mode="report" />
   173         </xsl:copy>
   171         </xsl:copy>
   174     </xsl:template>
   172     </xsl:template>