+<xsl:template name="mk_names">
+ <xsl:param name="names">
+ <xsl:value-of select="normalize-space(@name)"/>
+ <xsl:call-template name="sp"/>
+ </xsl:param>
+ <xsl:param name="sep" select="false()"/>
+ <xsl:if test="$names and $sep">
+ <xsl:call-template name="cm"/>
+ </xsl:if>
+ <xsl:if test="$names">
+ <xsl:value-of select="substring-before($names, ' ')"/>
+ <xsl:call-template name="mk_names">
+ <xsl:with-param name="names" select="substring-after($names, ' ')"/>
+ <xsl:with-param name="sep" select="true()"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="mk_terms">
+ <xsl:for-each select="*">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="(name()='Sort' or name()='LRef' or name()='GRef') and position()!=last()">
+ <xsl:call-template name="cm"/>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template name="mk_binder">
+ <xsl:param name="sep-seq"/>
+ <xsl:call-template name="ob"/>
+ <xsl:call-template name="mk_binder_rec1">
+ <xsl:with-param name="sep-seq" select="$sep-seq"/>
+ </xsl:call-template>
+ <xsl:call-template name="cb"/>
+ <xsl:call-template name="fs"/>
+</xsl:template>
+
+<xsl:template name="mk_binder_rec1">
+ <xsl:param name="sep-seq"/>
+ <xsl:param name="names">
+ <xsl:value-of select="normalize-space(@name)"/>
+ <xsl:call-template name="sp"/>
+ </xsl:param>
+ <xsl:param name="sep" select="false()"/>
+ <xsl:param name="start" select="true()"/>
+ <xsl:param name="pos" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$start and $pos <= count(*)">
+ <xsl:if test="$names and $sep">
+ <xsl:call-template name="cm"/>
+ </xsl:if>
+ <xsl:value-of select="substring-before($names, ' ')"/>
+ <xsl:copy-of select="$sep-seq"/>
+ <xsl:call-template name="mk_binder_rec2">
+ <xsl:with-param name="names" select="substring-after($names, ' ')"/>
+ <xsl:with-param name="pos" select="$pos"/>
+ <xsl:with-param name="sep-seq" select="$sep-seq"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not($start) and $pos <= count(*)">
+ <xsl:call-template name="mk_binder_rec2">
+ <xsl:with-param name="names" select="$names"/>
+ <xsl:with-param name="pos" select="$pos"/>
+ <xsl:with-param name="sep-seq" select="$sep-seq"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="mk_binder_rec2">
+ <xsl:param name="sep-seq"/>
+ <xsl:param name="names"/>
+ <xsl:param name="pos"/>
+ <xsl:apply-templates select="*[$pos]"/>
+ <xsl:call-template name="mk_binder_rec1">
+ <xsl:with-param name="sep-seq" select="$sep-seq"/>
+ <xsl:with-param name="names" select="$names"/>
+ <xsl:with-param name="sep" select="true()"/>
+ <xsl:with-param name="start" select="name(*[$pos])='Sort' or name(*[$pos])='LRef' or name(*[$pos])='GRef'"/>
+ <xsl:with-param name="pos" select="$pos+1"/>
+ </xsl:call-template>
+</xsl:template>
+