Re: [xsl] Re: Re: The Perils of Sudden Type-Safety in XPath 2.0

Subject: Re: [xsl] Re: Re: The Perils of Sudden Type-Safety in XPath 2.0
From: "Kurt Cagle" <cagle@xxxxxxxxx>
Date: Wed, 19 Feb 2003 14:19:37 -0800
Dmitre,

I'm inclined to agree with Michael on this. I think that the type mechanisms
do add (perhaps an unreasonable) burden in verbosity, but that is more than
offset by the ability to move a significant amount of the heavy lifting into
XPath through <xsl:function>

<xsl:function name="fmt:bangPad">
    <xsl:param name="expr"/>
    <xsl:result select="string-pad('!',xs:string(xs:integer($expr)))"/>
</xsl:function>

<xsl:value-of select="fmt:bangPad(@risk * @severity)"/>

It does serve to make the language itself more functional, which has always
been a problem I've had with XSLT1; not everything readily fits into the
nodal model, and there was perhaps too much of an emphasis on recursive
programming. I much prefer to do

<xsl:for-each select="(1 to 16)">
    <xsl:variable name="index" select="."/>
    <td><xsl:value-of select="$index"/></td>
</xsl:for-each>

than

<xsl:call-template name="indexWalker">
    <xsl:with-param name="index" select="1"/>
</xsl:call-template>

<xsl:template name="indexWalker">
    <xsl:param name="index"/>
    <td><xsl:value-of select="$index"/></td>
    <xsl:if test="$index le 16">
        <xsl:call-template name="indexWalker">
            <xsl:with-param name="index" select="$index + 1"/>
        </xsl:call-template>
    </xsl:if>
</xsl:template>

In other words, XSLT2 is considerably less verbose in non-trivial cases.

-- Kurt


----- Original Message -----
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, February 19, 2003 1:56 PM
Subject: [xsl] Re: Re: The Perils of Sudden Type-Safety in XPath 2.0


>
> > > One of the critiques about XSLT 1.0 is that it's too verbose.
> > > From what I see about XSLT 2.0, transformations written in it
> > > may well have to be twice as verbose as their XSLT 1.0 counterpart.
> >
> > No, my experience so far is that stylesheets that do no significant
> > computation are essentially unchanged, while those that do a lot of
> > computation can become dramatically smaller, because of features like
> > conditional expressions in XPath and the availability of xsl:function,
> > as well as the much richer built-in function library.
>
> Maybe it is too early for general observations. I was just comparing:
>
>    <xsl:value-of select="string-pad('!', @risk * @severity)" />
>
> with
>
>    <xsl:value-of select="string-pad('!', xs:integer(@risk * @severity))"
/>
>
>
> and
>
>   <xsl:variable name="danger" select="@risk * @severity"/>
>
> with
>
>  <xsl:variable name="danger">
>     <xsl:value-of select="@risk * @severity" />
>   </xsl:variable>
>
>
> and
>
>    <xsl:value-of select="string-pad('!', @risk * @severity)" />
>
> with
>
>   <xsl:variable name="danger">
>     <xsl:value-of select="@risk * @severity" />
>   </xsl:variable>
>   <xsl:value-of select="string-pad('!', $danger)" />
>
>
> =====
> Cheers,
>
> Dimitre Novatchev.
> http://fxsl.sourceforge.net/ -- the home of FXSL
>
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread