|
|
<xsl:stylesheet 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="http://www.w3.org/1999/xhtml" version="2.0" exclude-result-prefixes="db xdoc xhtml mods xs cs exist bib">
<xsl:import href="../citeproc.xsl" /> <xsl:output method="xhtml" encoding="utf-8" indent="yes" /> <!-- === licensed under CC-GNU GPL; see http://creativecommons.org/licenses/GPL/2.0 === -->
<xdoc:doc type="stylesheet"> <xdoc:short>Transforms DocBook NG to XHTML.</xdoc:short> <xdoc:author>Bruce D’Arcus</xdoc:author> <xdoc:copyright>2004, Bruce D’Arcus</xdoc:copyright> <xdoc:detail> <p>To integrate CiteProc formatting into other stylesheets, import the "citeproc.xsl" file. To format the bibliography, add a template that does a xsl:call-template of the "bib:format-bibliography" template, with an output-format parameter. Likewise, to format the citations, add a template that does a xsl:call-template of the "bib:format-citation" template.</p> </xdoc:detail> </xdoc:doc> <xsl:param name="include-bib">yes</xsl:param> <xsl:variable name="title"> <xsl:value-of select="db:*/db:info/db:title" /> <xsl:if test="db:*/db:info/db:subtitle"> <xsl:text>: </xsl:text> <xsl:value-of select="db:*/db:info/db:subtitle" /> </xsl:if> </xsl:variable> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="$title" /> </title> <meta name="generator" content="CiteProc XSL Stylesheets v{$CP-VERSION}" /> <link rel="stylesheet" href="forprint.css" type="text/css" media="print" /> <link rel="stylesheet" href="screen.css" type="text/css" media="screen" /> </head> <body> <div id="content"> <div id="main-content"> <div class="label"> <xsl:value-of select="db:*/@label" /> </div> <xsl:apply-templates /> <xsl:if test="//db:footnote or $citeclass='note-nobib' or $citeclass='note-bib'"> <div id="notes"> <h3>Notes</h3> <xsl:choose> <xsl:when test="$citeclass='note-nobib' or $citeclass='note-bib'"> <xsl:apply-templates select="//db:footnote | //db:citation[not(ancestor::db:footnote)]" mode="footcite-list" /> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="//db:footnote" mode="footnote-list" /> </xsl:otherwise> </xsl:choose> </div> </xsl:if> <xsl:if test="$include-bib='yes' and not($citeclass='note-nobib')"> <div id="bibliography"> <h3>References</h3> <xsl:call-template name="bib:format-bibliography"> <xsl:with-param name="output-format" select="'xhtml'" /> </xsl:call-template> </div> </xsl:if> </div> </div> </body> </html> </xsl:template> <xsl:template match="db:article"> <xsl:apply-templates /> </xsl:template> <xsl:template match="db:citation"> <xsl:choose> <xsl:when test="$citeclass='note-bib' or $citeclass='note-nobib'"> <xsl:variable name="footnote-number"> <xsl:value-of select="bib:number-footcite(.)" /> </xsl:variable> <xsl:text>[</xsl:text> <a href="#fn{$footnote-number}" name="fnm{$footnote-number}" class="footnote-mark"> <xsl:value-of select="$footnote-number" /> </a> <xsl:text>]</xsl:text> </xsl:when> <xsl:otherwise> <xsl:call-template name="bib:format-citation"> <xsl:with-param name="output-format" select="'xhtml'" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="db:citation" mode="footcite-entry"> <xsl:call-template name="bib:format-citation"> <xsl:with-param name="output-format" select="'xhtml'" /> </xsl:call-template> </xsl:template> <xsl:template match="db:info"> <div class="head"> <xsl:apply-templates /> </div> </xsl:template> <xsl:template match="db:title"> <h1> <xsl:apply-templates /> <xsl:if test="../db:subtitle"> <xsl:text>: </xsl:text> </xsl:if> <xsl:apply-templates select="../db:subtitle" mode="subtitle" /> </h1> </xsl:template> <xsl:template match="db:subtitle" /> <xsl:template match="db:chapter"> <div id="chapter"> <xsl:apply-templates /> </div> </xsl:template> <xsl:template match="db:section"> <xsl:choose> <xsl:when test="not(parent::db:section)"> <div class="section"> <xsl:apply-templates /> </div> </xsl:when> <xsl:otherwise> <xsl:apply-templates /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="db:section/db:title | db:section/db:info/db:title"> <xsl:variable name="depth" select="count(ancestor::db:section)" /> <xsl:choose> <xsl:when test="$depth=0"> <h2> <xsl:apply-templates /> <xsl:apply-templates select="../db:subtitle" mode="subtitle" /> </h2> </xsl:when> <xsl:when test="$depth=1"> <h3> <xsl:apply-templates /> <xsl:apply-templates select="../db:subtitle" mode="subtitle" /> </h3> </xsl:when> <xsl:when test="$depth=2"> <h4> <xsl:apply-templates /> <xsl:apply-templates select="../db:subtitle" mode="subtitle" /> </h4> </xsl:when> <xsl:when test="$depth=3"> <h5> <xsl:apply-templates /> <xsl:apply-templates select="../db:subtitle" mode="subtitle" /> </h5> </xsl:when> </xsl:choose> </xsl:template> <xsl:template match="db:section/db:subtitle | db:section/db:info/db:subtitle" mode="subtitle"> <xsl:text>: </xsl:text> <xsl:apply-templates /> </xsl:template> <xsl:template match="db:section/db:subtitle | db:section/db:info/db:subtitle" /> <xsl:template match="db:author"> <div id="author"> <p class="name"> <xsl:apply-templates select="db:firstname" /> <xsl:text /> <xsl:apply-templates select="db:surname" /> </p> </div> </xsl:template> <xsl:template match="db:affiliation"> <div id="affiliation"> <p class="affiliation"> <xsl:apply-templates select="db:orgname" /> </p> <p class="affiliation"> <xsl:apply-templates select="db:orgdiv" /> </p> <xsl:apply-templates select="address" /> </div> </xsl:template> <xsl:template match="db:address"> <div id="address"> <p class="affiliation"> <xsl:apply-templates select="db:street" /> </p> <p class="affiliation"> <xsl:apply-templates select="db:city" /> <xsl:text>, </xsl:text> <xsl:apply-templates select="db:state" /> <xsl:text /> <xsl:apply-templates select="db:postcode" /> </p> <p class="address"> <xsl:apply-templates select="db:email" /> </p> </div> </xsl:template> <xsl:template match="db:abstract"> <div id="abstract"> <h4>Abstract</h4> <p class="abstract"> <xsl:apply-templates /> </p> </div> </xsl:template> <xsl:template match="db:blockquote"> <blockquote> <xsl:apply-templates /> </blockquote> </xsl:template> <xsl:template match="db:phrase|db:wordasword"> <xsl:text>“</xsl:text> <xsl:apply-templates /> <xsl:text>”</xsl:text> </xsl:template> <xsl:template match="db:date"> <xsl:choose> <xsl:when test=". castable as xs:date"> <xsl:choose> <xsl:when test="@role='month-day'"> <xsl:value-of select="format-date(., '[D] [MNn]')" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="format-date(., '[D] [MNn] [Y]')" /> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <xsl:value-of select="." /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="db:citetitle"> <em> <xsl:apply-templates /> </em> </xsl:template> <xsl:template match="db:quote"> <xsl:text>“</xsl:text> <xsl:apply-templates select="text()|db:phrase|db:quote|db:nq|db:emphasis" /> <xsl:text>”</xsl:text> <xsl:if test="db:citation"> <xsl:text> </xsl:text> <xsl:apply-templates select="db:citation" /> </xsl:if> </xsl:template> <xsl:template match="db:nq"> <xsl:text>”</xsl:text> <xsl:apply-templates /> <xsl:text>“</xsl:text> </xsl:template> <!-- footnote handling --> <xsl:function name="db:number-footnote" as="xs:string"> <xsl:param name="footnote" as="element(db:footnote)" /> <xsl:choose> <xsl:when test="$chapters/db:chapter"> <xsl:number level="any" select="$footnote" from="db:chapter" /> </xsl:when> <xsl:otherwise> <xsl:number level="any" select="$footnote" /> </xsl:otherwise> </xsl:choose> </xsl:function> <xsl:template match="db:footnote"> <xsl:variable name="footnote-number"> <xsl:choose> <xsl:when test="$citeclass='note-bib' or $citeclass='note-nobib'"> <xsl:sequence select="bib:number-footcite(.)" /> </xsl:when> <xsl:otherwise> <xsl:sequence select="db:number-footnote(.)" /> </xsl:otherwise> </xsl:choose> </xsl:variable> <xsl:text>[</xsl:text> <a href="#fn{$footnote-number}" name="fnm{$footnote-number}" class="footnote-mark"> <xsl:value-of select="$footnote-number" /> </a> <xsl:text>]</xsl:text> </xsl:template> <xsl:template match="db:footnote" mode="footnote-list"> <xsl:variable name="footnote-number" select="db:number-footnote(.)" /> <p id="fn{$footnote-number}"> <a href="#fnm{$footnote-number}" class="footnote-anchor"> <xsl:sequence select="$footnote-number" /> </a> <xsl:text>. </xsl:text> <xsl:apply-templates /> </p> </xsl:template> <xsl:template match="db:footnote | db:citation[not(ancestor::db:footnote)]" mode="footcite-list"> <xsl:variable name="number" select="bib:number-footcite(.)" /> <p id="fn{$number}"> <a href="#fnm{$number}" class="footnote-anchor"> <xsl:value-of select="$number" /> </a> <xsl:text>. </xsl:text> <xsl:apply-templates select="if (self::db:footnote) then * else ." mode="footcite-entry" /> </p> </xsl:template> <xsl:template match="db:acronym"> <acronym> <xsl:value-of select="." /> </acronym> </xsl:template> <xsl:template match="db:orderedlist"> <ol> <xsl:apply-templates select="db:listitem" /> </ol> </xsl:template> <xsl:template match="db:listitem"> <li> <xsl:apply-templates /> </li> </xsl:template> <xsl:template match="db:section/db:para | db:chapter/db:para | db:article/db:para"> <xsl:for-each-group select="node()" group-adjacent="self::db:orderedlist or self::db:unorderedlist or self::db:blockquote"> <xsl:choose> <xsl:when test="current-grouping-key()"> <xsl:apply-templates select="current-group()" /> </xsl:when> <xsl:otherwise> <p class="body text"> <xsl:apply-templates select="current-group()" /> </p> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </xsl:template> <xsl:template match="db:blockquote/db:para"> <p class="blockquote"> <xsl:apply-templates /> </p> </xsl:template> <xsl:template match="db:figure"> <div class="image"> <xsl:apply-templates select="db:mediaobject/db:imageobject" /> </div> </xsl:template> <xsl:template match="db:imageobject"> <img src="images/{db:imagedata/@fileref}" alt="{../../db:title}" /> <p class="caption"> <xsl:value-of select="../../db:title" /> </p> </xsl:template> <xsl:template match="db:epigraph"> <div class="epigraph"> <xsl:apply-templates select="db:para" /> <xsl:apply-templates select="db:attribution" /> </div> </xsl:template> <xsl:template match="db:attribution"> <p class="epigraph"> <xsl:text>— </xsl:text> <xsl:apply-templates /> </p> </xsl:template> <xsl:template match="db:emphasis"> <em> <xsl:apply-templates /> </em> </xsl:template> <xsl:template match="db:foreignphrase"> <i class="foreignphrase"> <xsl:apply-templates /> </i> </xsl:template> </xsl:stylesheet> v |


