Index > DocbookのXMLから目次情報を抽出する toc.xsl の作成(改良版→番号の追加)
Wed, January 28, 2009

DocbookのXMLから目次情報を抽出する toc.xsl の作成(改良版→番号の追加)

前回 Docbook で記述されたXML文書から目次情報の抽出をしましたが、 章番号やセクション番号がない状態だったので、今回はそれを追加します。

基本方針

章タイトルは 1.hogehoge のようにし、
セクションタイトルは、1.1. hogehoge のように表現する。

toc.xslの作成

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:strip-space elements="*" />

<xsl:template match="*" />


<xsl:template match="book">
    <list>
    <xsl:apply-templates />
    </list>
</xsl:template>

<xsl:template match="chapter">

    <xsl:for-each select="title">
        <item>
        <xsl:number count="chapter" format="1." level="single" />
        <xsl:value-of select="." />
        </item>
    </xsl:for-each>

    <list>
    <xsl:apply-templates select="section" />
    </list>

</xsl:template>

<xsl:template match="chapter/section">
    <xsl:apply-templates />
</xsl:template>

<xsl:template match="chapter/section/title">
    <item>
    <xsl:number count="chapter" format="1." level="single" />
    <xsl:number count="section" format="1." level="single" />
    <xsl:value-of select="." />
    </item>
</xsl:template>


</xsl:stylesheet>

前回からの変更

章番号追加部分

章+セクション番号追加部分

とても簡単に実現できます。

saxon を使って BDFUserGuide.xml を変換

saxonの用意

toc.xsl スタイルシートを使って変換するには、XSLTが必要です。今回は、saxon9 を使います。 http://saxon.sourceforge.net/から、saxonb9-1-0-5j.zip をダウンロードして、saxon/ 以下に展開しておきます。

toc.xsl を使って、 DBFUserGuide.xml → toc.xml に変換。

$ java -jar saxon/saxon9.jar -s:BDFUserGuide.xml -xsl:toc.xsl -o:toc.xml

Makefile

コマンドラインでの入力を省略するための Makefile.

saxon=saxon/saxon9.jar

stylesheet=toc.xsl
in=DBFUserGuide.xml
out=toc.xml


$(out) : $(in) $(stylesheet) 
    @java -jar $(saxon) -novw -s:$< -xsl:$(stylesheet) -o:$@
    cat $@

clean :
    @$(RM) $(out)

処理結果 toc.xml

<?xml version="1.0" encoding="UTF-8"?>
<list>
   <item>1.Preface</item>
   <list>
      <item>1.1.About this Project</item>
      <item>1.2.License Information</item>
      <item>1.3.Author Information</item>
   </list>
   <item>2.Introduction</item>
   <list>
      <item>2.1.Why another framework for rendering docbook?</item>
      <item>2.2.What you need</item>
      <item>2.3.Caveat Emptor!</item>
   </list>
   <item>3.Using the Framework</item>
   <list>
      <item>3.1.How to set up your documentation files</item>
      <item>3.2.Customizing your documentation file layout</item>
      <item>3.3.Writing your documentation</item>
      <item>3.4.Notes</item>
   </list>
   <item>4.Developer information</item>
   <list>
      <item>4.1.ant files</item>
      <item>4.2.DocBook reference files</item>
      <item>4.3.XML Resolver</item>
      <item>4.4.Docbook Source files</item>
      <item>4.5.Stylesheets and Driver files</item>
      <item>4.6.StyleSheet customizations</item>
      <item>4.7.PDF StyleSheet information</item>
      <item>4.8.Titlepages</item>
   </list>
   <item>5.Acknowledgements</item>
   <list/>
</list>
 Twitter
follow me on Twitter
 Categories