(incubating) | The Free and Open Productivity Suite
<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 OpenOffice is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Copyright & License
Apache and the Apache feather logos 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.