build_dita2html5.xml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?xml version="1.0" encoding="UTF-8"?><!--
  2. This file is part of the DITA Open Toolkit project.
  3. Copyright 2015 Jarno Elovirta
  4. See the accompanying LICENSE file for applicable license.
  5. --><project xmlns:dita="http://dita-ot.sourceforge.net" xmlns:if="ant:if" xmlns:unless="ant:unless" name="dita2html5">
  6. <target name="dita2html5" depends="html5.init, build-init, preprocess, html5.topic, html5.map, html5.css"/>
  7. <target name="html5.init">
  8. <condition property="args.xsl" value="${dita.plugin.org.dita.html5.dir}/xsl/dita2html5.xsl">
  9. <not>
  10. <isset property="args.xsl"/>
  11. </not>
  12. </condition>
  13. <condition property="html5.nav-toc" value="${nav-toc}" else="none">
  14. <isset property="nav-toc"/>
  15. </condition>
  16. <dita-ot-fail id="DOTA007E">
  17. <condition>
  18. <and>
  19. <isset property="args.ftr"/>
  20. <not>
  21. <available file="${args.ftr}" type="file"/>
  22. </not>
  23. </and>
  24. </condition>
  25. <param name="1" value="${args.ftr}"/>
  26. </dita-ot-fail>
  27. <dita-ot-fail id="DOTA008E">
  28. <condition>
  29. <and>
  30. <isset property="args.hdr"/>
  31. <not>
  32. <available file="${args.hdr}" type="file"/>
  33. </not>
  34. </and>
  35. </condition>
  36. <param name="1" value="${args.hdr}"/>
  37. </dita-ot-fail>
  38. <dita-ot-fail id="DOTA009E">
  39. <condition>
  40. <and>
  41. <isset property="args.hdf"/>
  42. <not>
  43. <available file="${args.hdf}" type="file"/>
  44. </not>
  45. </and>
  46. </condition>
  47. <param name="1" value="${args.hdf}"/>
  48. </dita-ot-fail>
  49. <!-- begin to check and init css relevant properties -->
  50. <condition property="user.csspath.url">
  51. <or>
  52. <contains string="${args.csspath}" substring="http://"/>
  53. <contains string="${args.csspath}" substring="https://"/>
  54. </or>
  55. </condition>
  56. <condition property="user.csspath" value="">
  57. <or>
  58. <not>
  59. <isset property="args.csspath"/>
  60. </not>
  61. <isabsolute path="${args.csspath}"/>
  62. </or>
  63. </condition>
  64. <property name="user.csspath" value="${args.csspath}/"/>
  65. <condition property="user.css.real" value="${args.cssroot}${file.separator}${args.css}">
  66. <isset property="args.cssroot"/>
  67. </condition>
  68. <property name="user.css.real" value="${args.css}"/>
  69. <local name="user.css.basename"/>
  70. <basename property="user.css.basename" file="${args.css}"/>
  71. <condition property="args.css.file" value="${user.css.basename}">
  72. <or>
  73. <available file="${user.css.real}" type="file"/>
  74. <isset property="user.csspath.url"/>
  75. </or>
  76. </condition>
  77. <!-- end to check and init css relevant parameters -->
  78. <condition property="out.ext" value=".html">
  79. <not>
  80. <isset property="args.outext"/>
  81. </not>
  82. </condition>
  83. <!-- Set to "true" if you get out-of-memory errors during preprocess
  84. while processing very large (thousands of files) document sets. -->
  85. <condition property="dita.html5.reloadstylesheet" value="false">
  86. <not>
  87. <isset property="dita.html5.reloadstylesheet"/>
  88. </not>
  89. </condition>
  90. </target>
  91. <target name="html5.topic" depends="html5.topic.init, html5.image-metadata, html5.topics.common, html5.topics.common.inner"/>
  92. <target name="html5.topic.init" unless="noMap">
  93. <loadfile property="html5.map" srcfile="${dita.temp.dir}/${user.input.file.listfile}">
  94. <filterchain>
  95. <headfilter lines="1"/>
  96. </filterchain>
  97. </loadfile>
  98. <makeurl property="html5.map.url" file="${dita.temp.dir}/${html5.map}"/>
  99. <makeurl file="${dita.input.valfile}" property="dita.input.valfile.url" validate="no"/>
  100. </target>
  101. <target name="html5.image-metadata" unless="html5.image-metadata.skip" description="Read image metadata">
  102. <pipeline message="Read image metadata." taskname="image-metadata">
  103. <module class="org.dita.dost.module.ImageMetadataModule">
  104. <param name="outputdir" location="${dita.output.dir}"/>
  105. </module>
  106. </pipeline>
  107. </target>
  108. <target name="html5.topics.common" unless="noTopic" if="old.transform">
  109. <html5.topics>
  110. <param name="input.map.url" expression="${html5.map.url}" if:set="html5.map.url"/>
  111. <param name="nav-toc" expression="${html5.nav-toc}" if:set="html5.nav-toc"/>
  112. <mapper classname="org.dita.dost.ant.types.JobMapper" to="${out.ext}"/>
  113. </html5.topics>
  114. </target>
  115. <target name="html5.topics.common.inner" unless="noTopic" if="inner.transform">
  116. <html5.topics>
  117. <param name="input.map.url" expression="${html5.map.url}" if:set="html5.map.url"/>
  118. <param name="nav-toc" expression="${html5.nav-toc}" if:set="html5.nav-toc"/>
  119. <mapper classname="org.dita.dost.ant.types.JobMapper" to="${out.ext}"/>
  120. </html5.topics>
  121. </target>
  122. <target name="html5.map" depends="html5.map.init, html5.map.toc"/>
  123. <target name="html5.map.init" unless="noMap">
  124. <condition property="args.html5.toc.xsl" value="${dita.plugin.org.dita.html5.dir}/xsl/map2html5-cover.xsl">
  125. <not>
  126. <isset property="args.html5.toc.xsl"/>
  127. </not>
  128. </condition>
  129. <condition property="args.html5.toc" value="index">
  130. <not>
  131. <isset property="args.html5.toc"/>
  132. </not>
  133. </condition>
  134. </target>
  135. <target name="html5.map.toc" unless="noMap" description="Build HTML5 TOC file">
  136. <html5.map>
  137. </html5.map>
  138. </target>
  139. <macrodef name="html5.topics">
  140. <element name="params" optional="true" implicit="true"/>
  141. <sequential>
  142. <pipeline message="Convert DITA topic to HTML5" taskname="xslt">
  143. <xslt destdir="${dita.output.dir}" reloadstylesheet="${dita.html5.reloadstylesheet}" extension="${out.ext}" style="${args.xsl}" filenameparameter="FILENAME" filedirparameter="FILEDIR">
  144. <ditafileset format="dita" processingRole="normal"/>
  145. <param name="FILTERFILE" expression="${dita.input.valfile.url}" if:set="dita.input.valfile"/>
  146. <param name="CSS" expression="${args.css.file}" if:set="args.css.file"/>
  147. <param name="CSSPATH" expression="${user.csspath}" if:set="user.csspath"/>
  148. <param name="HDF" expression="${args.hdf}" if:set="args.hdf"/>
  149. <param name="HDR" expression="${args.hdr}" if:set="args.hdr"/>
  150. <param name="FTR" expression="${args.ftr}" if:set="args.ftr"/>
  151. <param name="DRAFT" expression="${args.draft}" if:set="args.draft"/>
  152. <param name="ARTLBL" expression="${args.artlbl}" if:set="args.artlbl"/>
  153. <param name="GENERATE-TASK-LABELS" expression="${args.gen.task.lbl}" if:set="args.gen.task.lbl"/>
  154. <param name="PRESERVE-DITA-CLASS" expression="${args.html5.classattr}" if:set="args.html5.classattr"/>
  155. <param name="NOPARENTLINK" expression="${args.hide.parent.link}" if:set="args.hide.parent.link"/>
  156. <param name="include.rellinks" expression="${include.rellinks}"/>
  157. <param name="INDEXSHOW" expression="${args.indexshow}" if:set="args.indexshow"/>
  158. <param name="genDefMeta" expression="${args.gen.default.meta}" if:set="args.gen.default.meta"/>
  159. <param name="OUTEXT" expression="${out.ext}" if:set="out.ext"/>
  160. <param name="BASEDIR" expression="${dita.dir}"/>
  161. <param name="OUTPUTDIR" expression="${dita.output.dir}"/>
  162. <param name="defaultLanguage" expression="${default.language}"/>
  163. <params/>
  164. <xmlcatalog refid="dita.catalog"/>
  165. </xslt>
  166. </pipeline>
  167. </sequential>
  168. </macrodef>
  169. <macrodef name="html5.map">
  170. <element name="params" optional="true" implicit="true"/>
  171. <sequential>
  172. <local name="html5.toc.output.dir"/>
  173. <condition property="html5.toc.output.dir" value="${dita.output.dir}" else="${_dita.map.output.dir}">
  174. <isset property="inner.transform"/>
  175. </condition>
  176. <pipeline message="Convert DITA map to HTML5" taskname="xslt">
  177. <xslt destdir="${html5.toc.output.dir}" style="${args.html5.toc.xsl}">
  178. <ditafileset input="true"/>
  179. <param name="FILTERFILE" expression="${dita.input.valfile.url}" if:set="dita.input.valfile"/>
  180. <param name="OUTEXT" expression="${out.ext}" if:set="out.ext"/>
  181. <param name="contenttarget" expression="${args.html5.contenttarget}" if:set="args.html5.contenttarget"/>
  182. <param name="CSS" expression="${args.css.file}" if:set="args.css.file"/>
  183. <param name="CSSPATH" expression="${user.csspath}" if:set="user.csspath"/>
  184. <param name="OUTPUTCLASS" expression="${args.html5.toc.class}" if:set="args.html5.toc.class"/>
  185. <params/>
  186. <mapper type="merge" to="${args.html5.toc}${out.ext}"/>
  187. <xmlcatalog refid="dita.catalog"/>
  188. </xslt>
  189. </pipeline>
  190. </sequential>
  191. </macrodef>
  192. <target name="html5.css" unless="user.csspath.url" description="Copy CSS files">
  193. <condition property="user.copycss.yes">
  194. <and>
  195. <equals arg1="${args.copycss}" arg2="yes"/>
  196. <available file="${user.css.real}" type="file"/>
  197. </and>
  198. </condition>
  199. <property name="user.csspath.real" location="${dita.output.dir}/${user.csspath}"/>
  200. <mkdir dir="${user.csspath.real}"/>
  201. <!-- Always copy system default css files -->
  202. <copy todir="${user.csspath.real}">
  203. <fileset dir="${dita.plugin.org.dita.html5.dir}/css" includes="*.css"/>
  204. </copy>
  205. <!-- Copy user specify css file when required -->
  206. <antcall target="html5.copy-css-user"/>
  207. </target>
  208. <target name="html5.copy-css-user" if="user.copycss.yes">
  209. <copy file="${user.css.real}" todir="${user.csspath.real}"/>
  210. </target>
  211. </project>