2009年11月8日日曜日

JBossのテンプレートでDocBook - (3/8) -

ソースドキュメントを作成する

book.xml, chapter.xml, HelloWorld.java をファイルを作成します。

ファイルの文字コードはUTF-8(BOMなし)にします。

book.xml
<?xml version="1.0" encoding="UTF-8"?>
<book
  xmlns="http://docbook.org/ns/docbook"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xml:id="mybook">
  <title>Myブック</title>
  <chapter xml:id="mybook.chapter-1">
    <title>メインのファイル</title>
    <section>
      <title>テーブルを表示</title>
      <table>
        <title>成果物とPackaging</title>
        <tgroup cols="4">
          <colspec colnum="1" colwidth="100" />
          <colspec colnum="2" colwidth="200" />
          <colspec colnum="3" colwidth="50" colname="jar" 
            align="center"/>
          <colspec colnum="4" colwidth="50" colname="war" 
            align="center"/>
          <thead valign="top">
            <row>
              <entry morerows='1'>Phase</entry>
              <entry morerows='1'>Plugin:Goal</entry>
              <entry namest="jar" nameend="war">
                packaging
              </entry>
            </row>
            <row>
              <entry>jar</entry>
              <entry>war</entry>
            </row>
          </thead>
          <tbody valign="top">
            <row>
              <entry>compile</entry>
              <entry>compiler:compile</entry>
              <entry>○</entry>
              <entry>○</entry>
            </row>
            <row>
              <entry morerows='1'>package</entry>
              <entry>jar:jar</entry>
              <entry>○</entry>
              <entry>―</entry>
            </row>
            <row>
              <entry>war:war</entry>
              <entry>―</entry>
              <entry>○</entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>
  </chapter>
  <xi:include href="chapter.xml" parse="xml"/>
</book>

chapter.xml
<?xml version="1.0" encoding="UTF-8"?>
<chapter
  xmlns="http://docbook.org/ns/docbook"
  xmlns:xi="http://www.w3.org/2001/XInclude"
  xml:id="mybook.chapter-2">
  <title>インポートされたファイル</title>
  <section>
    <title>DocBookで遊ぼう</title>
    <caution>
      <title>注意書!</title>
      <para>ペンキ塗りたて</para>
    </caution>
    <example>
      <title>HelloWorld.java</title>
      <programlisting role="java"><xi:include 
        href="inc/HelloWorld.java" parse="text" 
        encoding="UTF-8" /></programlisting>
        <screenco>
          <areaspec />
            <screen>javac HelloWorld.java<co 
              xml:id="mybook.chapter-2.javac"/></screen>
            <calloutlist>
              <callout arearefs="mybook.chapter-2.javac">
                <para>コンパイルをします。</para>
              </callout>
            </calloutlist>
        </screenco>
    </example>
    <figure>
      <title>my-image.png表示</title>
      <imageobject>
        <imagedata format="PNG" 
          fileref="images/my-image.png" />
      </imageobject>
    </figure>
  </section>
</chapter>

HelloWorld.java
public class HelloWorld
{
  public static void main(String[] args)
  {
    System.out.println("HelloWorld");
  }
}
textdataタグについて
DocBookのtextdataタグを使っても外部ファイルを取込むことができるが
相対パスでファイルを指定した場合Saxonではうまく読込めない。
(相対パスから絶対パスの組立てでファイルパスがずれてしまう)
Xalanでは問題なく処理できる。
外部ファイルの取込みは<xi:include>タグを使う方が無難なようだ。
またインクルードするファイルは文字コードをUTF-8(BOMなし)で改行コードをLFとしておく方がよい。