Re: [xsl] XSLT 2.0 courses?

Subject: Re: [xsl] XSLT 2.0 courses?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 21 Sep 2020 08:46:23 -0000
I've been proposing ($a otherwise $b) to meet this requirement: it returns $a
unless it's an empty sequence, in which case it returns $b.

For example @price - (@discount otherwise 0)

It's actually implemented in Saxon 10 if you switch syntax extensions on.

Michael Kay
Saxonica

> On 21 Sep 2020, at 02:34, Pieter Lamers pieter.lamers@xxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Hi,
>
> An avid user of ($a, $b)[1] myself, which winks at TransactSQL ISNULL($a,
$b) and MySQL IFNULL($a, $b), I do have to remind myself that $a has to be a
single item for the if/else shortcut to work.
>
> So, in
> let $a := ('one','two','three')
> let $b := ('none')
>
> return ($a, $b)[1] will return just the first item in the sequence, 'one',
and not 'one','two','three', which might be what you want to achieve in this
quasi shorthanded if/else construction.
>
> Not that you wouldn't know, Liam, just as a heads up to some others in this
audience who might not.
> Best,
> Pieter
> On 19/09/2020 01:54, Liam R. E. Quin liam@xxxxxxxxxxxxxxxx
<mailto:liam@xxxxxxxxxxxxxxxx> wrote:
>> On Fri, 2020-09-18 at 19:31 +0000, Wendell Piez wapiez@xxxxxxxxxxxxxxx
<mailto:wapiez@xxxxxxxxxxxxxxx>
>> wrote:
>>> Hi,
>>>
>>> In addition to Liam's list I think there are a couple more vital
>>> features
>>> one needs to get a taste of in XSLT 2.0 or XSLT 3.0, if one has been
>>> subsisting on an XSLT 1.0 diet:
>>>
>>> * <xsl:for-each-group> and its uses
>>> * temporary trees -
>>> * regex support in functions and xsl:analyze-string
>>> * tunnel parameters?
>> Yeah, those are all huge, although i think easier to learn than things
>> like ($a, 'none')[1], which are startling because XSLT 1 didn't have
>> sequences.
>>
>> For those wondering, ($a, $b, $c, ...)[1] returns the first non-empty
>> non-false item out of $a, $b and $c, so it's a shortcut for
>>     <xsl:sequence select="if ($a) then $a else $b" />
>>
>>
>> On regular expressions - it's huge, but it's also dangerous, as e.g.
>> replace(price div 100, '\.\d*$', '') is not a good way to write
>> math:floor().
>>
>> An XSLT-3-from-scratch course could easily take a full week and be
>> woefully incomplete. Or totally overwhelming. Or both.
>>
>> On the other hand, i try & include "don't be afraid of the specs" in
>> the courses i teach, and then not cover every detail. So maybe it's
>> possible.
>>
>> Liam
>>
> --
> Pieter Lamers
> John Benjamins Publishing Company
> Postal Address: P.O. Box 36224, 1020 ME AMSTERDAM, The Netherlands
> Visiting Address: Klaprozenweg 75G, 1033 NN AMSTERDAM, The Netherlands
> Warehouse: Kelvinstraat 11-13, 1446 TK PURMEREND, The Netherlands
> tel: +31 20 630 4747
> web: www.benjamins.com <http://www.benjamins.com/>
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)

Current Thread