Re: [xsl] Select All Except First and Last

Subject: Re: [xsl] Select All Except First and Last
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Tue, 3 Dec 2013 00:27:07 +0000
In 3.0, just for fun:

reverse(tail(reverse(tail(extent))))

Michael Kay
Saxonica

On 2 Dec 2013, at 21:10, Nathan Tallman <ntallman@xxxxxxxxx> wrote:

> This should be an easy one, but I can't figure it out. How do I select
> all but the first and last matching nodes?
> 
> XML input:
> <physdesc>
>    <extent>285.42 linear feet</extent>
>    <extent>227.5 record cartons</extent>
>    <extent>2.5 Hollinger boxes</extent>
> </physdesc>
> 
> HTML output:
> 285.42 linear feet (227.5 record cartons, 2.5 Hollinger boxes)
> 
> The input will vary, with different people encoding. I'd like to
> select all but the first and last extent. While this time, that's only
> one node at extent[2], there may be 8 or more extents. This is all
> because a I want to format a list and insert commas. (Although the
> second-to-end values will be wrapped in parenthesis.)
> 
> I'm using XSLT 2.0 and Saxon EE 9.4; I thought (and hoped) that the
> below would work, alas it's not.
> <xsl:for-each select="extent[not(extent[1])]">
>    <xsl:value-of select="." separator=", "/>
> </xsl:for-each>
> 
> Any help is appreciated.
> 
> Nathan

Current Thread