xsl-list
[Top] [All Lists]

RE: variable question

2004-08-31 00:59:57
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(_at_)myrealbox(_dot_)com] 
Sent: 31 August 2004 04:32
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] 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[(_at_)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>


--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--





<Prev in Thread] Current Thread [Next in Thread>