[xsl] Select All Except First and Last

Subject: [xsl] Select All Except First and Last
From: Nathan Tallman <ntallman@xxxxxxxxx>
Date: Mon, 2 Dec 2013 16:10:13 -0500
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