[xsl] functions and sequences

Subject: [xsl] functions and sequences
From: Bruce D'Arcus <bdarcus@xxxxxxxxxxxxx>
Date: Sun, 12 Dec 2004 18:09:20 -0500
I've run across this issue in a different context, but can't figure out how to apply it here.

I have this function (within a large stylesheet). It works if I comment out the two lines indicated with the comments, but I get a "E net.sf.saxon.xpath.DynamicError: A sequence of more than one item is not allowed as the result of function bib:reftype()" error otherwise. Is there some way to get this to work? I'm not really sure how much of the related code I need to show to have this make any sense!

<xsl:function name="bib:reftype" as="xs:string">
<xsl:param name="bibref" as="element(mods:mods)?"/>
<xsl:choose>
<xsl:when test="$bibref/mods:relatedItem/@type = 'host'">
<xsl:variable name="issuance" select="$bibref/mods:relatedItem/mods:originInfo/mods:issuance"/>
<xsl:choose>
<xsl:when test="bib:refclass($bibref) = 'part-inSerial'">
<xsl:text>article</xsl:text>
<!-- this code introduces a sequence error; don't know why -->
<xsl:text>-</xsl:text>
<xsl:value-of select="$bibref/mods:relatedItem/mods:genre"/>
</xsl:when>
<xsl:when test="bib:refclass($bibref) = 'part-inMonograph'">
<xsl:choose>
<xsl:when test="$bibref/mods:genre">
<xsl:value-of select="$bibref/mods:genre"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>chapter</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$bibref/mods:genre"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>book</xsl:otherwise>
</xsl:choose>
</xsl:function>


Current Thread