<xsl:text> </xsl:text>
</xsl:template>
+<xsl:template name="cm">
+ <xsl:text>, </xsl:text>
+</xsl:template>
+
<xsl:template name="sl">
<xsl:text>/</xsl:text>
</xsl:template>
+<xsl:template name="plus">
+ <xsl:text>+</xsl:text>
+</xsl:template>
+
<xsl:template name="fs">
<xsl:text>.​</xsl:text>
</xsl:template>
<xsl:text>)</xsl:text>
</xsl:template>
+<xsl:template name="ob">
+ <span style="{$binder}">
+ <xsl:text>[</xsl:text>
+ </span>
+</xsl:template>
+
+<xsl:template name="cb">
+ <span style="{$binder}">
+ <xsl:text>]</xsl:text>
+ </span>
+</xsl:template>
+
<xsl:template name="oa">
<span style="{$cast}">
<xsl:text><</xsl:text>
</xsl:template>
<xsl:template name="lambda">
- <span style="{$binder}">
- <xsl:text disable-output-escaping="yes">&lambda;</xsl:text>
- </span>
+ <a name="" title="{@mark}">
+ <span style="{$binder}">
+ <xsl:text disable-output-escaping="yes">&lambda;</xsl:text>
+ </span>
+ </a>
</xsl:template>
<xsl:template name="delta">
- <span style="{$binder}">
- <xsl:text disable-output-escaping="yes">&delta;</xsl:text>
- </span>
+ <a name="" title="{@mark}">
+ <span style="{$binder}">
+ <xsl:text disable-output-escaping="yes">&delta;</xsl:text>
+ </span>
+ </a>
</xsl:template>
<xsl:template name="chi">
- <span style="{$binder}">
- <xsl:text disable-output-escaping="yes">&chi;</xsl:text>
- </span>
+ <a name="" title="{@mark}">
+ <span style="{$binder}">
+ <xsl:text disable-output-escaping="yes">&chi;</xsl:text>
+ </span>
+ </a>
</xsl:template>
<xsl:template name="position">
- <a name="" title="{@position}">
+ <xsl:variable name="index">
+ <xsl:value-of select="@position"/>
+ <xsl:if test="@offset != 0">
+ <xsl:call-template name="plus"/>
+ <xsl:value-of select="@offset"/>
+ </xsl:if>
+ </xsl:variable>
+ <a name="" title="{$index}">
<xsl:value-of select="@name"/>
</a>
</xsl:template>
<a href="{$url}" title="{@uri}"><xsl:value-of select="@name"/></a>
</xsl:template>
-<xsl:template name="binder">
- <xsl:value-of select="@name"/>
-</xsl:template>
-
<xsl:template name="global">
<span style="{$global}">
<a name="" title="{@mark}">
</span>
</xsl:template>
+<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>
+
<xsl:template name="mk_segment">
<xsl:param name="path"/>
<xsl:param name="name"/>
<div>Informal description: "<xsl:value-of select="@meta"/>"</div><h2/>
</xsl:template>
+<xsl:template name="ld">
+ <xsl:text disable-output-escaping="yes">&lambda;&delta;</xsl:text>
+</xsl:template>
+
</xsl:stylesheet>
<xsl:template match="Appl">
<xsl:call-template name="op"/>
- <xsl:apply-templates/>
+ <xsl:call-template name="mk_terms"/>
<xsl:call-template name="cp"/>
<xsl:call-template name="fs"/>
</xsl:template>
<xsl:template match="Abst">
<xsl:call-template name="lambda"/>
- <xsl:value-of select="@name"/>
- <xsl:call-template name="cn"/>
- <xsl:apply-templates/>
- <xsl:call-template name="fs"/>
+ <xsl:call-template name="mk_binder">
+ <xsl:with-param name="sep-seq">
+ <xsl:call-template name="cn"/>
+ </xsl:with-param>
+ </xsl:call-template>
</xsl:template>
<xsl:template match="Abbr">
<xsl:call-template name="delta"/>
- <xsl:call-template name="binder"/>
- <xsl:call-template name="eq"/>
- <xsl:apply-templates/>
- <xsl:call-template name="fs"/>
+ <xsl:call-template name="mk_binder">
+ <xsl:with-param name="sep-seq">
+ <xsl:call-template name="eq"/>
+ </xsl:with-param>
+ </xsl:call-template>
</xsl:template>
<xsl:template match="Void">
<xsl:call-template name="chi"/>
- <xsl:call-template name="binder"/>
- <xsl:apply-templates/>
+ <xsl:call-template name="ob"/>
+ <xsl:call-template name="mk_names"/>
+ <xsl:call-template name="cb"/>
<xsl:call-template name="fs"/>
-
</xsl:template>
</xsl:stylesheet>