<xsl:stylesheet xmlns="http://purl.org/NET/xbiblio/citeproc" xmlns:bib="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:exist="http://exist.sourceforge.net/NS/exist" 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" xmlns:course="http://purl.org/NET/xbiblio/course" version="2.0" exclude-result-prefixes="db xdoc xhtml mods xs cs exist bib course">
��<!--�===�licensed�under�CC-GNU�GPL;�see�http://creativecommons.org/licenses/GPL/2.0�===�-->
��
��<!--�punctuation�variables�-->
��<xsl:variable name="bibref-before">
����<xsl:text />
��</xsl:variable>
��<xsl:variable name="bibref-after">
����<xsl:text>.</xsl:text>
��</xsl:variable>
��<xsl:template match="bib:noname-substitute">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="creator">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="." />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��
��<xsl:template match="mods:name" mode="full">
����<xsl:param name="sort-order" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:param name="multi-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
����<xsl:variable name="multi-author-min" select="if ($multi-authors/@min-authors) then ($multi-authors/@min-authors) else xs:integer('999')" as="xs:integer" />
����<xsl:variable name="use-multi-author-handling" select="xs:integer(count(../mods:name[mods:role/mods:roleTerm=$primary-contributors])) ge $multi-author-min" as="xs:boolean" />
����<xsl:value-of select="$prefix" />
����<xsl:choose>
������<xsl:when test="$use-multi-author-handling">
��������<xsl:choose>
����������<xsl:when test="position() le xs:integer($multi-authors/@use-first)">
������������<xsl:choose>
��������������<xsl:when test="$sort-order='first-author' and parent::mods:mods">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
��������������</xsl:when>
��������������
��������������<xsl:when test="$sort-order='first-author' and position() = 1 and parent::mods:mods">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
��������������</xsl:when>
��������������<xsl:when test="$sort-order='all'">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
����������������<xsl:choose>
������������������<xsl:when test="position() = last()" />
������������������<xsl:otherwise>,�</xsl:otherwise>
����������������</xsl:choose>
��������������</xsl:when>
��������������
��������������<xsl:otherwise>
����������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������<xsl:apply-templates select="mods:namePart[@type='family' or not(@type)]" />
��������������</xsl:otherwise>
������������</xsl:choose>
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:if test="position() = last()">
��������������<xsl:text>�</xsl:text>
��������������<xsl:value-of select="$multi-authors" />
������������</xsl:if>
����������</xsl:otherwise>
��������</xsl:choose>
������</xsl:when>
������<xsl:otherwise>
��������<xsl:choose>
����������<xsl:when test="$sort-order='first-author' and position() = 1 and parent::mods:mods">
������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
������������<xsl:if test="mods:namePart[@type='given']">
��������������<xsl:text>,�</xsl:text>
��������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������</xsl:if>
����������</xsl:when>
����������<xsl:when test="$sort-order='all'">
������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
������������<xsl:if test="mods:namePart[@type='given']">
��������������<xsl:text>,�</xsl:text>
��������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������</xsl:if>
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������<xsl:apply-templates select="mods:namePart[@type='family' or not(@type)]" />
����������</xsl:otherwise>
��������</xsl:choose>
��������<xsl:choose>
����������<xsl:when test="position() = last()" />
����������<xsl:when test="position() = last() - 1">�and�</xsl:when>
����������<xsl:otherwise>,�</xsl:otherwise>
��������</xsl:choose>
������</xsl:otherwise>
����</xsl:choose>
����<xsl:value-of select="$suffix" />
��</xsl:template>
��
��<xsl:template match="mods:name[position() gt 1]/mods:role" />
��<xsl:template match="mods:name[position()=1]/mods:role">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="role">
������<xsl:choose>
��������<xsl:when test="mods:roleTerm='editor'">
����������<xsl:value-of select="$prefix" />
����������<xsl:choose>
������������<xsl:when test="count(../../mods:name) > 1">
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='editor']/cs:renderas/cs:multiple" />
������������</xsl:when>
������������<xsl:otherwise>
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='editor']/cs:renderas/cs:single" />
������������</xsl:otherwise>
����������</xsl:choose>
����������<xsl:value-of select="$suffix" />
��������</xsl:when>
��������<xsl:when test="mods:roleTerm='translator'">
����������<xsl:value-of select="$prefix" />
����������<xsl:choose>
������������<xsl:when test="count > 1">
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='translator']/cs:renderas/cs:multiple" />
������������</xsl:when>
������������<xsl:otherwise>
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='translator']/cs:renderas/cs:single" />
������������</xsl:otherwise>
����������</xsl:choose>
����������<xsl:value-of select="$suffix" />
��������</xsl:when>
������</xsl:choose>
����</span>
��</xsl:template>
��
��
��<xsl:template match="mods:name" mode="short">
����<xsl:param name="multi-authors" as="element(cs:multiple-authors)" tunnel="yes" />
����<xsl:variable name="multi-author-use-first" select="$multi-authors/@use-first" as="xs:integer?" />
����<xsl:variable name="multi-author-min" select="if ($multi-authors/@min-authors) then ($multi-authors/@min-authors) else xs:integer('999')" as="xs:integer" />
����<xsl:variable name="use-multi-author-handling" select="xs:integer(count(../mods:name[mods:role/mods:roleTerm=$primary-contributors])) ge $multi-author-min" as="xs:boolean" />
����<xsl:choose>
������<xsl:when test="$use-multi-author-handling">
��������<xsl:choose>
����������<xsl:when test="position() le xs:integer($multi-authors/@use-first)">
������������<xsl:apply-templates select="mods:namePart[not(@type='given')]" />
������������<xsl:choose>
��������������<xsl:when test="position() = last()">�</xsl:when>
��������������<xsl:otherwise>,�</xsl:otherwise>
������������</xsl:choose>�
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:if test="position() = last()">
��������������<xsl:text>�</xsl:text>
��������������<xsl:value-of select="$multi-authors" />
������������</xsl:if>
����������</xsl:otherwise>
��������</xsl:choose>
������</xsl:when>
������<xsl:otherwise>
��������<xsl:apply-templates select="mods:namePart[not(@type='given')]" />
��������<xsl:choose>
����������<xsl:when test="position() = last()" />
����������<xsl:when test="position() = last() - 1">�and�</xsl:when>
����������<xsl:otherwise>,�</xsl:otherwise>
��������</xsl:choose>��������
������</xsl:otherwise>
����</xsl:choose>
��</xsl:template>
��
��<xsl:template match="mods:namePart[@type='given']">
����<xsl:for-each select=".">
������<xsl:choose>
��������<xsl:when test="$style-names/@initialize-with">
����������<xsl:value-of select="substring(.,1,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="." />
����������<xsl:text>�</xsl:text>
��������</xsl:otherwise>
������</xsl:choose>
������<!--�FIX�ME:�the�following�presents�rendering�difficulties�in�certain�styles�-->
������<xsl:value-of select="$style-names/@initialize-with" />
����</xsl:for-each>
��</xsl:template>
��<xsl:template match="mods:namePart[not(@type='given')]">
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="bib:year">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="year">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates />
������<!--�we�can�access�newly�creatod�key�element�to�append�suffix�-->
������<xsl:apply-templates select="../bib:year-suffix" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="bib:year-suffix">
����<xsl:apply-templates />
��</xsl:template>
��
��<xsl:template match="mods:titleInfo[not(@type='abbreviated')]" mode="full">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:param name="font-style" />
����<xsl:param name="font-weight" />
����<xsl:choose>
������<xsl:when test="../../@bib:refclass='part-inSerial' and not(../../mods:name[mods:role/mods:roleTerm=$primary-contributors])" />
������<xsl:otherwise>
��������<span class="title">
����������<xsl:value-of select="$prefix" />
����������<xsl:if test="$font-weight">
������������<xsl:attribute name="font-weight">
��������������<xsl:value-of select="$font-weight" />
������������</xsl:attribute>
����������</xsl:if>
����������<xsl:if test="$font-style">
������������<xsl:attribute name="font-style">
��������������<xsl:value-of select="$font-style" />
������������</xsl:attribute>
����������</xsl:if>
����������<xsl:apply-templates select="mods:title" />
����������<xsl:apply-templates select="mods:subTitle" />
����������<xsl:value-of select="$suffix" />
��������</span>
������</xsl:otherwise>
����</xsl:choose>
��</xsl:template>
��<xsl:template match="mods:title">
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="mods:subTitle">
����<xsl:text>:�</xsl:text>
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="mods:originInfo">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:if test="mods:place">
������<span class="origin">
��������<xsl:value-of select="$prefix" />
��������<xsl:apply-templates />
��������<xsl:value-of select="$suffix" />
������</span>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:publisher">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="publisher">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:place">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="place">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates select="mods:placeTerm" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<!--�the�following�templates�need�to�be�combined�-->
��<xsl:template match="mods:detail[@type='volume']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="volume">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='issue']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="issue">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='file']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="file">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='paragraph']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<xsl:value-of select="$prefix" />
����<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
����<xsl:value-of select="mods:number" />
����<xsl:value-of select="$suffix" />
��</xsl:template>
��<xsl:template match="mods:extent">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="unit" select="@unit" />
����<span class="locator">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$unit]/cs:renderas/cs:multiple" />
������<xsl:value-of select="mods:start" />
������<xsl:if test="mods:end">
��������<xsl:text>–</xsl:text>
��������<xsl:value-of select="bib:number-condense(mods:start,mods:end)" />
������</xsl:if>
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:typeOfResource | mods:issuance" />
��<xsl:template match="mods:genre">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="genre" select="." />
����<span class="genre">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$style-terms/cs:genres/cs:genre[@term=$genre]/cs:renderas" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:location">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:value-of select="$prefix" />
����<span class="availability">
������<xsl:apply-templates />
����</span>
����<xsl:value-of select="$suffix" />
��</xsl:template>
��<xsl:template match="mods:url">
����<xsl:value-of select="." />
����<xsl:if test="@dateLastAccessed">
������<xsl:text>�[accessed�on�</xsl:text>
������<xsl:apply-templates select="./@dateLastAccessed" />
������<xsl:text>]</xsl:text>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:physicalLocation">
����<xsl:value-of select="." />
��</xsl:template>
��<!--�TODO:�date�handling�probably�needs�to�be�redone�as�a�function�-->
��<xsl:template match="mods:url/@dateLastAccessed">
����<xsl:variable name="current" select="current()" />
����<xsl:variable name="month-part" select="$month-format[xs:integer(substring($current,6,2))]" />
����<xsl:variable name="day-part">
������<xsl:choose>
��������<xsl:when test="substring(.,9,1) = '0'">
����������<xsl:value-of select="substring(.,10,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="substring(.,9,2)" />
��������</xsl:otherwise>
������</xsl:choose>
����</xsl:variable>
����<span class="date-accessed">
������<xsl:if test="substring(.,6,2)">
��������<xsl:text />
��������<xsl:value-of select="$month-part" />
������</xsl:if>
������<xsl:if test="substring(.,9,2)">
��������<xsl:text>�</xsl:text>
��������<xsl:value-of select="$day-part" />
������</xsl:if>
������<xsl:if test="substring(.,6,2)">
��������<xsl:text />
������</xsl:if>
������<xsl:if test="../@dateLastAccessed">
��������<xsl:text>,�</xsl:text>
��������<xsl:value-of select="substring(.,1,4)" />
������</xsl:if>
����</span>
��</xsl:template>
��
��<xsl:variable name="month-format" as="element()*">
����<xsl:sequence select="$styles/cs:citationstyle/cs:content/cs:dates/cs:months/cs:month" />
��</xsl:variable>
��<xsl:template match="mods:date | mods:dateIssued" mode="month">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="current" select="current()" />
����<xsl:choose>
������<xsl:when test="current() castable as xs:gYearMonth or current() castable as xs:date">
��������<xsl:variable name="month-part" select="$month-format[xs:integer(substring($current,6,2))]" />
��������<span class="month">
����������<xsl:apply-templates select="$prefix" />
����������<xsl:value-of select="$month-part" />
����������<xsl:apply-templates select="$suffix" />
��������</span>
������</xsl:when>
����</xsl:choose>
��</xsl:template>
��<xsl:template match="mods:date | mods:dateIssued" mode="day">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="day-part">
������<xsl:choose>
��������<xsl:when test="substring(.,9,1) = '0'">
����������<xsl:value-of select="substring(.,10,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="substring(.,9,2)" />
��������</xsl:otherwise>
������</xsl:choose>
����</xsl:variable>
����<xsl:if test="current() castable as xs:date">
������<span class="day">
��������<xsl:value-of select="$prefix" />
��������<xsl:value-of select="$day-part" />
��������<xsl:value-of select="$suffix" />
������</span>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:note[@type='citation']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="note">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="." />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:physicalDescription | mods:note[not(@type='citation')]" />
</xsl:stylesheet>
��<!--�===�licensed�under�CC-GNU�GPL;�see�http://creativecommons.org/licenses/GPL/2.0�===�-->
��
��<xdoc:doc type="stylesheet">
����<xdoc:short>Processes�MODS�documents�into�a�formatted�intermediate�representation.</xdoc:short>
����<xdoc:author>Bruce�D’Arcus</xdoc:author>
����<xdoc:copyright>2004,�Bruce�D’Arcus</xdoc:copyright>
��</xdoc:doc>
����<xdoc:short>Processes�MODS�documents�into�a�formatted�intermediate�representation.</xdoc:short>
����<xdoc:author>Bruce�D’Arcus</xdoc:author>
����<xdoc:copyright>2004,�Bruce�D’Arcus</xdoc:copyright>
��</xdoc:doc>
��<!--�punctuation�variables�-->
��<xsl:variable name="bibref-before">
����<xsl:text />
��</xsl:variable>
��<xsl:variable name="bibref-after">
����<xsl:text>.</xsl:text>
��</xsl:variable>
��<xsl:template match="bib:noname-substitute">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="creator">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="." />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��
��<xdoc:doc>The�"full"�mode�renders�complete�personal�names�in�bibliographies�and�footnote/endnote
����style�ctiations.</xdoc:doc>
����style�ctiations.</xdoc:doc>
��<xsl:template match="mods:name" mode="full">
����<xsl:param name="sort-order" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:param name="multi-authors" as="element(cs:multiple-authors)?" tunnel="yes" />
����<xsl:variable name="multi-author-min" select="if ($multi-authors/@min-authors) then ($multi-authors/@min-authors) else xs:integer('999')" as="xs:integer" />
����<xsl:variable name="use-multi-author-handling" select="xs:integer(count(../mods:name[mods:role/mods:roleTerm=$primary-contributors])) ge $multi-author-min" as="xs:boolean" />
����<xsl:value-of select="$prefix" />
����<xsl:choose>
������<xsl:when test="$use-multi-author-handling">
��������<xsl:choose>
����������<xsl:when test="position() le xs:integer($multi-authors/@use-first)">
������������<xsl:choose>
��������������<xsl:when test="$sort-order='first-author' and parent::mods:mods">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
��������������</xsl:when>
��������������
��������������<xsl:when test="$sort-order='first-author' and position() = 1 and parent::mods:mods">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
��������������</xsl:when>
��������������<xsl:when test="$sort-order='all'">
����������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
����������������<xsl:if test="mods:namePart[@type='given']">
������������������<xsl:text>,�</xsl:text>
������������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������</xsl:if>
����������������<xsl:choose>
������������������<xsl:when test="position() = last()" />
������������������<xsl:otherwise>,�</xsl:otherwise>
����������������</xsl:choose>
��������������</xsl:when>
��������������
��������������<xsl:otherwise>
����������������<xsl:apply-templates select="mods:namePart[@type='given']" />
����������������<xsl:apply-templates select="mods:namePart[@type='family' or not(@type)]" />
��������������</xsl:otherwise>
������������</xsl:choose>
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:if test="position() = last()">
��������������<xsl:text>�</xsl:text>
��������������<xsl:value-of select="$multi-authors" />
������������</xsl:if>
����������</xsl:otherwise>
��������</xsl:choose>
������</xsl:when>
������<xsl:otherwise>
��������<xsl:choose>
����������<xsl:when test="$sort-order='first-author' and position() = 1 and parent::mods:mods">
������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
������������<xsl:if test="mods:namePart[@type='given']">
��������������<xsl:text>,�</xsl:text>
��������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������</xsl:if>
����������</xsl:when>
����������<xsl:when test="$sort-order='all'">
������������<xsl:apply-templates select="mods:namePart[@type='family'] | mods:namePart[not(@type)]" />
������������<xsl:if test="mods:namePart[@type='given']">
��������������<xsl:text>,�</xsl:text>
��������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������</xsl:if>
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:apply-templates select="mods:namePart[@type='given']" />
������������<xsl:apply-templates select="mods:namePart[@type='family' or not(@type)]" />
����������</xsl:otherwise>
��������</xsl:choose>
��������<xsl:choose>
����������<xsl:when test="position() = last()" />
����������<xsl:when test="position() = last() - 1">�and�</xsl:when>
����������<xsl:otherwise>,�</xsl:otherwise>
��������</xsl:choose>
������</xsl:otherwise>
����</xsl:choose>
����<xsl:value-of select="$suffix" />
��</xsl:template>
��
��<xsl:template match="mods:name[position() gt 1]/mods:role" />
��<xsl:template match="mods:name[position()=1]/mods:role">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="role">
������<xsl:choose>
��������<xsl:when test="mods:roleTerm='editor'">
����������<xsl:value-of select="$prefix" />
����������<xsl:choose>
������������<xsl:when test="count(../../mods:name) > 1">
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='editor']/cs:renderas/cs:multiple" />
������������</xsl:when>
������������<xsl:otherwise>
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='editor']/cs:renderas/cs:single" />
������������</xsl:otherwise>
����������</xsl:choose>
����������<xsl:value-of select="$suffix" />
��������</xsl:when>
��������<xsl:when test="mods:roleTerm='translator'">
����������<xsl:value-of select="$prefix" />
����������<xsl:choose>
������������<xsl:when test="count > 1">
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='translator']/cs:renderas/cs:multiple" />
������������</xsl:when>
������������<xsl:otherwise>
��������������<xsl:value-of select="$style-terms/cs:roles/cs:role[@term='translator']/cs:renderas/cs:single" />
������������</xsl:otherwise>
����������</xsl:choose>
����������<xsl:value-of select="$suffix" />
��������</xsl:when>
������</xsl:choose>
����</span>
��</xsl:template>
��
��
��<xdoc:doc>The�"short"�mode�renders�just�family�name(s)�commom�in�author-year�citations.</xdoc:doc>
��<xsl:template match="mods:name" mode="short">
����<xsl:param name="multi-authors" as="element(cs:multiple-authors)" tunnel="yes" />
����<xsl:variable name="multi-author-use-first" select="$multi-authors/@use-first" as="xs:integer?" />
����<xsl:variable name="multi-author-min" select="if ($multi-authors/@min-authors) then ($multi-authors/@min-authors) else xs:integer('999')" as="xs:integer" />
����<xsl:variable name="use-multi-author-handling" select="xs:integer(count(../mods:name[mods:role/mods:roleTerm=$primary-contributors])) ge $multi-author-min" as="xs:boolean" />
����<xsl:choose>
������<xsl:when test="$use-multi-author-handling">
��������<xsl:choose>
����������<xsl:when test="position() le xs:integer($multi-authors/@use-first)">
������������<xsl:apply-templates select="mods:namePart[not(@type='given')]" />
������������<xsl:choose>
��������������<xsl:when test="position() = last()">�</xsl:when>
��������������<xsl:otherwise>,�</xsl:otherwise>
������������</xsl:choose>�
����������</xsl:when>
����������<xsl:otherwise>
������������<xsl:if test="position() = last()">
��������������<xsl:text>�</xsl:text>
��������������<xsl:value-of select="$multi-authors" />
������������</xsl:if>
����������</xsl:otherwise>
��������</xsl:choose>
������</xsl:when>
������<xsl:otherwise>
��������<xsl:apply-templates select="mods:namePart[not(@type='given')]" />
��������<xsl:choose>
����������<xsl:when test="position() = last()" />
����������<xsl:when test="position() = last() - 1">�and�</xsl:when>
����������<xsl:otherwise>,�</xsl:otherwise>
��������</xsl:choose>��������
������</xsl:otherwise>
����</xsl:choose>
��</xsl:template>
��
��<xsl:template match="mods:namePart[@type='given']">
����<xsl:for-each select=".">
������<xsl:choose>
��������<xsl:when test="$style-names/@initialize-with">
����������<xsl:value-of select="substring(.,1,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="." />
����������<xsl:text>�</xsl:text>
��������</xsl:otherwise>
������</xsl:choose>
������<!--�FIX�ME:�the�following�presents�rendering�difficulties�in�certain�styles�-->
������<xsl:value-of select="$style-names/@initialize-with" />
����</xsl:for-each>
��</xsl:template>
��<xsl:template match="mods:namePart[not(@type='given')]">
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="bib:year">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="year">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates />
������<!--�we�can�access�newly�creatod�key�element�to�append�suffix�-->
������<xsl:apply-templates select="../bib:year-suffix" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="bib:year-suffix">
����<xsl:apply-templates />
��</xsl:template>
��
��<xsl:template match="mods:titleInfo[not(@type='abbreviated')]" mode="full">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:param name="font-style" />
����<xsl:param name="font-weight" />
����<xsl:choose>
������<xsl:when test="../../@bib:refclass='part-inSerial' and not(../../mods:name[mods:role/mods:roleTerm=$primary-contributors])" />
������<xsl:otherwise>
��������<span class="title">
����������<xsl:value-of select="$prefix" />
����������<xsl:if test="$font-weight">
������������<xsl:attribute name="font-weight">
��������������<xsl:value-of select="$font-weight" />
������������</xsl:attribute>
����������</xsl:if>
����������<xsl:if test="$font-style">
������������<xsl:attribute name="font-style">
��������������<xsl:value-of select="$font-style" />
������������</xsl:attribute>
����������</xsl:if>
����������<xsl:apply-templates select="mods:title" />
����������<xsl:apply-templates select="mods:subTitle" />
����������<xsl:value-of select="$suffix" />
��������</span>
������</xsl:otherwise>
����</xsl:choose>
��</xsl:template>
��<xsl:template match="mods:title">
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="mods:subTitle">
����<xsl:text>:�</xsl:text>
����<xsl:apply-templates />
��</xsl:template>
��<xsl:template match="mods:originInfo">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:if test="mods:place">
������<span class="origin">
��������<xsl:value-of select="$prefix" />
��������<xsl:apply-templates />
��������<xsl:value-of select="$suffix" />
������</span>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:publisher">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="publisher">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:place">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="place">
������<xsl:value-of select="$prefix" />
������<xsl:apply-templates select="mods:placeTerm" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<!--�the�following�templates�need�to�be�combined�-->
��<xsl:template match="mods:detail[@type='volume']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="volume">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='issue']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="issue">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='file']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<span class="file">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
������<xsl:value-of select="mods:number" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:detail[@type='paragraph']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="type" select="@type" />
����<xsl:value-of select="$prefix" />
����<xsl:value-of select="$locators/cs:locator[@unit=$type]/cs:renderas/cs:single" />
����<xsl:value-of select="mods:number" />
����<xsl:value-of select="$suffix" />
��</xsl:template>
��<xsl:template match="mods:extent">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="unit" select="@unit" />
����<span class="locator">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$locators/cs:locator[@unit=$unit]/cs:renderas/cs:multiple" />
������<xsl:value-of select="mods:start" />
������<xsl:if test="mods:end">
��������<xsl:text>–</xsl:text>
��������<xsl:value-of select="bib:number-condense(mods:start,mods:end)" />
������</xsl:if>
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:typeOfResource | mods:issuance" />
��<xsl:template match="mods:genre">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="genre" select="." />
����<span class="genre">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="$style-terms/cs:genres/cs:genre[@term=$genre]/cs:renderas" />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:location">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:value-of select="$prefix" />
����<span class="availability">
������<xsl:apply-templates />
����</span>
����<xsl:value-of select="$suffix" />
��</xsl:template>
��<xsl:template match="mods:url">
����<xsl:value-of select="." />
����<xsl:if test="@dateLastAccessed">
������<xsl:text>�[accessed�on�</xsl:text>
������<xsl:apply-templates select="./@dateLastAccessed" />
������<xsl:text>]</xsl:text>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:physicalLocation">
����<xsl:value-of select="." />
��</xsl:template>
��<!--�TODO:�date�handling�probably�needs�to�be�redone�as�a�function�-->
��<xsl:template match="mods:url/@dateLastAccessed">
����<xsl:variable name="current" select="current()" />
����<xsl:variable name="month-part" select="$month-format[xs:integer(substring($current,6,2))]" />
����<xsl:variable name="day-part">
������<xsl:choose>
��������<xsl:when test="substring(.,9,1) = '0'">
����������<xsl:value-of select="substring(.,10,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="substring(.,9,2)" />
��������</xsl:otherwise>
������</xsl:choose>
����</xsl:variable>
����<span class="date-accessed">
������<xsl:if test="substring(.,6,2)">
��������<xsl:text />
��������<xsl:value-of select="$month-part" />
������</xsl:if>
������<xsl:if test="substring(.,9,2)">
��������<xsl:text>�</xsl:text>
��������<xsl:value-of select="$day-part" />
������</xsl:if>
������<xsl:if test="substring(.,6,2)">
��������<xsl:text />
������</xsl:if>
������<xsl:if test="../@dateLastAccessed">
��������<xsl:text>,�</xsl:text>
��������<xsl:value-of select="substring(.,1,4)" />
������</xsl:if>
����</span>
��</xsl:template>
��
��<xsl:variable name="month-format" as="element()*">
����<xsl:sequence select="$styles/cs:citationstyle/cs:content/cs:dates/cs:months/cs:month" />
��</xsl:variable>
��<xsl:template match="mods:date | mods:dateIssued" mode="month">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="current" select="current()" />
����<xsl:choose>
������<xsl:when test="current() castable as xs:gYearMonth or current() castable as xs:date">
��������<xsl:variable name="month-part" select="$month-format[xs:integer(substring($current,6,2))]" />
��������<span class="month">
����������<xsl:apply-templates select="$prefix" />
����������<xsl:value-of select="$month-part" />
����������<xsl:apply-templates select="$suffix" />
��������</span>
������</xsl:when>
����</xsl:choose>
��</xsl:template>
��<xsl:template match="mods:date | mods:dateIssued" mode="day">
����<xsl:param name="source" />
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<xsl:variable name="day-part">
������<xsl:choose>
��������<xsl:when test="substring(.,9,1) = '0'">
����������<xsl:value-of select="substring(.,10,1)" />
��������</xsl:when>
��������<xsl:otherwise>
����������<xsl:value-of select="substring(.,9,2)" />
��������</xsl:otherwise>
������</xsl:choose>
����</xsl:variable>
����<xsl:if test="current() castable as xs:date">
������<span class="day">
��������<xsl:value-of select="$prefix" />
��������<xsl:value-of select="$day-part" />
��������<xsl:value-of select="$suffix" />
������</span>
����</xsl:if>
��</xsl:template>
��<xsl:template match="mods:note[@type='citation']">
����<xsl:param name="prefix" />
����<xsl:param name="suffix" />
����<span class="note">
������<xsl:value-of select="$prefix" />
������<xsl:value-of select="." />
������<xsl:value-of select="$suffix" />
����</span>
��</xsl:template>
��<xsl:template match="mods:physicalDescription | mods:note[not(@type='citation')]" />
</xsl:stylesheet>
v