試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

DocBook XML文書からXHTMLへの変換をカスタマイズ(「警告」などの文字とアイコンについて)

「警告」「重要」といった「Admonition」ブロックの目印として、アイコンや文字(片方もしくは両方)を入れるかどうかを設定したり、アイコン画像を使用する場合の細かな設定をすることができる。

カスタマイズをする準備として、前回のXHTMLへの変換の記事にて想定したディレクトリ構成を準備する。
注意点として、XSLスタイルシートXSLTプロセッサにより別形式に変換されるときに(のみ)読み込まれて処理されるため、XSLスタイルシート内の設定を変更しても、それを反映するには、変換処理を再び実行させる必要がある。これは、Admonitionの項目に限らず、変換の流れがそうなっているため、どのような項目であっても同様。

[xml]-+-[custom-xsl]-+-<xhtml-common.xsl> (XHTML変換共通設定)
      |              +-<xhtml-single.xsl> (XHTML単独ファイル固有設定)
      |              +-<xhtml-multi.xsl>  (XHTML複数ファイル固有設定)
      |
      +-[doc]-[admontest]-<admontest.xml> (以下に載せたサンプル文書)
      |
      +-[css]-<docbook.css>               (XHTML文書が参照するカスタムCSS)
      |
      +-<xsl-stylesheets>                 (Docbook XSLのディレクトリへのリンク)

以下、サンプル文書。
ファイル名: admontest.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
          "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">

<?xml-stylesheet href="../../wysiwygdocbook/custom.css" type="text/css"?>
<article lang="ja">
 <articleinfo>
  <title>サンプル</title>

  <abstract>
   <para>Admonitionのサンプル</para>
  </abstract>
 </articleinfo>

 <sect1 id="admontest">
  <title>Admonitionのテスト</title>
  <para>普通の段落</para>
  <tip><para>ヒント(Tip)文</para></tip>
  <note><para>ノート(Note)文</para></note>
  <caution><para>注意書き</para></caution>
  <important><para>重要な注意文</para></important>
  <warning><para>警告文</para></warning>
 </sect1>

</article>

カスタムXSLの設定例。
ファイル名: xhtml-common.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
...
 <xsl:param name="admon.textlabel" select="1"/>
 <xsl:param name="admon.graphics" select="1"/>
 <xsl:param name="admon.graphics.path" select="'../../admon/'"/>
 <xsl:param name="admon.graphics.extension" select="'.gif'"/>
 <xsl:param name="admon.style"><xsl:text/></xsl:param>
 <!-- 下はデフォルト値
 <xsl:param name="admon.style">
  <xsl:text>margin-left: 0.5in; margin-right: 0.5in;</xsl:text>
 </xsl:param>
 -->
...

Admonitionに関連するXSLスタイルシートのカスタマイズ項目
項目
admon.graphicsアイコンを 0:表示しない(デフォルト) 1:表示する
admon.textlabel「警告」などの文字ラベルを 0:表示しない 1:表示する(デフォルト)
admon.graphics.pathアイコンを表示する場合に、その画像ファイルが含まれているディレクトリ([DocBook XSLのディレクトリ]/images/以下にあるので、DocBook文書のツリーにリンクを張るか、コピーをすると管理上便利)
admon.graphics.extensionアイコンを表示する場合の画像ファイルの拡張子(デフォルトは.png)
admon.styleAdmonitionブロックに対するstyle属性を記述するのだが、ここは空にして、外部CSSでclass指定したほうがXHTMLのサイズも小さくできるのでおすすめ

admon.styleの値を上記のように空にすると、style属性が出なくなるが、そこに書かれていたスタイル指定が無くなったことにより、横幅が変わってしまうため、カスタムCSS側でclassセレクタ(要素名の後ろに「.」とクラス名を書く)を用いて
ファイル名: docbook.css

div.tip, div.note, div.caution, div.important, div.warning
{
  margin-left: 0.5in;
  margin-right: 0.5in;
}

のように指定するとよい。

関連記事:

使用したバージョン: docbook-xsl-stylesheets 1.70.1