|
Subject: Re: [xsl] number collapsing From: Bruce D'Arcus <bdarcus@xxxxxxxxxxxxx> Date: Tue, 14 Dec 2004 09:47:46 -0500 |
Not sure if by "fail" you mean the <xsl:when test tests as false or you get a type error reported. And also not sure if by "an integer" you mean a value of that type in the xpath type system or something that looks like an intger, eg "123".
<xsl:template match="mods:extent[@unit='page']">
<xsl:param name="prefix"/>
<xsl:param name="suffix"/>
<xsl:value-of select="$prefix"/>
<span class="pages">
<xsl:text> pp. </xsl:text>
<xsl:value-of select="mods:start"/>
<xsl:if test="mods:end">
<xsl:text></xsl:text>
<xsl:value-of
select="bib:number-condense(mods:start,mods:end)"/>
</xsl:if>
</span>
<xsl:value-of select="$suffix"/>
</xsl:template> <xsl:function name="bib:number-condense">
<xsl:param name="begin"/>
<xsl:param name="end"/>
<xsl:choose>
<xsl:when test="$begin castable as xs:integer">
<xsl:variable name="begin" select="$begin" as="xs:integer"/>
<xsl:choose>
<xsl:when test="$begin gt 100 and $begin mod 100 and $begin
idiv 100 eq $end idiv 100">
<xsl:value-of select="$end mod 100"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$end"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$end"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>It has not failed yet (as in, Saxon never stops in its tracks with a type error, and it formats the page ranges as I expect them to be formatted), but it's not been widely tested.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] number collapsing, David Carlisle | Thread | Re: [xsl] number collapsing, David Carlisle |
| Re: [xsl] number collapsing, David Carlisle | Date | Re: [xsl] number collapsing, David Carlisle |
| Month |