2009年11月8日日曜日

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

ビルドする

『build.xml』ファイルを作成します。

build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="docbook" default="build-pdf">
  <property name="root.dir" location="."/>
  <property name="doc.dir" location="${root.dir}/doc"/>
  <property name="html.dir" location="${root.dir}/html"/>
  <property name="pdf.dir" location="${root.dir}/pdf"/>
  <property name="lib.dir" location="${root.dir}/lib"/>
  <property name="res.dir" location="${root.dir}/resources"/>
  <property name="style.dir" 
    location="${res.dir}/j-docbook-style"/>
  <property name="document" value="document"/>
  <property name="book.xml" location="${doc.dir}/book.xml"/>
  <property name="fop.xconf" location="${root.dir}/fop.xconf"/>
  <property 
    name="docbook.dir" 
    location="${res.dir}/docbook-xsl-1.75.2"/>
  <property 
    name="xhtml.stylesheet" 
    location="${res.dir}/j-docbook-xslt/xslt/org/jboss/xhtml.xsl"/>
  <property 
    name="pdf.stylesheet" 
    location="${res.dir}/j-docbook-xslt/xslt/org/jboss/pdf.xsl"/>
  <property 
    name="conf.key" 
    value="-Dorg.apache.xerces.xni.parser.XMLParserConfiguration"/>
  <property 
    name="conf.val" 
    value="org.apache.xerces.parsers.XIncludeParserConfiguration"/>
  <property 
    name="xinclude.parser.conf" 
    value="${conf.key}=${conf.val}"/>
  <property 
    name="builder.key" 
    value="-Djavax.xml.parsers.DocumentBuilderFactor"/>
  <property 
    name="builder.val" 
    value="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
  <property 
    name="document.builder.factory" 
    value="${builder.key}=${builder.val}"/>
  <property 
    name="parser.key" 
    value="-Djavax.xml.parsers.SAXParserFactory"/>
  <property 
    name="parser.val" 
    value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
  <property 
    name="sax.parser.factory" 
    value="${parser.key}=${parser.val}"/>
  <property 
    name="xerces.dir" 
    location="${lib.dir}/xerces-2_9_1"/>
  <property 
    name="saxon.dir" 
    location="${lib.dir}/saxon6-5-5"/>
  <property name="fop.dir" location="${lib.dir}/fop-0.95"/>
  <taskdef name="fop" 
    classname="org.apache.fop.tools.anttasks.Fop">
  <classpath>
    <fileset dir="${fop.dir}/lib">
      <include name="*.jar" />
    </fileset>
    <fileset dir="${fop.dir}/build">
      <include name="fop.jar" />
      <include name="fop-hyph.jar" />
    </fileset>
  </classpath>
  </taskdef>
  <path id="saxon.classpath">
    <fileset dir="${saxon.dir}" id="saxon.fileset">
      <include name="saxon.jar" />
      <include name="saxon-jdom.jar" />
      <include name="saxon-xml-apis.jar" />
    </fileset>
    <fileset dir="${docbook.dir}/extensions" 
      id="saxon.fileset.ext">
      <include name="saxon65.jar" />
    </fileset>
    <fileset dir="${xerces.dir}" id="xerces.fileset">
      <include name="xercesImpl.jar" />
    </fileset>
    <fileset dir="${lib.dir}" id="jboss.fileset">
      <include name="highlight-1.0.0.jar" />
      <include name="jhighlight-1.0.jar" />
    </fileset>
  </path>
  <target name="build-html">
    <delete dir="${html.dir}" />
    <mkdir dir="${html.dir}" />
    <java classname="com.icl.saxon.StyleSheet" 
      classpathref="saxon.classpath" fork="true">
      <jvmarg value="${xinclude.parser.conf}" />
      <jvmarg value="${document.builder.factory}" />
      <jvmarg value="${sax.parser.factory}" />
      <arg line=
        "-o ${html.dir}/${document}.html ${book.xml} ${xhtml.stylesheet} base.dir=${html.dir}/"/>
    </java>
    <copy todir="${html.dir}">
      <fileset dir="${style.dir}/css">
        <include name="css/*" />
      </fileset>
      <fileset dir="${style.dir}/images/">
        <include name="images/**/*" />
      </fileset>
    </copy>
  </target>
  <target name="build-pdf">
    <delete dir="${pdf.dir}" />
    <mkdir dir="${pdf.dir}" />
    <java classname="com.icl.saxon.StyleSheet" 
      classpathref="saxon.classpath" fork="true">
      <jvmarg value="${xinclude.parser.conf}" />
      <jvmarg value="${document.builder.factory}" />
      <jvmarg value="${sax.parser.factory}" />
      <arg line="-o ${pdf.dir}/${document}.fo ${book.xml} ${pdf.stylesheet}"/>
    </java>
    <fop format="application/pdf" outdir="${pdf.dir}" 
      userconfig="${fop.xconf}" messagelevel="debug">
      <fileset dir="${pdf.dir}">
        <include name="*.fo" />
      </fileset>
    </fop>
  </target>
</project>

コマンドフロンプトを開き作業フォルダーに移動します。
cd C:\mybook

ANTを実行してHTMLファイルを作成します。
ant build-html
ビルド後、htmlフォルダにhtmlファイルが出力されます。

ANTを実行してPDFファイルを作成します。
ant build-pdf
ビルド後、pdfフォルダにpdfファイルが出力されます。