The Free and Open Productivity Suite
Follow us on Twitter: @ApacheOO
<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

Apache Software Foundation

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

Apache, the Apache feather logo, and OpenOffice are trademarks of The Apache Software Foundation. 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.