I need to repeat this question:
My 2.o stylesheet has a function it uses to group records based on  
author.
However, the grouping and sorting problem is more complex than this,  
and is based on the following rule:
1) use author-name string
2) if there is no author name:
	a.  when dealing with a periodical, use the periodical title in place  
of the author name
	b. otherwise use "anonymous"
So, in other words, if I have a magazine article from Newsweek, it  
would sort and format like so:
	Newsweek (2000) Article Title ....
Currently, it incorrectly does this:
	(2000) Article Title  ....
Here's my current code:
<xsl:function name="bib:grouping-key" as="xs:string">
  <xsl:param name="bibref" as="element(mods:mods)" />
  <xsl:choose>
  <xsl:when test="$bibref/mods:name">
    <xsl:value-of separator=";">
      <xsl:for-each select="$bibref/mods:name">
        <xsl:value-of
          select="string-join((mods:namePart[@type = 'family']|
		   mods:namePart[not(@type)],
	           mods:namePart[@type = 'given']), ',')" />
      </xsl:for-each>
    </xsl:value-of>
   </xsl:when>
   <xsl:otherwise>
     <xsl:choose>
<!-- test to see if we have a periodical article -->
       <xsl:when  
test="$bibref/mods:relatedItem[@type='host']/mods:issuance =  
'continuing'">
         <xsl:for-each select="$bibref">
<!-- use periodical title -->
           <xsl:value-of  
select="mods:relatedItem[@type='host']/mods:titleInfo[not(@type)]/mods: 
title"/>
         </xsl:for-each>
       </xsl:when>
       <xsl:otherwise>
         <xsl:text>Anonymous</xsl:text>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:otherwise>
   </xsl:choose>
</xsl:function>
The main bib template then just calls the function like so:
    <xsl:for-each-group select="$bibref" group-by="bib:grouping-key(.)">
      <xsl:sort select="current-grouping-key()"/>
What have I done wrong, and how do I fix it?
Bruce
--
Bruce D'Arcus, PhD
Miami University
216 Shideler Hall
Oxford, OH 45056
513-529-1521