CSS Within currently includes a Java definition of XSLT extension
elements for css:rule and css:media that
simply return an empty sequence at compile time. When the stylesheet
runs, the CSS Within elements are gone, so there is no need for a
clean-up phase.
In development is an extension element for css:gather
which at stylesheet compilation builds the CSS stylesheet so that
when run, the css:gather element is replaced by an
xsl:text element containing the text of the
stylesheet. In order that the CSS fragments are collected from
included and imported stylesheets and packages,
apply-templates must be called in
css:gather mode; the CSS Within stylesheet which
can be imported contains a template that uses
xsl:next-match to fetch the css:gather
fragments from every other stylesheet module. Since all of this is
arranged when the stylesheet is compiled, run-time support for the
extension elements is not required. Each module must either include
the CSS Within stylesheet, or must define a suitable
css:gather template.
This css:gather implementation is then used by the
public css:stream element to produce the text of the
CSS stylesheet.
The complexities of configuring Saxon to run an extension, and of supporting separate compilation where the runtime engine is not necessarily in the same Java instance as the execution, or even in Java at all, mean that at the time of writing this paper the implementation is not stable enough to redistribute, but the author expects that to change.