Language:

The Free and Open Productivity Suite
Apache OpenOffice 4.1.6 released
<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">
<!--===licensedunderCC-GNUGPL;seehttp://creativecommons.org/licenses/GPL/2.0===-->
<xdoc:doc type="stylesheet">
<xdoc:short>ProcessesMODSdocumentsintoaformattedintermediaterepresentation.</xdoc:short>
<xdoc:author>BruceD’Arcus</xdoc:author>
<xdoc:copyright>2004,BruceD’Arcus</xdoc:copyright>
</xdoc:doc>

<!--punctuationvariables-->
<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"moderenderscompletepersonalnamesinbibliographiesandfootnote/endnote
stylectiations.
</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) &gt; 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 &gt; 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"moderendersjustfamilyname(s)commominauthor-yearcitations.</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>
<!--FIXME:thefollowingpresentsrenderingdifficultiesincertainstyles-->
<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 />
<!--wecanaccessnewlycreatodkeyelementtoappendsuffix-->
<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>
<xdoc:doc>Renderscompletetitle/subtitlecombination.</xdoc:doc>

<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>
<!--thefollowingtemplatesneedtobecombined-->
<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>[accessedon</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:datehandlingprobablyneedstoberedoneasafunction-->
<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>
<xdoc:doc>configuresmonthformattingbasedonCSLdefinition</xdoc:doc>

<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

Apache Software Foundation

Copyright & License | Privacy | Contact Us | Donate | Thanks

Apache and the Apache feather logo are trademarks of The Apache Software Foundation. OpenOffice, OpenOffice.org and the seagull logo are registered trademarks of The Apache Software Foundation. Other names appearing on the site may be trademarks of their respective owners.