Subject: RE: variable question
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 31 Aug 2004 08:59:57 +0100
|
If the relevant function call is the one shown, it means that the parent of
the mods:titleInfo context item is not a mods:relatedItem element, therefore
the function has been called with an empty sequence as the argument, which
is not allowed given the way you have declared the parameter.
Michael Kay
> -----Original Message-----
> From: Bruce D'Arcus [mailto:bdarcus@xxxxxxxxxxxxx]
> Sent: 31 August 2004 04:32
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: variable question
>
> I'm getting the following error on the below:
>
> An empty sequence is not allowed as the first argument of
> mods:reftype()
>
> What does this mean in this context? That the function is getting
> confused trying to find the right node?
>
> Bruce
>
> On Aug 29, 2004, at 4:32 PM, Jeni Tennison wrote:
>
> > For XSLT 2.0, I think I'd turn the reftype template into a function
> > instead, since it just returns a string. I'd keep the title-before
> > template as a template since it might return some XML when
> you revise
> > it in the future. So it would look more like:
> >
> > <xsl:template match="mods:titleInfo[not(@type='abbreviated')]"
> > mode="bibliography">
> > <span class="{if (../mods:relatedItem[@type = 'host'])
> > then 'title'
> > else 'title italic'}">
> > <xsl:apply-templates select="." mode="title-before"/>
> > <xsl:apply-templates select="mods:title"/>
> > <xsl:apply-templates select="mods:subTitle"/>
> > <xsl:apply-templates select="." mode="title-after"/>
> > </span>
> > </xsl:template>
> >
> > <xsl:template match="mods:titleInfo" mode="title-before">
> > <xsl:if test="mods:reftype(parent::mods:relatedItem) = 'chapter'">
> > <xsl:text>"</xsl:text>
> > </xsl:if>
> > </xsl:template>
> >
> > <xsl:function name="mods:reftype" as="xs:string">
> > <xsl:param name="relatedItem" as="element(mods:relatedItem)" />
> > <xsl:choose>
> > <xsl:when test="$relatedItem/@type = 'host'">
> > <xsl:variable name="issuance" as="xs:string"
> > select="$relatedItem/mods:originInfo/mods:issuance" />
> > <xsl:choose>
> > <xsl:when test="$issuance = 'continuing'">article</xsl:when>
> > <xsl:when test="$issuance =
> 'monographic'">chapter</xsl:when>
> > </xsl:choose>
> > </xsl:when>
> > <xsl:otherwise>book</xsl:otherwise>
> > </xsl:choose>
> > </xsl:function>
|