build_dita2html5_template.xml 9.7 KB

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