dion        02/01/20 16:07:07

  Added:       latka/xsl/site docbook2document.xsl
  Log:
  First cut at docbook to site format (document)
  
  Revision  Changes    Path
  1.1                  jakarta-commons/latka/xsl/site/docbook2document.xsl
  
  Index: docbook2document.xsl
  ===================================================================
  <?xml version="1.0"?>
  
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                  version="1.0">
  
      <xsl:template match="book">
          <body>
              <title><xsl:value-of select="title"/></title>
              <center>
                  <table width="80%">
                      <tr>
                          <td bgcolor="#F3DD61">
                              <br/>
                              <center>
                                  <b>
                                  <font color="#000000" 
face="arial,helvetica,sanserif">
                                      <xsl:value-of select="title"/>
                                      <xsl:if test="subtitle"><xsl:text>: </xsl:text>
                                          <xsl:value-of select="subtitle"/>
                                      </xsl:if>
                                  </font>
                                  </b>
                              </center>
                              <br/>
                          </td>
                      </tr>
                  </table>
              </center>
              <br/>
              <xsl:apply-templates select="dedication"/>
              <xsl:apply-templates select="bookinfo"/>
          </body>
      </xsl:template>
  
      <xsl:template match="chapter|article|appendix">
          <document>
              <properties>
                  <title>
                      <xsl:value-of select="title"/>
                      <xsl:if test="subtitle">
                          (<xsl:value-of select="subtitle"/>)
                      </xsl:if>
                  </title>
                  <xsl:for-each select="//authorgroup/author">
                      <author email="{address/email}">
                          <xsl:if test="honorific"><xsl:value-of select="honorific"/>. 
</xsl:if>
                          <xsl:if test="firstname"><xsl:value-of select="firstname"/> 
</xsl:if>
                          <xsl:value-of select="surname"/>
                      </author>
                  </xsl:for-each>
  
                  <author email="[EMAIL PROTECTED]">
                      Commons Documentation Team
                  </author>
              </properties>
  
              <!-- FIXME: 
              plan to remove all html formatting from the stylesheet unless it's
              translating the docbook tags across -->
              <body>
  
              <xsl:apply-templates select="para"/>
  
            <xsl:apply-templates select="section">
              <xsl:with-param name="level" select="1"/>
            </xsl:apply-templates>
  
            <xsl:apply-templates select="//footnote" mode="base"/>
          </body>
      </document>
    </xsl:template>
  
    <xsl:template match="title|subtitle"/>
  
    <!-- FIXME: Where would this match? -->
    <xsl:template match="author">
        <p>
          <xsl:value-of select="honorific"/><xsl:text>. </xsl:text>
          <xsl:value-of select="firstname"/><xsl:text> </xsl:text>
          <xsl:value-of select="surname"/>
        </p>
        <xsl:text>Author: </xsl:text>
        <xsl:value-of select="honorific"/><xsl:text>. </xsl:text>
        <xsl:value-of select="firstname"/><xsl:text> </xsl:text>
        <xsl:value-of select="surname"/>
        
        <xsl:text>Affiliations</xsl:text>
          <ul>
            <xsl:apply-templates select="affiliation"/>
          </ul>
        <xsl:apply-templates select="authorblurb"/>
    </xsl:template>
  
    <xsl:template match="affiliation">
      <li>
        <xsl:text>[</xsl:text><xsl:value-of select="shortaffil"/><xsl:text>] 
</xsl:text>
        <b><xsl:value-of select="jobtitle"/></b>
        <i><xsl:value-of select="orgname"/><xsl:if 
test="orgdiv"><xsl:text>/</xsl:text><xsl:value-of select="orgdiv"/></xsl:if></i>
      </li>
    </xsl:template>
  
    <xsl:template match="authorblurb">
      <xsl:text>Bio</xsl:text>
      <ul>
          <xsl:apply-templates/>
      </ul>
    </xsl:template>
  
    <xsl:template 
match="honorific|firstname|surname|orgdiv|orgname|shortaffil|jobtitle"/>
  
    <xsl:template match="revhistory">
        <section name="Revision History">
            <xsl:variable name="unique-revisions" 
              
select="revision[not(revnumber=preceding-sibling::revision/revnumber)]/revnumber"/>
  
            <xsl:variable name="base" select="."/>
  
            <xsl:for-each select="$unique-revisions">
            <p>Revision <xsl:value-of select="."/> 
                 (<xsl:value-of select="$base/revision[revnumber=current()]/date"/>)
            </p>
            <ul>
              <xsl:apply-templates select="$base/revision[revnumber=current()]"/>
            </ul>
            </xsl:for-each>
        </section>
    </xsl:template>
  
    <xsl:template match="para">
      <p><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="emphasis"><em><xsl:apply-templates/></em></xsl:template>
  
    <xsl:template match="revision">
      <li>
        <xsl:choose>
          <xsl:when test="@revisionflag='added'">
            <img align="absmiddle" alt="added" border="0" src="images/add.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='changed'">
            <img align="absmiddle" alt="changed" border="0" src="images/update.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='deleted'">
            <img align="absmiddle" alt="deleted" border="0" src="images/remove.jpg"/>
          </xsl:when>
          <xsl:when test="@revisionflag='off'">
            <img align="absmiddle" alt="off" border="0" src="images/fix.jpg"/>
          </xsl:when>
          <xsl:otherwise>
            <img align="absmiddle" alt="changed" border="0" src="images/update.jpg"/>
          </xsl:otherwise>
        </xsl:choose>
        <xsl:value-of select="revremark"/>
        <xsl:text> (</xsl:text><xsl:value-of 
select="authorinitials"/><xsl:text>)</xsl:text>
      </li>
    </xsl:template>
  
    <xsl:template match="revnumber|revremark|authorinitials|date"/>
  
    <xsl:template match="section">
          <xsl:param name="level"/>
  
          <xsl:choose>
              <xsl:when test="number($level)=1">
                  <section name="{title}">
                      <xsl:apply-templates>
                          <xsl:with-param name="level" select="number($level)+1"/>
                      </xsl:apply-templates>
                  </section>
              </xsl:when>
              <xsl:when test="number($level)=2">
                  <subsection name="{title}">
                      <xsl:apply-templates>
                          <xsl:with-param name="level" select="number($level)+1"/>
                      </xsl:apply-templates>
                  </subsection>
              </xsl:when>
              <xsl:otherwise>
                  <p><em><xsl:value-of select="title"/></em>
                      <br />
                      <xsl:apply-templates>
                          <xsl:with-param name="level" select="number($level)+1"/>
                      </xsl:apply-templates>
                  </p>    
              </xsl:otherwise>
          </xsl:choose>
    </xsl:template>
  
    <xsl:template match="bookinfo">
        <b><xsl:value-of select="edition"/></b><xsl:text> </xsl:text>
        <i>pub. <xsl:value-of select="pubdate"/></i>
        <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="dedication">
        <b>Dedication</b>
        <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="edition|pubdate|year|holder"/>
  
    <xsl:template match="copyright">
      <p>Copyright &#x00A9;<xsl:value-of select="year"/> by 
          <xsl:value-of select="holder"/>.<br/>
        <i>All rights reserved.</i>
      </p>
    </xsl:template>
  
    <xsl:template match="legalnotice">
      <p>Legal Notice</p>
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="programlisting">
          <pre>
            <xsl:apply-templates/>
          </pre>
    </xsl:template>
  
    <xsl:template match="orderedlist"><ol><xsl:apply-templates/></ol></xsl:template>
  
    <xsl:template match="listitem"><li><xsl:apply-templates/></li></xsl:template>
  
    <xsl:template match="itemizedlist"><ul><xsl:apply-templates/></ul></xsl:template>
  
    <xsl:template 
match="classname|function|parameter"><code><xsl:apply-templates/><xsl:if 
test="name(.)='function'"><xsl:text>()</xsl:text></xsl:if></code></xsl:template>
  
    <xsl:template match="blockquote">
          <xsl:if test="title">
              <blockquote><xsl:value-of select="title"/></blockquote>
          </xsl:if>
          <p><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="warning">
          <xsl:if test="title">
              <p><em><xsl:value-of select="title"/></em></p>
          </xsl:if>
          <p><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="ulink"><a 
href="{@url}"><xsl:apply-templates/></a></xsl:template>
  
    <xsl:template match="footnote">
      <sup><a href="#{generate-id(.)}"><xsl:value-of select="generate-id(.)"/></a>
      </sup>
    </xsl:template>
  
    <xsl:template match="footnote" mode="base">
        <a name="{generate-id(.)}"/><xsl:value-of select="generate-id(.)"/><xsl:text>) 
</xsl:text><i><xsl:value-of select="."/></i>
    </xsl:template>
  
    <xsl:template match="figure">
          <p>Figure: <xsl:value-of select="title"/></p>
          <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="graphic">
          <img border="0" alt="{@srccredit}" src="{@fileref}"/>
          <xsl:if test="@srccredit">
              <ul><li><xsl:value-of select="@srccredit"/></li></ul>
          </xsl:if>
    </xsl:template>
  
    <xsl:template match="table">
      <table>
        <xsl:apply-templates/>
      </table>
    </xsl:template>
  
    <xsl:template match="tgroup">
      <xsl:apply-templates select="thead|tbody|tfoot"/>
    </xsl:template>
  
    <xsl:template match="thead">
      <xsl:apply-templates select="row" mode="head"/>
    </xsl:template>
  
    <xsl:template match="row" mode="head">
      <th><xsl:apply-templates/></th>
    </xsl:template>
  
    <xsl:template match="row">
      <tr><xsl:apply-templates/></tr>
    </xsl:template>
  
    <xsl:template match="tbody|tfoot">
      <xsl:apply-templates/>
    </xsl:template>
  
    <xsl:template match="entry">
          <p><xsl:apply-templates/></p>
    </xsl:template>
  
    <xsl:template match="firstterm">
      <i><xsl:apply-templates/></i>
    </xsl:template>
    
    <xsl:template match="remark">
      <p><b>Note:</b> <xsl:apply-templates/></p>
    </xsl:template>
    
    <xsl:template match="trademark"><xsl:apply-templates/><sup>TM</sup></xsl:template>
  
    <xsl:template match="node()|@*" priority="-1">
      <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
      </xsl:copy>
    </xsl:template>
    
  </xsl:stylesheet>
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to