[Bug 5312] [XSLT 2.1] Separate compilation of stylesheet modules

http://www.w3.org/Bugs/Public/show_bug.cgi?id=5312

           Summary: [XSLT 2.1] Separate compilation of stylesheet modules
           Product: XPath / XQuery / XSLFO / XSLT
           Version: Recommendation
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSLT 2.1
        AssignedTo: mike@saxonica.com
        ReportedBy: mike@saxonica.com
         QAContact: public-qt-comments@w3.org


As XSLT applications become larger, there is a requirement for separate
compilation of stylesheet modules. The design of XSLT 2.0 makes this difficult
because there are so few constraints on what an importing/including stylesheet
can do to change the behaviour of an imported/included stylesheet. Some of the
changes that are needed to make separate compilation viable include:

(a) some change to the syntax and/or semantics of xsl:include and xsl:import to
recognize the existence of precompiled stylesheet modules

(b) addition of attributes controlling visibility of the declarations of
functions, named templates, global variables and other objects such as
attribute sets in a precompiled module, for example: public=yes|no,
final=yes|no. Perhaps requiring override=yes in an overriding declaration to
make it clear that the overriding stylesheet knows what it is doing.

(c) rules constraining the ability to override variables, templates and
functions: for example, requiring the type signature of the overriding object
to be compatible with that of the object that it overrides; disallowing
overriding a variable with a param; disallowing the relaxation of a
required=yes constraint or changing of tunnel=yes|no; requiring all variable,
function, and template references within a module to be satisfied within that
module (perhaps by a declaration defined with abstract=yes)

(d) some kind of connection between importing and modes: for example the
ability while importing a module to alias its modes, to prevent unintended
interference between the modes used in different stylesheet modules. Perhaps
the ability to declare a mode as final.

(e) making some declarations such as xsl:strip-space and xsl:output less
global: for example these declarations when used in a compiled module might be
defined to apply only to calls on document() or xsl:result-document within that
module.

Received on Monday, 10 December 2007 11:05:05 UTC