sections2blocks.xsl 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?xml version="1.0"?>
  2. <axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbk="http://docbook.org/ns/docbook" xmlns:rnd="http://docbook.org/ns/docbook/roundtrip" version="1.0">
  3. <!--====================================-->
  4. <!--= =-->
  5. <!--= DO NOT EDIT THIS STYLESHEET =-->
  6. <!--= =-->
  7. <!--= This stylesheet is generated =-->
  8. <!--= by makeSubsections.xsl and a =-->
  9. <!--= mapping specification. =-->
  10. <!--= =-->
  11. <!--= Revision history: =-->
  12. <!--= 1.1 2007-01-10 SRB =-->
  13. <!--= Output DocBook 5.0. =-->
  14. <!--= 1.0 2005-11-08 SRB =-->
  15. <!--= Initial version. =-->
  16. <!--= =-->
  17. <!--= $Id: sections2blocks.xsl 8107 2008-08-17 22:39:58Z balls $ =-->
  18. <!--= =-->
  19. <!--====================================-->
  20. <axsl:output indent="yes"/>
  21. <axsl:strip-space elements="*"/>
  22. <axsl:preserve-space elements="dbk:para dbk:emphasis"/>
  23. <axsl:template match="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5">
  24. <axsl:variable name="subsections" select="dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]"/>
  25. <axsl:copy>
  26. <axsl:apply-templates select="@*"/>
  27. <axsl:choose>
  28. <axsl:when test="$subsections">
  29. <axsl:apply-templates select="$subsections[1]/preceding-sibling::node()"/>
  30. <axsl:apply-templates select="$subsections[1]" mode="subsections">
  31. <axsl:with-param name="subsections" select="$subsections[position() != 1]"/>
  32. </axsl:apply-templates>
  33. </axsl:when>
  34. <axsl:when test="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5">
  35. <axsl:apply-templates select="*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5][1]/preceding-sibling::node()"/>
  36. <axsl:apply-templates select="dbk:appendix |&#10; dbk:article |&#10; dbk:book |&#10; dbk:chapter |&#10; dbk:part |&#10; dbk:preface |&#10; dbk:section |&#10; dbk:sect1 |&#10; dbk:sect2 |&#10; dbk:sect3 |&#10; dbk:sect4 |&#10; dbk:sect5"/>
  37. </axsl:when>
  38. <axsl:otherwise>
  39. <axsl:apply-templates/>
  40. </axsl:otherwise>
  41. </axsl:choose>
  42. </axsl:copy>
  43. <axsl:choose>
  44. <axsl:when test="following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5] | following-sibling::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]">
  45. <axsl:variable name="nextComponent" select="following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5|self::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]][1]"/>
  46. <axsl:apply-templates select="following-sibling::*[generate-id(following-sibling::*[self::dbk:appendix |&#10; self::dbk:article |&#10; self::dbk:book |&#10; self::dbk:chapter |&#10; self::dbk:part |&#10; self::dbk:preface |&#10; self::dbk:section |&#10; self::dbk:sect1 |&#10; self::dbk:sect2 |&#10; self::dbk:sect3 |&#10; self::dbk:sect4 |&#10; self::dbk:sect5|self::dbk:para[@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot; or @rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot; or @rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;]][1]) = generate-id($nextComponent)]"/>
  47. </axsl:when>
  48. <axsl:otherwise>
  49. <axsl:apply-templates select="following-sibling::*"/>
  50. </axsl:otherwise>
  51. </axsl:choose>
  52. </axsl:template>
  53. <axsl:template match="dbk:para" mode="subsections">
  54. <axsl:param name="subsections" select="/.."/>
  55. <axsl:choose>
  56. <axsl:when test="@rnd:style = &quot;bibliography&quot; or @rnd:style = &quot;bibliography-title&quot;">
  57. <bibliography xmlns="http://docbook.org/ns/docbook">
  58. <axsl:call-template name="copy"/>
  59. <axsl:variable name="bibliodivs" select="following-sibling::dbk:para[@rnd:style = &quot;bibliodiv&quot; or @rnd:style = &quot;bibliodiv-title&quot;]"/>
  60. <axsl:choose>
  61. <axsl:when test="$bibliodivs">
  62. <axsl:apply-templates select="following-sibling::*[1]" mode="bibliodivs">
  63. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  64. <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
  65. </axsl:apply-templates>
  66. </axsl:when>
  67. <axsl:otherwise>
  68. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  69. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  70. </axsl:apply-templates>
  71. </axsl:otherwise>
  72. </axsl:choose>
  73. </bibliography>
  74. </axsl:when>
  75. <axsl:when test="@rnd:style = &quot;glossary&quot; or @rnd:style = &quot;glossary-title&quot;">
  76. <glossary xmlns="http://docbook.org/ns/docbook">
  77. <axsl:call-template name="copy"/>
  78. <axsl:variable name="glossdivs" select="following-sibling::dbk:para[@rnd:style = &quot;glossdiv&quot; or @rnd:style = &quot;glossdiv-title&quot;]"/>
  79. <axsl:choose>
  80. <axsl:when test="$glossdivs">
  81. <axsl:apply-templates select="following-sibling::*[1]" mode="glossdivs">
  82. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  83. <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
  84. </axsl:apply-templates>
  85. </axsl:when>
  86. <axsl:otherwise>
  87. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  88. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  89. </axsl:apply-templates>
  90. </axsl:otherwise>
  91. </axsl:choose>
  92. </glossary>
  93. </axsl:when>
  94. <axsl:when test="@rnd:style = &quot;qandaset&quot; or @rnd:style = &quot;qandaset-title&quot;">
  95. <qandaset xmlns="http://docbook.org/ns/docbook">
  96. <axsl:call-template name="copy"/>
  97. <axsl:variable name="qandadivs" select="following-sibling::dbk:para[@rnd:style = &quot;qandadiv&quot; or @rnd:style = &quot;qandadiv-title&quot;]"/>
  98. <axsl:choose>
  99. <axsl:when test="$qandadivs">
  100. <axsl:apply-templates select="following-sibling::*[1]" mode="qandadivs">
  101. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  102. <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
  103. </axsl:apply-templates>
  104. </axsl:when>
  105. <axsl:otherwise>
  106. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  107. <axsl:with-param name="nextSubsection" select="$subsections[1]"/>
  108. </axsl:apply-templates>
  109. </axsl:otherwise>
  110. </axsl:choose>
  111. </qandaset>
  112. </axsl:when>
  113. </axsl:choose>
  114. </axsl:template>
  115. <axsl:template match="*" mode="subsections">
  116. <axsl:param name="subsections" select="/.."/>
  117. <axsl:copy>
  118. <axsl:apply-templates select="@*"/>
  119. <axsl:apply-templates mode="subsections"/>
  120. </axsl:copy>
  121. </axsl:template>
  122. <axsl:template match="dbk:para" mode="bibliodivs">
  123. <axsl:param name="nextSubsection" select="/.."/>
  124. <axsl:param name="bibliodivs" select="/.."/>
  125. <axsl:choose>
  126. <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
  127. <axsl:when test="@rnd:style = &quot;bibliodiv&quot; or @rnd:style = &quot;bibliodiv-title&quot;">
  128. <bibliodiv xmlns="http://docbook.org/ns/docbook">
  129. <axsl:call-template name="copy"/>
  130. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  131. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  132. <axsl:with-param name="nextbibliodiv" select="$bibliodivs[1]"/>
  133. </axsl:apply-templates>
  134. </bibliodiv>
  135. <axsl:choose>
  136. <axsl:when test="$nextSubsection and $bibliodivs and count($nextSubsection/preceding-sibling::* | $bibliodivs[1]) = count($nextSubsection/preceding-sibling::*)">
  137. <axsl:apply-templates select="$bibliodivs[1]" mode="bibliodivs">
  138. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  139. <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
  140. </axsl:apply-templates>
  141. </axsl:when>
  142. <axsl:when test="$bibliodivs">
  143. <axsl:apply-templates select="$bibliodivs[1]" mode="bibliodivs">
  144. <axsl:with-param name="bibliodivs" select="$bibliodivs[position() != 1]"/>
  145. </axsl:apply-templates>
  146. </axsl:when>
  147. </axsl:choose>
  148. </axsl:when>
  149. <axsl:otherwise>
  150. <axsl:call-template name="copy"/>
  151. <axsl:apply-templates select="following-sibling::*[1]" mode="bibliodivs">
  152. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  153. </axsl:apply-templates>
  154. </axsl:otherwise>
  155. </axsl:choose>
  156. </axsl:template>
  157. <axsl:template match="dbk:para" mode="glossdivs">
  158. <axsl:param name="nextSubsection" select="/.."/>
  159. <axsl:param name="glossdivs" select="/.."/>
  160. <axsl:choose>
  161. <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
  162. <axsl:when test="@rnd:style = &quot;glossdiv&quot; or @rnd:style = &quot;glossdiv-title&quot;">
  163. <glossdiv xmlns="http://docbook.org/ns/docbook">
  164. <axsl:call-template name="copy"/>
  165. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  166. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  167. <axsl:with-param name="nextglossdiv" select="$glossdivs[1]"/>
  168. </axsl:apply-templates>
  169. </glossdiv>
  170. <axsl:choose>
  171. <axsl:when test="$nextSubsection and $glossdivs and count($nextSubsection/preceding-sibling::* | $glossdivs[1]) = count($nextSubsection/preceding-sibling::*)">
  172. <axsl:apply-templates select="$glossdivs[1]" mode="glossdivs">
  173. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  174. <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
  175. </axsl:apply-templates>
  176. </axsl:when>
  177. <axsl:when test="$glossdivs">
  178. <axsl:apply-templates select="$glossdivs[1]" mode="glossdivs">
  179. <axsl:with-param name="glossdivs" select="$glossdivs[position() != 1]"/>
  180. </axsl:apply-templates>
  181. </axsl:when>
  182. </axsl:choose>
  183. </axsl:when>
  184. <axsl:otherwise>
  185. <axsl:call-template name="copy"/>
  186. <axsl:apply-templates select="following-sibling::*[1]" mode="glossdivs">
  187. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  188. </axsl:apply-templates>
  189. </axsl:otherwise>
  190. </axsl:choose>
  191. </axsl:template>
  192. <axsl:template match="dbk:para" mode="qandadivs">
  193. <axsl:param name="nextSubsection" select="/.."/>
  194. <axsl:param name="qandadivs" select="/.."/>
  195. <axsl:choose>
  196. <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
  197. <axsl:when test="@rnd:style = &quot;qandadiv&quot; or @rnd:style = &quot;qandadiv-title&quot;">
  198. <qandadiv xmlns="http://docbook.org/ns/docbook">
  199. <axsl:call-template name="copy"/>
  200. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  201. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  202. <axsl:with-param name="nextqandadiv" select="$qandadivs[1]"/>
  203. </axsl:apply-templates>
  204. </qandadiv>
  205. <axsl:choose>
  206. <axsl:when test="$nextSubsection and $qandadivs and count($nextSubsection/preceding-sibling::* | $qandadivs[1]) = count($nextSubsection/preceding-sibling::*)">
  207. <axsl:apply-templates select="$qandadivs[1]" mode="qandadivs">
  208. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  209. <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
  210. </axsl:apply-templates>
  211. </axsl:when>
  212. <axsl:when test="$qandadivs">
  213. <axsl:apply-templates select="$qandadivs[1]" mode="qandadivs">
  214. <axsl:with-param name="qandadivs" select="$qandadivs[position() != 1]"/>
  215. </axsl:apply-templates>
  216. </axsl:when>
  217. </axsl:choose>
  218. </axsl:when>
  219. <axsl:otherwise>
  220. <axsl:call-template name="copy"/>
  221. <axsl:apply-templates select="following-sibling::*[1]" mode="qandadivs">
  222. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  223. </axsl:apply-templates>
  224. </axsl:otherwise>
  225. </axsl:choose>
  226. </axsl:template>
  227. <axsl:template match="*" mode="terminal">
  228. <axsl:param name="nextSubsection" select="/.."/>
  229. <axsl:param name="nextbibliodiv" select="/.."/>
  230. <axsl:param name="nextglossdiv" select="/.."/>
  231. <axsl:param name="nextqandadiv" select="/.."/>
  232. <axsl:choose>
  233. <axsl:when test="generate-id() = generate-id($nextSubsection)"/>
  234. <axsl:when test="generate-id() = generate-id($nextbibliodiv)"/>
  235. <axsl:when test="generate-id() = generate-id($nextglossdiv)"/>
  236. <axsl:when test="generate-id() = generate-id($nextqandadiv)"/>
  237. <axsl:otherwise>
  238. <axsl:call-template name="copy"/>
  239. <axsl:apply-templates select="following-sibling::*[1]" mode="terminal">
  240. <axsl:with-param name="nextSubsection" select="$nextSubsection"/>
  241. <axsl:with-param name="nextbibliodiv" select="$nextbibliodiv"/>
  242. <axsl:with-param name="nextglossdiv" select="$nextglossdiv"/>
  243. <axsl:with-param name="nextqandadiv" select="$nextqandadiv"/>
  244. </axsl:apply-templates>
  245. </axsl:otherwise>
  246. </axsl:choose>
  247. </axsl:template>
  248. <axsl:template match="*">
  249. <axsl:copy>
  250. <axsl:apply-templates select="@*"/>
  251. <axsl:apply-templates/>
  252. </axsl:copy>
  253. </axsl:template>
  254. <axsl:template name="copy">
  255. <axsl:copy>
  256. <axsl:apply-templates select="@*"/>
  257. <axsl:apply-templates/>
  258. </axsl:copy>
  259. </axsl:template>
  260. <axsl:template match="@*">
  261. <axsl:copy/>
  262. </axsl:template>
  263. </axsl:stylesheet>