build_preprocess2_template.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. This file is part of the DITA Open Toolkit project.
  4. Copyright 2016 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="ditaot-preprocess2">
  11. <target name="preprocess2"
  12. dita:extension="depends org.dita.dost.platform.InsertDependsAction"
  13. description="Preprocess"
  14. dita:depends="{depend.preprocess.pre},
  15. preprocess2.init,
  16. ditaval-merge,
  17. preprocess2.maps,
  18. preprocess2.topics,
  19. map-clean-map,
  20. clean-preprocess,
  21. copy-files2,
  22. {depend.preprocess.post}">
  23. <dirname property="_dita.map.output.dir" file="${dita.output.dir}/${user.input.file}" />
  24. <dirname property="_dita.map.temp.dir" file="${dita.temp.dir}/${user.input.file}" />
  25. <condition property="uplevels" value="">
  26. <not><isset property="uplevels"/></not>
  27. </condition>
  28. <property name="dita.map.output.dir" location="${_dita.map.output.dir}/${uplevels}"/>
  29. <!-- Deprecated since 2.4 -->
  30. <property name="user.input.file.listfile" value="usr.input.file.list"/>
  31. </target>
  32. <target name="preprocess2.maps"
  33. depends="map-reader,
  34. map-mapref,
  35. map-branch-filter,
  36. map-keyref,
  37. map-conrefpush,
  38. map-conref,
  39. map-profile"/>
  40. <target name="preprocess2.topics"
  41. depends="topic-reader,
  42. topic-branch-filter,
  43. topic-keyref,
  44. topic-copy-to,
  45. topic-conrefpush,
  46. topic-conref,
  47. topic-profile,
  48. topic-fragment,
  49. topic-chunk,
  50. topic-move-meta-entries,
  51. topic-maplink,
  52. topic-topicpull"/>
  53. <target name="preprocess2-topic"
  54. dita:extension="depends org.dita.dost.platform.InsertDependsAction"
  55. description="Preprocess topic"
  56. dita:depends="{depend.preprocess.pre},
  57. preprocess2.init,
  58. ditaval-merge,
  59. topic-reader,
  60. topic-conrefpush,
  61. topic-conref,
  62. topic-profile,
  63. topic-fragment,
  64. topic-move-meta-entries,
  65. topic-topicpull,
  66. clean-preprocess,
  67. copy-files2,
  68. {depend.preprocess.post}">
  69. <dirname property="_dita.map.output.dir" file="${dita.output.dir}/${user.input.file}" />
  70. <dirname property="_dita.map.temp.dir" file="${dita.temp.dir}/${user.input.file}" />
  71. <condition property="uplevels" value="">
  72. <not><isset property="uplevels"/></not>
  73. </condition>
  74. <property name="dita.map.output.dir" location="${_dita.map.output.dir}/${uplevels}"/>
  75. <!-- Deprecated since 2.4 -->
  76. <property name="user.input.file.listfile" value="usr.input.file.list"/>
  77. </target>
  78. <target name="preprocess2.init">
  79. <dita-ot-fail id="DOTA002F">
  80. <condition>
  81. <not><isset property="args.input"/></not>
  82. </condition>
  83. </dita-ot-fail>
  84. <basename property="dita.input.filename" file="${args.input}" />
  85. <pathconvert property="dita.map.filename.root">
  86. <path path="${dita.input.filename}"/>
  87. <chainedmapper>
  88. <mapper type="flatten"/>
  89. <mapper type="regexp" from="^(.+)(\..+?)$$" to="\1"/>
  90. </chainedmapper>
  91. </pathconvert>
  92. <property name="dita.topic.filename.root" value="${dita.map.filename.root}"/>
  93. <echo level="info">*****************************************************************</echo>
  94. <echo level="info">* input = ${args.input}</echo>
  95. <echo level="info">*****************************************************************</echo>
  96. <echoxml file="${dita.temp.dir}/.job.xml">
  97. <job>
  98. <property name="temp-file-name-scheme">
  99. <string>org.dita.dost.module.GenMapAndTopicListModule$HashTempFileScheme</string>
  100. </property>
  101. </job>
  102. </echoxml>
  103. <property name="map.filter-on-parse" value="false"/>
  104. <property name="topic.filter-on-parse" value="true"/>
  105. <condition property="preprocess.map-profile.skip">
  106. <istrue value="${map.filter-on-parse}"/>
  107. </condition>
  108. </target>
  109. <target name="map-reader"
  110. description="Generate lists, debug, and filter input map files">
  111. <pipeline message="Generate list." taskname="map-reader"
  112. inputmap="${args.input}">
  113. <module class="org.dita.dost.module.reader.MapReaderModule">
  114. <param name="inputdir" location="${args.input.dir}" if:set="args.input.dir"/>
  115. <param name="ditadir" location="${dita.dir}"/>
  116. <!--<param name="ditaval" location="${dita.input.valfile}" if:set="dita.input.valfile"/>-->
  117. <param name="validate" value="${validate}"/>
  118. <param name="generatecopyouter" value="${generate.copy.outer}"/>
  119. <param name="outercontrol" value="${outer.control}"/>
  120. <!--param name="onlytopicinmap" value="${onlytopic.in.map}"/-->
  121. <!--<param name="crawl" value="${link-crawl}"/>-->
  122. <param name="outputdir" location="${dita.output.dir}"/>
  123. <param name="transtype" value="${transtype}"/>
  124. <param name="gramcache" value="${args.grammar.cache}"/>
  125. <param name="setsystemid" value="${args.xml.systemid.set}"/>
  126. <param name="profiling.enable" value="${map.filter-on-parse}" unless:set="map.filter-on-parse"/>
  127. <param name="generate-debug-attributes" value="${generate-debug-attributes}" if:set="generate-debug-attributes"/>
  128. <param name="processing-mode" value="${processing-mode}" if:set="processing-mode"/>
  129. <dita:extension id="dita.preprocess.map-reader.param" behavior="org.dita.dost.platform.InsertAction"/>
  130. </module>
  131. </pipeline>
  132. <!-- TODO replace with direct resource collection availability test -->
  133. <job-helper file="fullditamap.list" property="fullditamaplist"/>
  134. <property name="fullditamapfile" value="fullditamap.list"/>
  135. <condition property="noMap">
  136. <length file="${dita.temp.dir}/${fullditamapfile}" length="0"/>
  137. </condition>
  138. <delete file="${dita.temp.dir}/${fullditamapfile}"/>
  139. </target>
  140. <target name="map-mapref"
  141. unless="preprocess.mapref.skip"
  142. description="Resolve mapref in ditamap">
  143. <condition property="dita.preprocess.reloadstylesheet.mapref" value="${dita.preprocess.reloadstylesheet}">
  144. <not><isset property="dita.preprocess.reloadstylesheet.mapref"/></not>
  145. </condition>
  146. <dirname property="mapref.workdir" file="${dita.temp.dir}/${user.input.file}" />
  147. <pipeline message="Resolve mapref in ditamap" taskname="mapref">
  148. <module class="org.dita.dost.module.MaprefModule">
  149. <param name="style" location="${dita.plugin.org.dita.base.dir}/xsl/preprocess/mapref.xsl"/>
  150. <ditafileset format="ditamap"/>
  151. <dita:extension id="dita.preprocess.mapref.param" behavior="org.dita.dost.platform.InsertAction"/>
  152. </module>
  153. </pipeline>
  154. </target>
  155. <target name="map-branch-filter"
  156. unless="preprocess.branch-filter.skip"
  157. description="Resolve input map files branch filtering">
  158. <pipeline taskname="branch-filter" message="Filter branches">
  159. <module class="org.dita.dost.module.filter.MapBranchFilterModule"/>
  160. </pipeline>
  161. </target>
  162. <target name="map-keyref"
  163. unless="preprocess.keyref.skip"
  164. description="Resolve input map files keyref">
  165. <pipeline message="Resolve keyref." taskname="keyref">
  166. <module class="org.dita.dost.module.KeyrefModule">
  167. <ditafileset format="ditamap"/>
  168. <param name="transtype" value="${transtype}"/>
  169. </module>
  170. </pipeline>
  171. <pipeline message="Resolve mapref in ditamap" taskname="mapref">
  172. <module class="org.dita.dost.module.MaprefModule">
  173. <param name="style" location="${dita.plugin.org.dita.base.dir}/xsl/preprocess/mapref.xsl"/>
  174. <ditafileset format="ditamap"/>
  175. <dita:extension id="dita.preprocess.mapref.param" behavior="org.dita.dost.platform.InsertAction"/>
  176. </module>
  177. </pipeline>
  178. </target>
  179. <target name="map-conrefpush"
  180. unless="preprocess.conrefpush.skip"
  181. description="Resolve input map files conref push">
  182. <pipeline message="Resolve conref push." taskname="conref-push">
  183. <module class="org.dita.dost.module.ConrefPushModule">
  184. <ditafileset format="ditamap"/>
  185. </module>
  186. </pipeline>
  187. </target>
  188. <target name="map-conref"
  189. unless="preprocess.conref.skip"
  190. description="Resolve conref in input map files">
  191. <condition property="dita.preprocess.reloadstylesheet.conref" value="${dita.preprocess.reloadstylesheet}">
  192. <not><isset property="dita.preprocess.reloadstylesheet.conref"/></not>
  193. </condition>
  194. <makeurl property="exportfile.url" file="${dita.temp.dir}/export.xml" validate="false"/>
  195. <pipeline message="Resolve conref in input files" taskname="conref">
  196. <xslt basedir="${dita.temp.dir}"
  197. reloadstylesheet="${dita.preprocess.reloadstylesheet.conref}"
  198. style="${dita.plugin.org.dita.base.dir}/xsl/preprocess/map-conref.xsl" filenameparameter="file-being-processed">
  199. <ditafileset format="ditamap" conref="true"/>
  200. <param name="EXPORTFILE" expression="${exportfile.url}"/>
  201. <param name="TRANSTYPE" expression="${transtype}"/>
  202. <dita:extension id="dita.preprocess.conref.param" behavior="org.dita.dost.platform.InsertAction"/>
  203. <xmlcatalog refid="dita.catalog"/>
  204. </xslt>
  205. </pipeline>
  206. </target>
  207. <target name="map-profile" depends="map-profile-check"
  208. unless="preprocess.map-profile.skip"
  209. description="Profile input map files">
  210. <pipeline message="Profile filtering." taskname="profile">
  211. <module class="org.dita.dost.module.FilterModule">
  212. <ditafileset format="ditamap"/>
  213. <param name="ditaval" location="${dita.input.valfile}" if:set="dita.input.valfile"/>
  214. <param name="transtype" value="${transtype}"/>
  215. </module>
  216. </pipeline>
  217. </target>
  218. <target name="map-profile-check">
  219. <condition property="preprocess.map-profile.skip">
  220. <istrue value="${map.filter-on-parse}"/>
  221. </condition>
  222. </target>
  223. <target name="topic-reader"
  224. description="Generate file list">
  225. <pipeline message="Generate list." taskname="topic-reader"
  226. inputmap="${args.input}">
  227. <module class="org.dita.dost.module.reader.TopicReaderModule">
  228. <param name="inputdir" location="${args.input.dir}" if:set="args.input.dir"/>
  229. <param name="ditadir" location="${dita.dir}"/>
  230. <!--<param name="ditaval" location="${dita.input.valfile}" if:set="dita.input.valfile"/>-->
  231. <param name="validate" value="${validate}"/>
  232. <param name="generatecopyouter" value="${generate.copy.outer}"/>
  233. <param name="outercontrol" value="${outer.control}"/>
  234. <param name="onlytopicinmap" value="${onlytopic.in.map}"/>
  235. <param name="crawl" value="${link-crawl}" if:set="link-crawl"/>
  236. <param name="outputdir" location="${dita.output.dir}"/>
  237. <param name="transtype" value="${transtype}"/>
  238. <param name="gramcache" value="${args.grammar.cache}"/>
  239. <param name="setsystemid" value="${args.xml.systemid.set}"/>
  240. <param name="profiling.enable" value="${topic.filter-on-parse}" unless:set="topic.filter-on-parse"/>
  241. <param name="generate-debug-attributes" value="${generate-debug-attributes}" if:set="generate-debug-attributes"/>
  242. <param name="processing-mode" value="${processing-mode}" if:set="processing-mode"/>
  243. <!-- Not needed for topics -->
  244. <!--param name="force-unique" value="${force-unique}" if:set="force-unique"/-->
  245. <dita:extension id="dita.preprocess.topic-reader.param" behavior="org.dita.dost.platform.InsertAction"/>
  246. </module>
  247. </pipeline>
  248. </target>
  249. <target name="topic-branch-filter">
  250. <pipeline taskname="branch-filter" message="Filter branches">
  251. <module class="org.dita.dost.module.filter.TopicBranchFilterModule"/>
  252. </pipeline>
  253. </target>
  254. <target name="topic-keyref"
  255. unless="preprocess.keyref.skip"
  256. description="Resolve keyref">
  257. <pipeline message="Resolve keyref." taskname="keyref">
  258. <module class="org.dita.dost.module.KeyrefModule">
  259. <ditafileset format="dita"/>
  260. <param name="transtype" value="${transtype}"/>
  261. </module>
  262. </pipeline>
  263. </target>
  264. <target name="topic-copy-to">
  265. <pipeline message="Resolve copy-to." taskname="copy-to">
  266. <module class="org.dita.dost.module.CopyToModule">
  267. <param name="force-unique" value="${force-unique}" if:set="force-unique"/>
  268. </module>
  269. </pipeline>
  270. </target>
  271. <target name="topic-conrefpush"
  272. unless="preprocess.conrefpush.skip"
  273. description="Resolve conref push">
  274. <pipeline message="Resolve conref push." taskname="conref-push">
  275. <module class="org.dita.dost.module.ConrefPushModule">
  276. <ditafileset format="dita"/>
  277. <ditafileset format="ditamap"/>
  278. </module>
  279. </pipeline>
  280. </target>
  281. <target name="topic-conref"
  282. unless="preprocess.conref.skip"
  283. description="Resolve conref in input files">
  284. <condition property="dita.preprocess.reloadstylesheet.conref" value="${dita.preprocess.reloadstylesheet}">
  285. <not><isset property="dita.preprocess.reloadstylesheet.conref"/></not>
  286. </condition>
  287. <makeurl property="exportfile.url" file="${dita.temp.dir}/export.xml" validate="false"/>
  288. <pipeline message="Resolve conref in input files" taskname="conref">
  289. <xslt basedir="${dita.temp.dir}"
  290. reloadstylesheet="${dita.preprocess.reloadstylesheet.conref}"
  291. style="${dita.plugin.org.dita.base.dir}/xsl/preprocess/conref.xsl" filenameparameter="file-being-processed">
  292. <ditafileset conref="true" format="dita"/>
  293. <ditafileset conref="true" format="ditamap"/>
  294. <param name="EXPORTFILE" expression="${exportfile.url}"/>
  295. <param name="TRANSTYPE" expression="${transtype}"/>
  296. <dita:extension id="dita.preprocess.conref.param" behavior="org.dita.dost.platform.InsertAction"/>
  297. <xmlcatalog refid="dita.catalog"/>
  298. </xslt>
  299. </pipeline>
  300. </target>
  301. <target name="topic-profile" depends="topic-profile-check"
  302. unless="preprocess.topic-profile.skip"
  303. description="Profile input files">
  304. <pipeline message="Profile filtering." taskname="profile">
  305. <module class="org.dita.dost.module.FilterModule">
  306. <ditafileset format="dita"/>
  307. <param name="ditaval" location="${dita.input.valfile}" if:set="dita.input.valfile"/>
  308. <param name="transtype" value="${transtype}"/>
  309. </module>
  310. </pipeline>
  311. </target>
  312. <target name="topic-profile-check">
  313. <condition property="preprocess.topic-profile.skip">
  314. <istrue value="${topic.filter-on-parse}"/>
  315. </condition>
  316. </target>
  317. <target name="topic-fragment"
  318. description="Normalize same topic fragment identifiers and table column names, and resolve coderef">
  319. <pipeline message="Resolve topic fragment." taskname="topic-fragment">
  320. <sax>
  321. <ditafileset format="dita"/>
  322. <filter class="org.dita.dost.writer.TopicFragmentFilter">
  323. <param name="attributes" value="href"/>
  324. </filter>
  325. <filter class="org.dita.dost.writer.NormalizeTableFilter">
  326. <param name="processing-mode" value="${processing-mode}" if:set="processing-mode"/>
  327. </filter>
  328. <filter class="org.dita.dost.writer.CoderefResolver" unless:set="preprocess.coderef.skip"/>
  329. <filter class="org.dita.dost.writer.NormalizeCodeblock" unless:set="preprocess.normalize-codeblock.skip"/>
  330. </sax>
  331. </pipeline>
  332. </target>
  333. <target name="topic-chunk"
  334. unless="preprocess.chunk.skip"
  335. description="Process chunks">
  336. <pipeline message="Process chunks." taskname="chunk">
  337. <module class="org.dita.dost.module.ChunkModule">
  338. <param name="transtype" value="${transtype}"/>
  339. <param name="root-chunk-override" value="${root-chunk-override}" if:set="root-chunk-override"/>
  340. </module>
  341. </pipeline>
  342. </target>
  343. <target name="topic-move-meta-entries"
  344. unless="preprocess.move-meta-entries.skip"
  345. description="Move metadata entries">
  346. <pipeline message="Move metadata entries." taskname="move-meta">
  347. <module class="org.dita.dost.module.MoveMetaModule">
  348. <param name="style" location="${dita.plugin.org.dita.base.dir}/xsl/preprocess/mappull.xsl"/>
  349. <param name="conserve-memory" expression="${conserve-memory}" if:set="conserve-memory"/>
  350. <dita:extension id="dita.preprocess.mappull.param" behavior="org.dita.dost.platform.InsertAction"/>
  351. </module>
  352. </pipeline>
  353. </target>
  354. <target name="topic-maplink"
  355. unless="preprocess.maplink.skip"
  356. description="Find and generate related link information">
  357. <condition property="dita.preprocess.reloadstylesheet.maplink" value="${dita.preprocess.reloadstylesheet}">
  358. <not><isset property="dita.preprocess.reloadstylesheet.maplink"/></not>
  359. </condition>
  360. <pipeline message="Move related links" taskname="maplink">
  361. <module class="org.dita.dost.module.MoveLinksModule">
  362. <param name="style" location="${dita.plugin.org.dita.base.dir}/xsl/preprocess/maplink.xsl"/>
  363. <param name="include.rellinks" expression="${include.rellinks}" if:set="include.rellinks"/>
  364. <!--dita:extension id="dita.preprocess.maplink.param" behavior="org.dita.dost.platform.InsertAction"/-->
  365. </module>
  366. </pipeline>
  367. </target>
  368. <target name="topic-topicpull"
  369. unless="preprocess.topicpull.skip"
  370. description="Pull metadata for link and xref element">
  371. <condition property="dita.preprocess.reloadstylesheet.topicpull" value="${dita.preprocess.reloadstylesheet}">
  372. <not><isset property="dita.preprocess.reloadstylesheet.topicpull"/></not>
  373. </condition>
  374. <pipeline message="Pull metadata for link and xref element" taskname="topicpull">
  375. <xslt basedir="${dita.temp.dir}"
  376. reloadstylesheet="${dita.preprocess.reloadstylesheet.topicpull}"
  377. style="${dita.plugin.org.dita.base.dir}/xsl/preprocess/topicpull.xsl">
  378. <ditafileset format="dita" processingRole="normal"/>
  379. <param name="TABLELINK" expression="${args.tablelink.style}" if:set="args.tablelink.style" />
  380. <param name="FIGURELINK" expression="${args.figurelink.style}" if:set="args.figurelink.style" />
  381. <param name="ONLYTOPICINMAP" expression="${onlytopic.in.map}" if:set="onlytopic.in.map"/>
  382. <param name="defaultLanguage" expression="${default.language}"/>
  383. <dita:extension id="dita.preprocess.topicpull.param" behavior="org.dita.dost.platform.InsertAction"/>
  384. <xmlcatalog refid="dita.catalog"/>
  385. </xslt>
  386. </pipeline>
  387. </target>
  388. <target name="map-clean-map"
  389. unless="preprocess.clean-map-check.skip"
  390. description="Clean ditamap">
  391. <condition property="dita.preprocess.reloadstylesheet.clean-map" value="${dita.preprocess.reloadstylesheet}">
  392. <not><isset property="dita.preprocess.reloadstylesheet.clean-map"/></not>
  393. </condition>
  394. <pipeline message="Clean ditamap" taskname="clean-map">
  395. <xslt basedir="${dita.temp.dir}"
  396. reloadstylesheet="${dita.preprocess.reloadstylesheet.clean-map}"
  397. style="${dita.plugin.org.dita.base.dir}/xsl/preprocess/clean-map.xsl">
  398. <ditafileset format="ditamap"/>
  399. <xmlcatalog refid="dita.catalog"/>
  400. </xslt>
  401. </pipeline>
  402. </target>
  403. <target name="copy-files2" description="Copy files to the output directory"
  404. depends="copy-image2,copy-html,copy-flag"
  405. unless="preprocess.copy-files.skip" />
  406. <target name="copy-image2"
  407. unless="preprocess.copy-image.skip"
  408. description="Copy image files">
  409. <copy todir="${dita.output.dir}" failonerror="false">
  410. <ditafileset format="image" />
  411. </copy>
  412. </target>
  413. </project>