<xsl:stylesheet xmlns:bib="http://purl.org/NET/xbiblio/citeproc" xmlns="http://purl.org/NET/xbiblio/citeproc" xmlns:cs="http://purl.org/NET/xbiblio/csl" xmlns:db="http://docbook.org/ns/docbook" xmlns:mods="http://www.loc.gov/mods/v3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdoc="http://www.pnp-software.com/XSLTdoc" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" exclude-result-prefixes="xhtml mods xdoc db bib xs cs">
<xsl:preserve-space elements="cs:prefix cs:suffix" />
<!-- === licensed under CC-GNU GPL; see http://creativecommons.org/licenses/GPL/2.0 === -->
<xsl:variable name="refclass-partInSerial" select="('article-newspaper','legal case','bill','article','conference paper')" />
<xsl:variable name="refclass-partInMonograph" select="('song','chapter')" />
<xsl:variable name="refclass-monograph" select="('report','personal communication','book')" />
<xsl:variable name="genres" select="('thesis', 'newsletter', 'dissertation')" />
<xsl:template match="cs:citation">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<xsl:param name="last-in-author-group" as="xs:boolean?" tunnel="yes" />
<xsl:param name="bib:source" as="element(mods:mods)?" tunnel="yes" />
<bib:a class="citation" href="#{@ID}">
<xsl:choose>
<xsl:when test="cs:first">
<xsl:choose>
<xsl:when test="bib:first-reference($cite-ref)">
<xsl:apply-templates select="cs:first">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="cs:subsequent">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="* except (cs:prefix|cs:suffix)">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</bib:a>
<xsl:if test="not($last-in-author-group) and not($citeclass='number' or $citeclass='citekey')">, </xsl:if>
</xsl:template>
<!-- FIX ME: move below code to CSL templates
<xsl:value-of select="bib:year-suffix"/>
-->
<xsl:template match="cs:point">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<xsl:if test="$cite-ref/@begin">
<xsl:apply-templates select="cs:prefix" />
<xsl:value-of select="$cite-ref/@begin" />
<xsl:if test="$cite-ref/@end">
<xsl:text>–</xsl:text>
<xsl:value-of select="bib:number-condense($cite-ref/@begin, $cite-ref/@end)" />
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="cs:first">
<xsl:apply-templates select="cs:layout">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:layout">
<xsl:param name="use_reftype" tunnel="yes" />
<xsl:apply-templates select="if (cs:reftype) then (cs:reftype[@name=$use_reftype]) else *" />
</xsl:template>
<xsl:template match="cs:subsequent">
<xsl:apply-templates select="if (cs:layout) then (cs:layout) else (preceding-sibling::cs:first/cs:layout)">
<xsl:with-param name="multi-authors" select="if (cs:multiple-authors) then (cs:multiple-authors) else (preceding-sibling::cs:first/cs:multiple-authors)" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:all">
<xsl:apply-templates select="cs:layout">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:number">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<span class="mark">
<xsl:value-of select="$bib:formatted-biblist/bib:item[@id=$cite-ref/@linkend]/@bib:biblist-number" />
</span>
</xsl:template>
<xsl:template match="cs:citekey">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<span class="mark">
<xsl:value-of select="$cite-ref/@linkend" />
</span>
</xsl:template>
<!-- change citeproc to apply-templates here with use-reftype parameter -->
<xsl:template match="cs:bibliography">
<xsl:param name="bib:source" as="element(mods:mods)" tunnel="yes" />
<xsl:param name="use_reftype" as="xs:string" tunnel="yes" />
<xsl:apply-templates select="cs:layout/cs:reftype[@name=$use_reftype]">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
<xsl:with-param name="em-dash-author" select="self::cs:bibliography and $bib:source/@bib:shorten-author='true'" as="xs:boolean?" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:reftype">
<!-- needed to change the below to optional; may need to check this again later -->
<xsl:param name="bib:number" as="xs:string?" tunnel="yes" />
<xsl:param name="bib:source" as="element(mods:mods)" tunnel="yes" />
<item class="bibref" id="{$bib:source/@ID}" bib:biblist-number="{$bib:number}">
<xsl:if test="$citeclass='number'">
<span class="mark">
<xsl:value-of select="$bib:number" />
</span>
<xsl:text>. </xsl:text>
</xsl:if>
<xsl:if test="$citeclass='citekey'">
<xsl:text>[</xsl:text>
<xsl:value-of select="$bib:source/@ID" />
<xsl:text>] </xsl:text>
</xsl:if>
<xsl:apply-templates />
<xsl:value-of select="$bibref-after" />
</item>
</xsl:template>
<xsl:template match="cs:creator">
<xsl:param name="first-in-author-group" as="xs:boolean?" tunnel="yes" />
<xsl:param name="local-cite-style" as="node()?" tunnel="yes" />
<xsl:choose>
<xsl:when test="ancestor::cs:citation">
<xsl:if test="$first-in-author-group and not($local-cite-style='year')">
<xsl:apply-templates select="cs:prefix" />
<xsl:apply-templates select="cs:names | cs:names-short | cs:role" />
<xsl:apply-templates select="cs:suffix" />
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="cs:prefix" />
<xsl:apply-templates select="cs:names | cs:names-short | cs:role" />
<xsl:apply-templates select="cs:suffix" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:creator/cs:names">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="em-dash-author" as="xs:boolean?" tunnel="yes" />
<xsl:choose>
<xsl:when test="$em-dash-author">
<!-- fix to config in CSL -->
<xsl:text>—— </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$bib:source/bib:noname-substitute" />
<xsl:apply-templates select="$bib:source/mods:name[mods:role/mods:roleTerm=$primary-contributors]" mode="full">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="sort-order" select="$style-biblio/@author-as-sort-order" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:creator/cs:names-short">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="em-dash-author" as="xs:boolean?" tunnel="yes" />
<xsl:choose>
<xsl:when test="$em-dash-author">
<!-- fix to config in CSL -->
<xsl:text>—— </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$bib:source/bib:noname-substitute" />
<xsl:apply-templates select="$bib:source/mods:name[mods:role/mods:roleTerm=$primary-contributors]" mode="short">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="sort-order" select="$style-biblio/@author-as-sort-order" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:role">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:name/mods:role">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:title">
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:titleInfo[not(@type)]" mode="full">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="font-style" select="@font-style" />
<xsl:with-param name="font-weight" select="@font-weight" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:conference">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:name[@type='conference']/mods:namePart">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="font-style" select="@font-style" />
<xsl:with-param name="font-weight" select="@font-weight" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:origin">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:if test="$bib:source/mods:originInfo/mods:publisher or $bib:source/mods:originInfo/mods:place">
<span class="origin">
<xsl:apply-templates />
</span>
</xsl:if>
</xsl:template>
<xsl:template match="cs:container">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<span class="container">
<xsl:apply-templates>
<xsl:with-param name="bib:source" select="$bib:source/mods:relatedItem[@type='host']" as="element()" tunnel="yes" />
</xsl:apply-templates>
</span>
</xsl:template>
<xsl:template match="cs:series">
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:apply-templates>
<xsl:with-param name="bib:source" select="$bib:source/mods:relatedItem[@type='series']" as="element()?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:part-details">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="cs:prefix | cs:suffix">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="cs:issue">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='issue']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:file">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='file']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:volume">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='volume']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:genre">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:genre[text()=$genres]">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:medium">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:physicalDescription">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:pages">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:extent[@unit='page']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:place">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:place">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:publisher">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:publisher">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:date">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<!-- the below conditional seems a bit of a hack; need to reconsider later -->
<xsl:variable name="date" select="(../$bib:source/mods:originInfo/mods:dateIssued, $bib:source/mods:originInfo/mods:dateIssued, $bib:source/mods:part/mods:date)[1]" />
<xsl:if test="cs:month and not($date castable as xs:gYear) or cs:year">
<span class="date">
<xsl:apply-templates />
</span>
</xsl:if>
</xsl:template>
<xsl:template match="cs:year">
<!-- I'm not sure why requiring the bib:source parameter fails in some cases -->
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/bib:year">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:month">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<!-- select statement is a problem; problem need to move this into a function -->
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:dateIssued|$bib:source/mods:part/mods:date" mode="month">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:day">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:dateIssued|$bib:source/mods:part/mods:date" mode="day">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<!-- end dates -->
<xsl:template match="cs:availability">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/mods:location">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:month-day">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$prefix" />
<span class="month-day">
<xsl:apply-templates select="$bib:source/mods:relatedItem/mods:part/mods:date|$bib:source/mods:relatedItem/mods:originInfo/mods:dateIssued" mode="date">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</span>
<xsl:apply-templates select="$suffix" />
</xsl:template>
<xsl:template match="cs:note">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:note[@type='citation']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
<xsl:preserve-space elements="cs:prefix cs:suffix" />
<!-- === licensed under CC-GNU GPL; see http://creativecommons.org/licenses/GPL/2.0 === -->
<xdoc:doc type="stylesheet">
<xdoc:short>Process CSL files to configure formatting.</xdoc:short>
<xdoc:author>Bruce D’Arcus</xdoc:author>
<xdoc:copyright>2004, Bruce D’Arcus</xdoc:copyright>
</xdoc:doc>
<xdoc:short>Process CSL files to configure formatting.</xdoc:short>
<xdoc:author>Bruce D’Arcus</xdoc:author>
<xdoc:copyright>2004, Bruce D’Arcus</xdoc:copyright>
</xdoc:doc>
<xsl:variable name="refclass-partInSerial" select="('article-newspaper','legal case','bill','article','conference paper')" />
<xsl:variable name="refclass-partInMonograph" select="('song','chapter')" />
<xsl:variable name="refclass-monograph" select="('report','personal communication','book')" />
<xsl:variable name="genres" select="('thesis', 'newsletter', 'dissertation')" />
<xsl:template match="cs:citation">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<xsl:param name="last-in-author-group" as="xs:boolean?" tunnel="yes" />
<xsl:param name="bib:source" as="element(mods:mods)?" tunnel="yes" />
<bib:a class="citation" href="#{@ID}">
<xsl:choose>
<xsl:when test="cs:first">
<xsl:choose>
<xsl:when test="bib:first-reference($cite-ref)">
<xsl:apply-templates select="cs:first">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="cs:subsequent">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="* except (cs:prefix|cs:suffix)">
<xsl:with-param name="use_reftype" select="$bib:source/@bib:use-reftype" tunnel="yes" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</bib:a>
<xsl:if test="not($last-in-author-group) and not($citeclass='number' or $citeclass='citekey')">, </xsl:if>
</xsl:template>
<!-- FIX ME: move below code to CSL templates
<xsl:value-of select="bib:year-suffix"/>
-->
<xsl:template match="cs:point">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<xsl:if test="$cite-ref/@begin">
<xsl:apply-templates select="cs:prefix" />
<xsl:value-of select="$cite-ref/@begin" />
<xsl:if test="$cite-ref/@end">
<xsl:text>–</xsl:text>
<xsl:value-of select="bib:number-condense($cite-ref/@begin, $cite-ref/@end)" />
</xsl:if>
</xsl:if>
</xsl:template>
<xsl:template match="cs:first">
<xsl:apply-templates select="cs:layout">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:layout">
<xsl:param name="use_reftype" tunnel="yes" />
<xsl:apply-templates select="if (cs:reftype) then (cs:reftype[@name=$use_reftype]) else *" />
</xsl:template>
<xsl:template match="cs:subsequent">
<xsl:apply-templates select="if (cs:layout) then (cs:layout) else (preceding-sibling::cs:first/cs:layout)">
<xsl:with-param name="multi-authors" select="if (cs:multiple-authors) then (cs:multiple-authors) else (preceding-sibling::cs:first/cs:multiple-authors)" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:all">
<xsl:apply-templates select="cs:layout">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:number">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<span class="mark">
<xsl:value-of select="$bib:formatted-biblist/bib:item[@id=$cite-ref/@linkend]/@bib:biblist-number" />
</span>
</xsl:template>
<xsl:template match="cs:citekey">
<xsl:param name="cite-ref" as="node()" tunnel="yes" />
<span class="mark">
<xsl:value-of select="$cite-ref/@linkend" />
</span>
</xsl:template>
<!-- change citeproc to apply-templates here with use-reftype parameter -->
<xsl:template match="cs:bibliography">
<xsl:param name="bib:source" as="element(mods:mods)" tunnel="yes" />
<xsl:param name="use_reftype" as="xs:string" tunnel="yes" />
<xsl:apply-templates select="cs:layout/cs:reftype[@name=$use_reftype]">
<xsl:with-param name="multi-authors" select="cs:multiple-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
<xsl:with-param name="em-dash-author" select="self::cs:bibliography and $bib:source/@bib:shorten-author='true'" as="xs:boolean?" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:reftype">
<!-- needed to change the below to optional; may need to check this again later -->
<xsl:param name="bib:number" as="xs:string?" tunnel="yes" />
<xsl:param name="bib:source" as="element(mods:mods)" tunnel="yes" />
<item class="bibref" id="{$bib:source/@ID}" bib:biblist-number="{$bib:number}">
<xsl:if test="$citeclass='number'">
<span class="mark">
<xsl:value-of select="$bib:number" />
</span>
<xsl:text>. </xsl:text>
</xsl:if>
<xsl:if test="$citeclass='citekey'">
<xsl:text>[</xsl:text>
<xsl:value-of select="$bib:source/@ID" />
<xsl:text>] </xsl:text>
</xsl:if>
<xsl:apply-templates />
<xsl:value-of select="$bibref-after" />
</item>
</xsl:template>
<xsl:template match="cs:creator">
<xsl:param name="first-in-author-group" as="xs:boolean?" tunnel="yes" />
<xsl:param name="local-cite-style" as="node()?" tunnel="yes" />
<xsl:choose>
<xsl:when test="ancestor::cs:citation">
<xsl:if test="$first-in-author-group and not($local-cite-style='year')">
<xsl:apply-templates select="cs:prefix" />
<xsl:apply-templates select="cs:names | cs:names-short | cs:role" />
<xsl:apply-templates select="cs:suffix" />
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="cs:prefix" />
<xsl:apply-templates select="cs:names | cs:names-short | cs:role" />
<xsl:apply-templates select="cs:suffix" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:creator/cs:names">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="em-dash-author" as="xs:boolean?" tunnel="yes" />
<xsl:choose>
<xsl:when test="$em-dash-author">
<!-- fix to config in CSL -->
<xsl:text>—— </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$bib:source/bib:noname-substitute" />
<xsl:apply-templates select="$bib:source/mods:name[mods:role/mods:roleTerm=$primary-contributors]" mode="full">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="sort-order" select="$style-biblio/@author-as-sort-order" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:creator/cs:names-short">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="em-dash-author" as="xs:boolean?" tunnel="yes" />
<xsl:choose>
<xsl:when test="$em-dash-author">
<!-- fix to config in CSL -->
<xsl:text>—— </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$bib:source/bib:noname-substitute" />
<xsl:apply-templates select="$bib:source/mods:name[mods:role/mods:roleTerm=$primary-contributors]" mode="short">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="sort-order" select="$style-biblio/@author-as-sort-order" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="cs:role">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:name/mods:role">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:title">
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:titleInfo[not(@type)]" mode="full">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="font-style" select="@font-style" />
<xsl:with-param name="font-weight" select="@font-weight" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:conference">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:name[@type='conference']/mods:namePart">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
<xsl:with-param name="font-style" select="@font-style" />
<xsl:with-param name="font-weight" select="@font-weight" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:origin">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:if test="$bib:source/mods:originInfo/mods:publisher or $bib:source/mods:originInfo/mods:place">
<span class="origin">
<xsl:apply-templates />
</span>
</xsl:if>
</xsl:template>
<xsl:template match="cs:container">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<span class="container">
<xsl:apply-templates>
<xsl:with-param name="bib:source" select="$bib:source/mods:relatedItem[@type='host']" as="element()" tunnel="yes" />
</xsl:apply-templates>
</span>
</xsl:template>
<xsl:template match="cs:series">
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:apply-templates>
<xsl:with-param name="bib:source" select="$bib:source/mods:relatedItem[@type='series']" as="element()?" tunnel="yes" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:part-details">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="cs:prefix | cs:suffix">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="cs:issue">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='issue']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:file">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='file']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:volume">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:detail[@type='volume']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:genre">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:genre[text()=$genres]">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:medium">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:physicalDescription">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:pages">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:part/mods:extent[@unit='page']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:place">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:place">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:publisher">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:publisher">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:date">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<!-- the below conditional seems a bit of a hack; need to reconsider later -->
<xsl:variable name="date" select="(../$bib:source/mods:originInfo/mods:dateIssued, $bib:source/mods:originInfo/mods:dateIssued, $bib:source/mods:part/mods:date)[1]" />
<xsl:if test="cs:month and not($date castable as xs:gYear) or cs:year">
<span class="date">
<xsl:apply-templates />
</span>
</xsl:if>
</xsl:template>
<xsl:template match="cs:year">
<!-- I'm not sure why requiring the bib:source parameter fails in some cases -->
<xsl:param name="bib:source" as="element()?" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/bib:year">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:month">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<!-- select statement is a problem; problem need to move this into a function -->
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:dateIssued|$bib:source/mods:part/mods:date" mode="month">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:day">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/mods:originInfo/mods:dateIssued|$bib:source/mods:part/mods:date" mode="day">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<!-- end dates -->
<xsl:template match="cs:availability">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$bib:source/mods:location">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="cs:month-day">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:param name="prefix" />
<xsl:param name="suffix" />
<xsl:apply-templates select="$prefix" />
<span class="month-day">
<xsl:apply-templates select="$bib:source/mods:relatedItem/mods:part/mods:date|$bib:source/mods:relatedItem/mods:originInfo/mods:dateIssued" mode="date">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</span>
<xsl:apply-templates select="$suffix" />
</xsl:template>
<xsl:template match="cs:note">
<xsl:param name="bib:source" as="element()" tunnel="yes" />
<xsl:apply-templates select="$bib:source/mods:note[@type='citation']">
<xsl:with-param name="prefix" select="cs:prefix" />
<xsl:with-param name="suffix" select="cs:suffix" />
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
v