2012-10-04 34 views
2

我試圖自定義DocBook XSL的HTML輸出。Docbook XSL - HTML自定義圖層 - 標題部分標題

<section>級X生成標題級別X + 1

例如<sect1> - ><h2>但我使用<section>標籤,而不是<sectX>。我明白爲什麼會發生,但我想改變這種行爲,以便給定級別的部分生成相同的級別標題。我試着研究titlepage模板,但它們對我來說並沒有意義,我也找不到生成<hX>標籤的實際代碼。

舉個例子,我有一個DocBook文檔看起來是這樣的:

<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" 
[other namespace definitions] 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://docbook.org/ns/docbook docbook.xsd" version="5.0"> 
    <info> 
    <title>Document Title</title> 
    <orgname>Company</orgname> 
    </info> 
    <section> 
    <title>INTRODUCTION</title> 
    <section> 
     <title>Overview</title> 
     <para>This document defines [...]</para> 
    </section> 
    <section> 
     <title>More Information</title> 
     <para>[...]</para> 
    </section> 
    <section> 
     <title>Aim</title> 
     <para>This Document will be used to [...]</para> 
     <table> 
     [irrelevant table code] 
     </table> 
    </section> 
    <section> 
     <title>Related Documents</title> 
     <para>[...]</para> 
    </section> 
    </section> 
    <section> 
    <title>ANOTHER SECTION</title> 
    <para>This section provides [...]</para> 
    </section> 
</article> 

這將生成以下HTML代碼:

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Document Title</title> 
    <meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"> 
    <link rel="stylesheet" href="style.css" type="text/css"> 
    <link rel="stylesheet" href="print.css" type="text/css" media="print"> 
    <!--[if IE]> 
      <link type="text/css" rel="stylesheet" href="ie.css"> 
      <![endif]--> 
    </head> 
    <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 
    <div class="article" title="Document Title"> 
    <div class="titlepage"> 
     <div> 
     <div> 
      <h1 class="title"><a name="d0e1"></a>Document Title</h1> 
     </div> 
     </div> 
     <hr> 
    </div> 
    <div class="toc"> 
     <p> 
     <b>Table of Contents</b> 
     </p> 
     <dl> 
     <dt><span class="section"><a href="#d0e7">INTRODUCTION</a></span></dt> 
     <dd> 
     <dl> 
      <dt><span class="section"><a href="#d0e10">Overview</a></span></dt> 
      <dt><span class="section"><a href="#d0e15">More Information</a></span></dt> 
      <dt><span class="section"><a href="#d0e20">Aim</a></span></dt> 
      <dt><span class="section"><a href="#d0e48">Related Documents</a></span></dt> 
     </dl> 
     </dd> 
     <dt><span class="section"><a href="#d0e53">ANOTHER SECTION</a></span></dt> 
     </dl> 
    </div> 
    <div class="section" title="INTRODUCTION"> 
     <div class="titlepage"> 
     <div> 
      <div> 
      <h2 class="title" style="clear: both"><a name="d0e7"></a>INTRODUCTION</h2> 
      </div> 
     </div> 
     </div> 
     <div class="section" title="Overview"> 
     <div class="titlepage"> 
      <div> 
      <div> 
       <h3 class="title"><a name="d0e10"></a>Overview</h3> 
      </div> 
      </div> 
     </div> 
     <p> 
      This document defines [...] 
     </p> 
     </div> 
     <div class="section" title="More Information"> 
     <div class="titlepage"> 
      <div> 
      <div> 
       <h3 class="title"><a name="d0e15"></a>More Information</h3> 
      </div> 
      </div> 
     </div> 
     <p> 
      [...] 
     </p> 
     </div> 
     <div class="section" title="Aim"> 
     <div class="titlepage"> 
      <div> 
      <div> 
       <h3 class="title"><a name="d0e20"></a>Aim</h3> 
      </div> 
      </div> 
     </div> 
     <p> 
      This Document will be used to [...] 
     </p> 
     <div class="table"> 
      [irrelevant table code] 
     </div> 
     <br class="table-break"> 
     </div> 
     <div class="section" title="Related Documents"> 
     <div class="titlepage"> 
      <div> 
      <div> 
       <h3 class="title"><a name="d0e48"></a>Related Documents</h3> 
      </div> 
      </div> 
     </div> 
     <p> 
      [...] 
     </p> 
     </div> 
    </div> 
    <div class="section" title="ANOTHER SECTION"> 
     <div class="titlepage"> 
     <div> 
      <div> 
      <h2 class="title" style="clear: both"><a name="d0e53"></a>ANOTHER SECTION</h2> 
      </div> 
     </div> 
     </div> 
     <p> 
     This section provides [...] 
     </p> 
    </div> 
    </div> 
    </body> 
    </html> 

謝謝!

〜Slampisko

+1

請爲每個'問題'創建一個單獨的條目。這總是一個更好的方法,因爲它更容易理解和回答問題。謝謝。 – Verhagen

+0

關於Q1:添加一個最小示例,包含

等的完整文檔。用過的部分很多,從未見過這種情況。 – Verhagen

+1

感謝您的意見,我已經分解並編輯了這個問題。 – Slampisko

回答

3

sections.xsl中創建名爲「section.heading」的模板的自定義。以下是該模板的摘錄。您只需將$level + 1更改爲$level即可。

<!-- HTML H level is one higher than section level --> 
<xsl:variable name="hlevel"> 
    <xsl:choose> 
    <!-- highest valid HTML H level is H6; so anything nested deeper 
     than 5 levels down just becomes H6 --> 
    <xsl:when test="$level &gt; 5">6</xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="$level + 1"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 
<xsl:element name="h{$hlevel}"> 
    <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute> 
    <xsl:if test="$css.decoration != '0'"> 
    <xsl:if test="$hlevel&lt;3"> 
     <xsl:attribute name="style">clear: both</xsl:attribute> 
    </xsl:if> 
    </xsl:if> 
    <xsl:if test="$allow-anchors != 0 and $generate.id.attributes = 0"> 
    <xsl:call-template name="anchor"> 
     <xsl:with-param name="node" select="$section"/> 
     <xsl:with-param name="conditional" select="0"/> 
    </xsl:call-template> 
    </xsl:if> 
    <xsl:if test="$generate.id.attributes != 0 and not(local-name(.) = 'appendix')"> 
    <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> 
    </xsl:if> 
    <xsl:copy-of select="$title"/> 
</xsl:element> 
+0

是的,這似乎已經完成了這個訣竅。非常感謝! (並且對於如此遲到的迴應感到抱歉) – Slampisko

0

如在輸出看出,(HTML)文檔標題取<h1>標籤。因此,頂部(HTML)部分標題以<h2>開頭。 如果您想更改它,您需要自定義XSL文件。

+0

我意識到這一點,但我無法找到一個地方開始,因爲我不知道在哪個樣式表中生成了標題代碼...... – Slampisko