Skip to content
Open
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ project. Contributions are encouraged!
not yet implemented. Contributions are welcome!

- Of the 21859 tests in the QT3 test suite (vendored into `vendor/xpath-tests`)
that match the features we support (so excluding XQuery tests), we support
over have 20130 at the time of writing. The failures are mostly due to
missing library implementation.
that match the features we support (so excluding XQuery tests), we pass 20221
at the time of writing. The remaining gaps are mostly missing library
functions and some parsing/formatting behavior.

- XMLSchema support. While the basic `xs:*` data types as defined by XML Schema
are implemented, deep XML Schema integration does not exist.
Expand Down Expand Up @@ -146,8 +146,8 @@ The Xee project is composed of many crates. Here is a quick overview:

- [`xee-testrunner`](xee-testrunner) - a testrunner that can run the
QT3 conformance suite of XPath tests (in `vendor/xpath-tests`). It has also
been generalized towards supporting running XSLT conformance tests, but that
implementation is not complete yet.
been generalized to run the XSLT conformance tests (in `vendor/xslt-tests`),
though coverage is still partial and many tests are filtered.

- [`xee-xpath-lexer`](xee-xpath-lexer) - A lexer for XPath
expressions.
Expand Down
10 changes: 5 additions & 5 deletions conformance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ there are gaps all over the place.

`xsl:template`, `xsl:value-of`, `xsl:variable`, `xsl:if` `xsl:choose`,
`xsl:when`, `xsl:otherwise`, `xsl:for-each`, `xsl:copy`, `xsl:copy-of`,
`xsl:sequence`, `xsl:apply-templates`, `xsl:text`, `xsl:attribute`,
`xsl:sequence`, `xsl:apply-templates`, `xsl:apply-imports`, `xsl:next-match`,
`xsl:call-template`, `xsl:try`, `xsl:catch`, `xsl:text`, `xsl:attribute`,
`xsl:namespace`, `xsl:comment`, `xsl:processing-instruction` all have their
core behavior implemented.

See [xslt.md](xslt.md) for details.

### Tests

One big task is to support XSLT tests in the test runner - the test runner has
been prepared for this by making it generic and the test suite has been
imported into `vendor`, but XSLT support in the test runner is not yet
implemented.
The XSLT test suite can now be run with the test runner, but coverage is still
partial and many tests are filtered. The test runner continues to improve as
more XSLT functionality lands.
123 changes: 79 additions & 44 deletions conformance/xslt.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,45 @@ We have regexml now, so should be able to implement.

## xsl:apply-imports

TODO: import subsystem
Basic support with import precedence and non-tunnel `xsl:with-param`.

Not yet:

- Packages/expose/override
- Tunnel params

## xsl:apply-templates

Not yet:
Basic support:

- Named/unnamed/current modes
- Non-tunnel `xsl:with-param`
- Built-in templates via `xsl:mode` on-no-match

- Mode support
Not yet:

- Variables in patterns
- Certain axes

- Rooted patterns
## xsl:assert

- Certain axes
Basic support:

- Fallback templates
- Evaluates `test`; on failure raises `XTMM9001` or the supplied `error-code`.
- Uses `select` or the sequence constructor for the error message.

## xsl:assert
Not yet:

TODO
- Assertion disable/enable toggles outside `use-when` and the
`enable_assertions` dependency.

## xsl:attribute

Cannot add after normal child.

Not yet:
Supports `type` (recorded in the type table; no schema validation).

- type
Not yet:

- validation

Expand All @@ -60,11 +72,11 @@ TODO: xsl:iterate

## xsl:call-template

TODO: function subsystem
Basic support for named templates and non-tunnel `xsl:with-param`.

## xsl:catch

TODO
Supported as part of `xsl:try` (no `xsl:fallback`).

## xsl:character-map

Expand All @@ -84,33 +96,38 @@ TODO

## xsl:copy

Supports `type` (recorded in the type table; no schema validation).

Not yet:

- copy-namespaces, inherit-namespaces, use-attribute-set, type, validation
- copy-namespaces, inherit-namespaces, use-attribute-sets, validation

## xsl:copy-of

Supports `type` (recorded in the type table; no schema validation).

Not yet:

- copy-accumulators, copy-namespaces, type, validation
- copy-accumulators, copy-namespaces, validation

## xsl:decimal-format

TOD: awaiting xee-format
TODO: awaiting xee-format

## xsl:document

TODO: nodes
Basic document node construction with sequence constructor content.
Supports `type` (recorded in the type table; no schema validation).

## xsl:element

Supports `type` (recorded in the type table; no schema validation).

Not yet:

- inherit-namespaces

- use-attribute sets

- type
- use-attribute-sets

- validation

Expand All @@ -128,7 +145,7 @@ TODO

## xsl:for-each

Todo:
TODO:

- xsl:sort support

Expand All @@ -142,7 +159,12 @@ TODO

## xsl:function

TODO: function subsystem
Basic support for user-defined functions.

Not yet:

- Visibility/overriding/caching/streamability
- Default values for function parameters

## xsl:global-context-item

Expand All @@ -154,15 +176,19 @@ Done

## xsl:import

TODO: import subsystem
Basic file-based import resolution with import precedence.

Not yet:

- Packages/expose/override

## xsl:import-schema

TODO: schema support

## xsl:include

TODO: imoprt subsystem
Basic file-based include resolution.

## xsl:iterate

Expand Down Expand Up @@ -206,7 +232,11 @@ TODO

## xsl:mode

TODO
Supports `on-no-match` for built-in template behavior.

Not yet:

- Streamability and other mode attributes

## xsl:namespace

Expand All @@ -224,7 +254,7 @@ TODO: xsl:iterate

## xsl:next-match

TODO: template rule subsystem, import system
Basic support with import precedence and non-tunnel `xsl:with-param`.

## xsl:non-matching-substring

Expand Down Expand Up @@ -252,10 +282,6 @@ Done

## xsl:output

TODO

## xsl:output

TODO: output method subsystem

## xsl:output-character
Expand All @@ -272,7 +298,11 @@ TODO: import subsystem

## xsl:param

TODO: function subsystem
Supports global and template parameters (non-tunnel).

Not yet:

- Static params and visibility

## xsl:perform-sort

Expand Down Expand Up @@ -308,19 +338,17 @@ TODO

## xsl:stylesheet

Not yet: all of the attibutes
Not yet: all of the attributes

## xsl:template

Including priority.

Not yet:
Named templates and mode selection are supported.

- match: variable support, rooted paths, certain axes

- name
Not yet:

- mode
- match: variable support, certain axes

- as

Expand All @@ -330,15 +358,19 @@ Not yet:

Not yet:

- depecrated disable-output-escaping
- deprecated disable-output-escaping

## xsl:transform

See xsl:stylesheet

## xsl:try

TODO
Basic support for `xsl:try`/`xsl:catch`, including `rollback-output`.

Not yet:

- `xsl:fallback`

## xsl:use-package

Expand All @@ -352,13 +384,12 @@ Done except:

## xsl:variable

Not yet:

- compile-time variables used as global variables
Basic support for global and local variables (non-static).

- global variables
Not yet:

- attributes: as, visbiility
- static variables (compile-time)
- attributes: as, visibility

## xsl:when

Expand All @@ -370,4 +401,8 @@ TODO

## xsl:with-param

Todo: function subsystem
Supported for apply-templates/apply-imports/next-match/call-template.

Not yet:

- Tunnel params
Loading