<!-- Builds PDF file from XML DocBook input --> 
<project name="buildpdf" default="checkifuptodate">
  <!-- PARAMETERS
    item      - The identification name of the item.
    inputdir  - The directory where the item's source xml is located.
    outputdir - The directory where one desires the output html to go.
  -->
  <target name="buildpdf" if="requires.build">
    <echo>Building PDF output for ${item}</echo>
    <loadproperties srcFile="ant.properties"/>

    <available file="${inputdir}/files" type="dir" property="files.available"/>

    <!-- Make the output directory -->
    <mkdir dir="${outputdir}"/>

    <!-- Copy any necessary files -->
    <antcall target="copyfiles"/>

    <!-- Resolve any xincludes -->
    <exec executable="xmllint">
      <arg line="--xinclude" /> 
      <arg line="${inputdir}/${item}.xml" /> 
      <arg line="-o ${src}/${item}.xml" /> 
    </exec>

    <exec executable="java">
      <arg line="-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
      <arg line="-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
      <arg line="-Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl"/>
      <arg line="com.icl.saxon.StyleSheet"/>
      <arg line="-o ${src}/${item}.fo"/>
      <arg line="-x com.sun.resolver.tools.ResolvingXMLReader"/>
      <arg line="${src}/${item}.xml"/>
      <arg line="${fo.output.stylesheet}"/>
    </exec>

    <!-- Build the fo output -->
    <!-- NOTE THAT I PUT A % BEFORE STRINGPARAM IN THE COMMENT BELOW -->
    <!-- <exec executable="xsltproc">
        <arg line="-%-stringparam admon.graphics.path /bham/htdocs/supportweb/documentation/tutorials/docsystem/images/"/>
       <arg line="-%-stringparam callout.graphics.path /bham/htdocs/supportweb/documentation/tutorials/docsystem/images/callouts/"/>
      <arg line="-o ${src}/${item}.fo"/>
      <arg line="${fo.output.stylesheet}"/>
      <arg line="${src}/${item}.xml"/>
   </exec>-->

    <!-- Build the PDF from the fo -->
    <exec executable="fop">
      <arg line="${src}/${item}.fo"/>
      <!-- this will be variable -->
      <arg line="${outputdir}/${item}.pdf"/>
    </exec>

    <!-- cleanup -->
    <delete file="${src}/${item}.fo"/>
    <delete file="${src}/${item}.xml"/>
  </target>

  <target name="copyfiles" if="files.available" description="Copies needed files">
    <echo>Copying required files for ${item}</echo>
    <copy todir="${src}/files"><fileset dir="${inputdir}/files"/></copy>
    <copy todir="${outputdir}/files"><fileset dir="${inputdir}/files"/></copy>
  </target>

  <target name="checkifuptodate" description="Checks if this project is uptodate and source is available">
    <condition property="requires.build">
      <and>
        <available file="${inputdir}/${item}.xml"/>
        <or>
          <not><available file="${outputdir}/${item}.xml"/></not>
          <uptodate targetfile="${inputdir}/${item}.xml" srcfile="${outputdir}/${item}.xml"/>
        </or>
      </and>
    </condition>
    <antcall target="buildpdf"/>
  </target>
</project>

