Roth: An XSLT streamability checker

Current limitations

6 August 2013

This document describes the current coverage and current limitations of Roth, a streamability analyser for XSLT 3.0.

Coverage

Constructs

The current version of Roth supports the following constructs (with the limits indicated).

  • sequence constructors

Instructions

The current version of Roth supports the following XSLT instructions (with the limits indicated).

  • text nodes

Expression types

The current version of Roth supports the following expression types (with the limits indicated).

  • [Watch this space.]

User interface

The current version of Roth supports the following constructs (with the limits indicated).

  • User can paste XSLT into text widget.

Gaps

This section lists features that Roth will (or at least should) eventually implement, but which are currently not present in the code.

Constructs

The following XSLT constructs are not yet handled at all.

Roth does not handle them, and does not issue a warning saying that it does not handle them.

  • XSLT instructions (see separate list)
  • attribute sets
  • attribute value templates
  • expressions (see separate list)
  • patterns

XSLT instructions

The following XSLT instructions are not yet handled.

Roth does not handle them, and does not issue a warning saying that it does not handle them.

  • literal result elements
  • xsl:analyse-string instruction
  • xsl:apply-imports instruction
  • xsl:apply-templates instruction
  • xsl:assert instruction
  • xsl:attribute instruction
  • xsl:break instruction
  • xsl:call-template instruction
  • xsl:choose instruction
  • xsl:comment instruction
  • xsl:copy instruction
  • xsl:copy-of instruction
  • xsl:document instruction
  • xsl:evaluate instruction
  • xsl:for-each instruction
  • xsl:for-each-group instruction
  • xsl:fork instruction
  • xsl:if instruction
  • xsl:iterate instruction
  • xsl:merge instruction
  • xsl:message instruction
  • xsl:namespace instruction
  • xsl:next-iteration instruction
  • xsl:next-match instruction
  • xsl:number instruction
  • xsl:perform-sort instruction
  • xsl:processing-instruction instruction
  • xsl:result-document instruction
  • xsl:sequence instruction
  • xsl:stream instruction
  • xsl:text instruction
  • xsl:try instruction
  • xsl:value-of instruction
  • xsl:variable instruction

Expressions

The following expression types are not yet handled.

Roth does not handle them, and does not issue a warning saying that it does not handle them.

  • Expr
  • ForExpr
  • LetExpr
  • QuantifiedExpr
  • IfExpr
  • OrExpr
  • AndExpr
  • ComparisonExpr
  • StringConcatExpr
  • RangeExpr
  • AdditiveExpr
  • MultiplicativeExpr
  • UnionExpr
  • IntersectExceptExpr
  • InstanceOfExpr
  • TreatExpr
  • CastableExpr
  • CastExpr
  • UnaryExpr
  • GeneralComp
  • ValueComp
  • NodeComp
  • PathExpr
  • RelativePathExpr
  • AxisStep
  • ForwardStep
  • AbbrevForwardStep
  • ReverseStep
  • AbbrevReverseStep
  • PostfixExpr
  • Literal
  • VarRef
  • ParenthesizedExpr
  • ContextItemExpr
  • FunctionCall
  • NamedFunctionRef
  • InlineFunctionExpr

User interface

  • Allow user to request display of the source stylesheet with colors or typographic style distinguishing inspection contexts, node value contexts, inherited constructs, and navigation contexts (instead of assuming the user's only interest is in identifying the sweep of the top-level construct)
  • Allow user to request display of the source stylesheet with colors or typographic style distinguishing pre-descent instructions and post-descent instructions (instead of assuming the user's only interest is in identifying the sweep of the top-level construct)
  • Allow user to upload a document instead of requiring that code to be analysed be cut and pasted.
  • Allow user to supply a URI for a document instead of requiring that code to be analysed be cut and pasted.
  • Given a URI, process includes, imports, and package references, to support the convenient analysis of actual production stylesheets.