params.xsl 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xs="http://www.w3.org/2001/XMLSchema"
  4. exclude-result-prefixes="xs"
  5. version="2.0">
  6. <xsl:output doctype-public="-//OASIS//DTD DITA Reference//EN"
  7. doctype-system="reference.dtd"/>
  8. <xsl:strip-space elements="*"/>
  9. <xsl:param name="output-dir.url"/>
  10. <xsl:template match="/">
  11. <xsl:call-template name="all"/>
  12. <xsl:call-template name="separate"/>
  13. </xsl:template>
  14. <xsl:template name="all">
  15. <xsl:comment> Generated from plugin source, do not edit! </xsl:comment>
  16. <reference id="parameters">
  17. <title outputclass="generated">DITA-OT parameters</title>
  18. <reference id="all">
  19. <title>All DITA-OT parameters</title>
  20. <refbody>
  21. <section>
  22. <parml>
  23. <xsl:for-each select="//transtype/param">
  24. <xsl:sort select="@name"/>
  25. <!--xsl:variable name="props" as="xs:string*">
  26. <xsl:variable name="params" as="element(param)*">
  27. <xsl:apply-templates select=".." mode="inherit"/>
  28. </xsl:variable>
  29. <xsl:for-each select="$params/../@name">
  30. <xsl:sequence select="tokenize(., '\s+')"/>
  31. </xsl:for-each>
  32. </xsl:variable-->
  33. <xsl:apply-templates select=".">
  34. <!--xsl:with-param name="props" select="string-join(distinct-values($props), ' ')"/-->
  35. </xsl:apply-templates>
  36. </xsl:for-each>
  37. </parml>
  38. </section>
  39. </refbody>
  40. </reference>
  41. </reference>
  42. </xsl:template>
  43. <xsl:template name="separate">
  44. <!--xsl:for-each select="//transtype/param"-->
  45. <xsl:for-each-group select="//transtype" group-by="@name">
  46. <xsl:variable name="id" select="current-grouping-key()"/>
  47. <xsl:message>Writing <xsl:value-of select="$output-dir.url"/>parameters-<xsl:value-of select="$id"/>.dita</xsl:message>
  48. <xsl:result-document href="{$output-dir.url}/parameters-{$id}.dita"
  49. doctype-public="-//OASIS//DTD DITA Reference//EN"
  50. doctype-system="reference.dtd">
  51. <xsl:comment> Generated from plugin source, do not edit! </xsl:comment>
  52. <reference id="{$id}">
  53. <title outputclass="generated">
  54. <xsl:value-of select="current-group()[1]/@desc"/>
  55. <xsl:text> parameters</xsl:text>
  56. </title>
  57. <titlealts>
  58. <navtitle>
  59. <xsl:value-of select="current-group()[1]/@desc"/>
  60. </navtitle>
  61. </titlealts>
  62. <shortdesc id="shortdesc"/>
  63. <refbody>
  64. <section>
  65. <parml>
  66. <xsl:variable name="params" as="element(param)*">
  67. <xsl:sequence select="current-group()/param"/>
  68. <!--xsl:apply-templates select="." mode="inherit"/-->
  69. </xsl:variable>
  70. <xsl:for-each-group select="$params" group-by="@name">
  71. <xsl:sort select="@name"/>
  72. <xsl:apply-templates select="current-group()[1]">
  73. <xsl:with-param name="params" select="current-group()"/>
  74. </xsl:apply-templates>
  75. </xsl:for-each-group>
  76. </parml>
  77. </section>
  78. </refbody>
  79. </reference>
  80. </xsl:result-document>
  81. </xsl:for-each-group>
  82. </xsl:template>
  83. <!--xsl:template match="transtype" mode="inherit" as="element(param)*">
  84. <xsl:sequence select="param"/>
  85. <xsl:variable name="extends" as="xs:string?">
  86. <xsl:choose>
  87. <xsl:when test="@name = 'base'"/>
  88. <xsl:when test="@extends">
  89. <xsl:value-of select="@extends"/>
  90. </xsl:when>
  91. <xsl:otherwise>base</xsl:otherwise>
  92. </xsl:choose>
  93. </xsl:variable>
  94. <xsl:if test="exists($extends)">
  95. <xsl:apply-templates select="//transtype[tokenize(@name, '\s+') = $extends]" mode="inherit"/>
  96. </xsl:if>
  97. </xsl:template-->
  98. <xsl:template match="param">
  99. <xsl:param name="params" select="."/>
  100. <xsl:param name="props" select="tokenize(../@name, '\s+')" as="xs:string*"/>
  101. <plentry id="{@name}">
  102. <xsl:if test="not($props = 'base')">
  103. <!--xsl:attribute name="props" select="concat('transtype(', string-join($props, ' '), ')')"/-->
  104. <xsl:attribute name="props" select="string-join($props, ' ')"/>
  105. </xsl:if>
  106. <xsl:if test="@deprecated = 'true'">
  107. <xsl:attribute name="importance">deprecated</xsl:attribute>
  108. </xsl:if>
  109. <xsl:if test="@required = 'true'">
  110. <xsl:attribute name="importance">required</xsl:attribute>
  111. </xsl:if>
  112. <pt>
  113. <parmname>
  114. <xsl:value-of select="@name"/>
  115. </parmname>
  116. <ph>
  117. <indexterm>
  118. <parmname><xsl:value-of select="@name"/></parmname>
  119. </indexterm>
  120. <indexterm>parameters<indexterm>
  121. <parmname><xsl:value-of select="@name"/></parmname>
  122. </indexterm></indexterm>
  123. </ph>
  124. <xsl:if test="@deprecated = 'true'">
  125. <ph>
  126. <indexterm>deprecated features<indexterm>parameters<indexterm>
  127. <parmname><xsl:value-of select="@name"/></parmname>
  128. </indexterm></indexterm>
  129. </indexterm>
  130. </ph>
  131. </xsl:if>
  132. </pt>
  133. <pd id="{@name}.desc">
  134. <xsl:value-of select="@desc"/>
  135. <xsl:choose>
  136. <xsl:when test="@type = 'enum' and $params/val/@desc">
  137. <xsl:text> The following values are supported:</xsl:text>
  138. <ul>
  139. <xsl:for-each select="$params/val">
  140. <li>
  141. <option>
  142. <xsl:value-of select="."/>
  143. </option>
  144. <xsl:if test="@default = 'true'">
  145. <xsl:text> (default)</xsl:text>
  146. </xsl:if>
  147. <xsl:text> – </xsl:text>
  148. <xsl:value-of select="@desc"/>
  149. </li>
  150. </xsl:for-each>
  151. </ul>
  152. </xsl:when>
  153. <xsl:when test="@type = 'enum' and $params/val">
  154. <xsl:text> The allowed values are </xsl:text>
  155. <xsl:choose>
  156. <xsl:when test="count($params/val) gt 2">
  157. <xsl:for-each select="$params/val">
  158. <xsl:if test="position() ne 1">, </xsl:if>
  159. <xsl:if test="position() eq last()">and </xsl:if>
  160. <option>
  161. <xsl:value-of select="."/>
  162. </option>
  163. </xsl:for-each>
  164. </xsl:when>
  165. <xsl:otherwise>
  166. <xsl:for-each select="$params/val">
  167. <xsl:if test="position() ne 1"> and </xsl:if>
  168. <option>
  169. <xsl:value-of select="."/>
  170. </option>
  171. </xsl:for-each>
  172. </xsl:otherwise>
  173. </xsl:choose>
  174. <xsl:if test="$params/val[@default = 'true']">
  175. <xsl:text>; the default value is </xsl:text>
  176. <option>
  177. <xsl:value-of select="$params/val[@default = 'true']"/>
  178. </option>
  179. </xsl:if>
  180. <xsl:text>.</xsl:text>
  181. </xsl:when>
  182. </xsl:choose>
  183. </pd>
  184. </plentry>
  185. </xsl:template>
  186. </xsl:stylesheet>