| Subject: Re: [xsl] Measuring the complexity of XSLT stylesheets From: Adam Turoff <adam.turoff@xxxxxxxxx> Date: Tue, 19 Apr 2005 16:31:34 -0400 | 
On 4/17/05, Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote:
> On 4/18/05, Lars Marius Garshol <larsga@xxxxxxxxxxxxxxx> wrote:
> > * Dimitre Novatchev
> > | Cyclomatic Complexity (McCabe) [...]
> > | Halstead Complexity Measures [...]
> > | Henry and Kafura metrics [...]
> > | Bowles metrics [...]
> > | Troy and Zweben metrics [...]
> > | Ligier metrics [...]
Those traditional metrics feel unsatisfying for XSLT.  They all presume
to be analyzing static program text to produce a single scalar value
called "complexity".
With XSLT, the codepaths are determined by the input, so traditional
complexity analysis doesn't really address the problem.  For example,
it's impossible to know if:
    <xsl:apply-templates/>
can trigger zero, one or many templates in a stylesheet.
> > These might all be applicable, but does anyone know of any
> > implementations of these for XSLT?
>
> I don't know of any implementations for XSLT -- these would be best
> implemented as part of an XSLT processor.
This, however, is quite an intriguing idea -- calculate complexity
by tracing stylesheet execution while processing an input document.
Or a series of input documents, varying in complexity.  (Of course,
what constitutes "complexity of an XML document" is a separate
discussion.  ;-) )
Off the top of my head, here are some things that might contribute to
overall stylesheet complexity:
* number of XSLT modules loaded
* overall size of the XSLT stylesheet loaded
  (bytes / nodes post-include, post-import)
* percentage of templates used
* average template size (bytes, nodes, operators, XPath evaluations)
* ratio of input to output size (nodes, bytes)
* percentage of calculated vs. copied output
For example, if I'm processing this DocBook document:
    <book/>
I think we can all agree that there are 57 ways to call the DocBook XSL
stylesheets "complex", at least compared to this stylesheet, which
produces the same output:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     version="1.0"/>
:-)
-- Adam
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Measuring the complexity , M. David Peterson | Thread | Re: [xsl] Measuring the complexity , Anthony B. Coates | 
| Re: [xsl] breaking string into subs, Dimitre Novatchev | Date | Re: [xsl] Xslt 2 stripping out non-, Dimitre Novatchev | 
| Month |