[31735] | 1 | <?xml version="1.0"?>
|
---|
| 2 |
|
---|
| 3 | <!--
|
---|
| 4 | xidl2docbook.xsl:
|
---|
| 5 | XSLT stylesheet that generates docbook from
|
---|
| 6 | VirtualBox.xidl.
|
---|
[96300] | 7 | -->
|
---|
| 8 | <!--
|
---|
[98103] | 9 | Copyright (C) 2006-2023 Oracle and/or its affiliates.
|
---|
[31735] | 10 |
|
---|
[96407] | 11 | This file is part of VirtualBox base platform packages, as
|
---|
| 12 | available from https://www.virtualbox.org.
|
---|
| 13 |
|
---|
| 14 | This program is free software; you can redistribute it and/or
|
---|
| 15 | modify it under the terms of the GNU General Public License
|
---|
| 16 | as published by the Free Software Foundation, in version 3 of the
|
---|
| 17 | License.
|
---|
| 18 |
|
---|
| 19 | This program is distributed in the hope that it will be useful, but
|
---|
| 20 | WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 22 | General Public License for more details.
|
---|
| 23 |
|
---|
| 24 | You should have received a copy of the GNU General Public License
|
---|
| 25 | along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
| 26 |
|
---|
| 27 | SPDX-License-Identifier: GPL-3.0-only
|
---|
[31735] | 28 | -->
|
---|
| 29 |
|
---|
| 30 | <xsl:stylesheet
|
---|
| 31 | version="1.0"
|
---|
| 32 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
---|
| 33 | xmlns:exsl="http://exslt.org/common"
|
---|
| 34 | extension-element-prefixes="exsl">
|
---|
| 35 |
|
---|
| 36 | <xsl:output
|
---|
| 37 | method="xml"
|
---|
| 38 | version="1.0"
|
---|
| 39 | encoding="utf-8"
|
---|
| 40 | indent="yes"/>
|
---|
| 41 |
|
---|
| 42 | <xsl:strip-space elements="*"/>
|
---|
| 43 |
|
---|
[56540] | 44 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 45 | Keys for more efficiently looking up of types.
|
---|
| 46 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 47 |
|
---|
| 48 | <xsl:key name="G_keyEnumsByName" match="//enum[@name]" use="@name"/>
|
---|
| 49 | <xsl:key name="G_keyInterfacesByName" match="//interface[@name]" use="@name"/>
|
---|
| 50 | <xsl:key name="G_keyResultsByName" match="//result[@name]" use="@name"/>
|
---|
| 51 |
|
---|
[31735] | 52 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 53 | global XSLT variables
|
---|
| 54 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 55 |
|
---|
| 56 | <xsl:variable name="G_xsltFilename" select="'glue-jaxws.xsl'" />
|
---|
| 57 |
|
---|
| 58 | <!-- collect all interfaces with "wsmap='suppress'" in a global variable for
|
---|
| 59 | quick lookup -->
|
---|
| 60 | <xsl:variable name="G_setSuppressedInterfaces"
|
---|
| 61 | select="//interface[@wsmap='suppress']" />
|
---|
| 62 |
|
---|
| 63 | <xsl:template name="makeLinkId">
|
---|
| 64 | <xsl:param name="ifname" />
|
---|
| 65 | <xsl:param name="member" />
|
---|
| 66 | <xsl:value-of select="concat($ifname, '__', $member)"/>
|
---|
| 67 | </xsl:template>
|
---|
| 68 |
|
---|
| 69 | <xsl:template name="emitType">
|
---|
| 70 | <xsl:param name="type" />
|
---|
| 71 | <xsl:choose>
|
---|
| 72 | <xsl:when test="$type">
|
---|
| 73 | <xsl:choose>
|
---|
[56540] | 74 | <xsl:when test="count(key('G_keyInterfacesByName',$type)) > 0">
|
---|
[56532] | 75 | <link>
|
---|
[31735] | 76 | <xsl:attribute name="linkend">
|
---|
| 77 | <xsl:value-of select="translate($type, ':', '_')" />
|
---|
| 78 | </xsl:attribute>
|
---|
| 79 | <xsl:value-of select="$type" />
|
---|
[56532] | 80 | </link>
|
---|
[31735] | 81 | </xsl:when>
|
---|
[56540] | 82 | <xsl:when test="count(key('G_keyEnumsByName',$type)) > 0">
|
---|
[56532] | 83 | <link>
|
---|
[31735] | 84 | <xsl:attribute name="linkend">
|
---|
| 85 | <xsl:value-of select="translate($type, ':', '_')" />
|
---|
| 86 | </xsl:attribute>
|
---|
| 87 | <xsl:value-of select="$type" />
|
---|
[56532] | 88 | </link>
|
---|
[31735] | 89 | </xsl:when>
|
---|
| 90 | <xsl:otherwise>
|
---|
| 91 | <xsl:value-of select="$type" />
|
---|
| 92 | </xsl:otherwise>
|
---|
| 93 | </xsl:choose>
|
---|
| 94 | </xsl:when>
|
---|
| 95 | <xsl:otherwise>
|
---|
| 96 | <xsl:value-of select="'void'" />
|
---|
| 97 | </xsl:otherwise>
|
---|
| 98 | </xsl:choose>
|
---|
| 99 | </xsl:template>
|
---|
| 100 |
|
---|
| 101 | <xsl:template name="isWebserviceOnly">
|
---|
| 102 | <xsl:for-each select="ancestor-or-self::*">
|
---|
| 103 | <xsl:if test="(name()='if') and (@target='wsdl')">
|
---|
| 104 | <xsl:text>yes</xsl:text>
|
---|
| 105 | </xsl:if>
|
---|
| 106 | </xsl:for-each>
|
---|
| 107 | </xsl:template>
|
---|
| 108 |
|
---|
| 109 |
|
---|
| 110 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 111 | root match
|
---|
| 112 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 113 |
|
---|
| 114 | <xsl:template match="/idl">
|
---|
[56544] | 115 | <book> <!-- Need a single top-level element for xi:include, we'll skip it using xpointer. -->
|
---|
[46213] | 116 | <chapter id="sdkref_classes">
|
---|
| 117 | <title>Classes (interfaces)</title>
|
---|
[31735] | 118 | <xsl:for-each select="//interface">
|
---|
| 119 | <xsl:sort select="@name"/>
|
---|
| 120 |
|
---|
| 121 | <!-- ignore those interfaces within module sections; they don't have uuid -->
|
---|
| 122 | <xsl:if test="@uuid">
|
---|
| 123 | <xsl:variable name="ifname" select="@name" />
|
---|
| 124 | <xsl:variable name="wsmap" select="@wsmap" />
|
---|
| 125 | <xsl:variable name="wscpp" select="@wscpp" />
|
---|
| 126 | <xsl:variable name="wsonly"><xsl:call-template name="isWebserviceOnly" /></xsl:variable>
|
---|
| 127 | <xsl:variable name="extends" select="@extends" />
|
---|
| 128 | <xsl:variable name="reportExtends" select="not($extends='$unknown') and not($extends='$errorinfo')" />
|
---|
| 129 |
|
---|
| 130 | <sect1>
|
---|
| 131 | <xsl:attribute name="id">
|
---|
| 132 | <xsl:value-of select="$ifname" />
|
---|
| 133 | </xsl:attribute>
|
---|
| 134 | <title><xsl:value-of select="$ifname" />
|
---|
| 135 | <xsl:if test="$reportExtends">
|
---|
| 136 | <xsl:value-of select="concat(' (', @extends, ')')" />
|
---|
| 137 | </xsl:if>
|
---|
| 138 | </title>
|
---|
| 139 |
|
---|
| 140 | <xsl:choose>
|
---|
| 141 | <xsl:when test="$wsmap='suppress'">
|
---|
[56532] | 142 | <para><note><para>
|
---|
[31735] | 143 | This interface is not supported in the web service.
|
---|
[56532] | 144 | </para></note></para>
|
---|
[31735] | 145 | </xsl:when>
|
---|
| 146 | <xsl:when test="$wsmap='struct'">
|
---|
[56532] | 147 | <para><note><para>With the web service, this interface is mapped to a structure. Attributes that return this interface will not return an object, but a complete structure
|
---|
| 148 | containing the attributes listed below as structure members.</para></note></para>
|
---|
[31735] | 149 | </xsl:when>
|
---|
| 150 | <xsl:when test="$wsonly='yes'">
|
---|
[56532] | 151 | <para><note><para>This interface is supported in the web service only, not in COM/XPCOM.</para></note></para>
|
---|
[31735] | 152 | </xsl:when>
|
---|
| 153 | </xsl:choose>
|
---|
| 154 |
|
---|
| 155 | <xsl:if test="$reportExtends">
|
---|
[56532] | 156 | <para><note><para>
|
---|
[31735] | 157 | This interface extends
|
---|
[56532] | 158 | <link>
|
---|
[31735] | 159 | <xsl:attribute name="linkend"><xsl:value-of select="$extends" /></xsl:attribute>
|
---|
| 160 | <xsl:value-of select="$extends" />
|
---|
[56532] | 161 | </link>
|
---|
[31735] | 162 | and therefore supports all its methods and attributes as well.
|
---|
[56532] | 163 | </para></note></para>
|
---|
[31735] | 164 | </xsl:if>
|
---|
| 165 |
|
---|
| 166 | <xsl:apply-templates select="desc" />
|
---|
| 167 |
|
---|
| 168 | <xsl:if test="attribute">
|
---|
| 169 | <sect2>
|
---|
| 170 | <title>Attributes</title>
|
---|
| 171 | <xsl:for-each select="attribute">
|
---|
| 172 | <xsl:variable name="attrtype" select="@type" />
|
---|
| 173 | <sect3>
|
---|
| 174 | <xsl:attribute name="id">
|
---|
| 175 | <xsl:call-template name="makeLinkId">
|
---|
| 176 | <xsl:with-param name="ifname" select="$ifname" />
|
---|
| 177 | <xsl:with-param name="member" select="@name" />
|
---|
| 178 | </xsl:call-template>
|
---|
| 179 | </xsl:attribute>
|
---|
| 180 | <title>
|
---|
| 181 | <xsl:choose>
|
---|
| 182 | <xsl:when test="@readonly='yes'">
|
---|
| 183 | <xsl:value-of select="concat(@name, ' (read-only)')" />
|
---|
| 184 | </xsl:when>
|
---|
| 185 | <xsl:otherwise>
|
---|
| 186 | <xsl:value-of select="concat(@name, ' (read/write)')" />
|
---|
| 187 | </xsl:otherwise>
|
---|
| 188 | </xsl:choose>
|
---|
| 189 | </title>
|
---|
| 190 | <programlisting>
|
---|
| 191 | <xsl:call-template name="emitType">
|
---|
| 192 | <xsl:with-param name="type" select="$attrtype" />
|
---|
| 193 | </xsl:call-template>
|
---|
| 194 | <xsl:value-of select="concat(' ', $ifname, '::', @name)" />
|
---|
| 195 | <xsl:if test="(@array='yes') or (@safearray='yes')">
|
---|
| 196 | <xsl:text>[]</xsl:text>
|
---|
| 197 | </xsl:if>
|
---|
| 198 | </programlisting>
|
---|
| 199 | <xsl:if test="( ($attrtype=($G_setSuppressedInterfaces/@name)) )">
|
---|
[56532] | 200 | <para><note><para>
|
---|
[31735] | 201 | This attribute is not supported in the web service.
|
---|
[56532] | 202 | </para></note></para>
|
---|
[31735] | 203 | </xsl:if>
|
---|
| 204 | <xsl:apply-templates select="desc" />
|
---|
| 205 | </sect3>
|
---|
| 206 | </xsl:for-each>
|
---|
| 207 | </sect2>
|
---|
| 208 | </xsl:if>
|
---|
| 209 |
|
---|
| 210 | <xsl:if test="method">
|
---|
| 211 | <!-- <sect2> -->
|
---|
| 212 | <!-- <title>Methods</title> -->
|
---|
| 213 | <xsl:for-each select="method">
|
---|
| 214 | <xsl:sort select="@name" />
|
---|
| 215 | <xsl:variable name="returnidltype" select="param[@dir='return']/@type" />
|
---|
| 216 | <sect2>
|
---|
| 217 | <xsl:attribute name="id">
|
---|
| 218 | <xsl:call-template name="makeLinkId">
|
---|
| 219 | <xsl:with-param name="ifname" select="$ifname" />
|
---|
| 220 | <xsl:with-param name="member" select="@name" />
|
---|
| 221 | </xsl:call-template>
|
---|
| 222 | </xsl:attribute>
|
---|
| 223 | <title>
|
---|
| 224 | <xsl:value-of select="@name" />
|
---|
| 225 | </title>
|
---|
| 226 | <xsl:if test=" (param[@type=($G_setSuppressedInterfaces/@name)])
|
---|
| 227 | or (param[@mod='ptr'])" >
|
---|
[56532] | 228 | <para><note><para>
|
---|
[31735] | 229 | This method is not supported in the web service.
|
---|
[56532] | 230 | </para></note></para>
|
---|
[31735] | 231 | </xsl:if>
|
---|
| 232 | <!-- make a set of all parameters with in and out direction -->
|
---|
| 233 | <xsl:variable name="paramsinout" select="param[@dir='in' or @dir='out']" />
|
---|
| 234 | <programlisting>
|
---|
| 235 | <!--emit return type-->
|
---|
| 236 | <xsl:call-template name="emitType">
|
---|
| 237 | <xsl:with-param name="type" select="$returnidltype" />
|
---|
| 238 | </xsl:call-template>
|
---|
| 239 | <xsl:if test="(param[@dir='return']/@array='yes') or (param[@dir='return']/@safearray='yes')">
|
---|
| 240 | <xsl:text>[]</xsl:text>
|
---|
| 241 | </xsl:if>
|
---|
| 242 | <xsl:value-of select="concat(' ', $ifname, '::', @name, '(')" />
|
---|
| 243 | <xsl:if test="$paramsinout">
|
---|
| 244 | <xsl:for-each select="$paramsinout">
|
---|
| 245 | <xsl:text> </xsl:text>
|
---|
| 246 | <xsl:value-of select="concat(' [', @dir, '] ')" />
|
---|
| 247 | <xsl:if test="@mod = 'ptr'">
|
---|
| 248 | <xsl:text>[ptr] </xsl:text>
|
---|
| 249 | </xsl:if>
|
---|
| 250 | <xsl:call-template name="emitType">
|
---|
| 251 | <xsl:with-param name="type" select="@type" />
|
---|
| 252 | </xsl:call-template>
|
---|
| 253 | <emphasis role="bold">
|
---|
| 254 | <xsl:value-of select="concat(' ', @name)" />
|
---|
| 255 | </emphasis>
|
---|
| 256 | <xsl:if test="(@array='yes') or (@safearray='yes')">
|
---|
| 257 | <xsl:text>[]</xsl:text>
|
---|
| 258 | </xsl:if>
|
---|
| 259 | <xsl:if test="not(position()=last())">
|
---|
| 260 | <xsl:text>, </xsl:text>
|
---|
| 261 | </xsl:if>
|
---|
| 262 | </xsl:for-each>
|
---|
| 263 | </xsl:if>
|
---|
| 264 | <xsl:text>)</xsl:text>
|
---|
| 265 | </programlisting>
|
---|
| 266 |
|
---|
| 267 | <xsl:if test="$paramsinout">
|
---|
| 268 | <glosslist>
|
---|
| 269 | <xsl:for-each select="$paramsinout">
|
---|
| 270 | <glossentry>
|
---|
| 271 | <glossterm>
|
---|
| 272 | <xsl:value-of select="@name" />
|
---|
| 273 | </glossterm>
|
---|
| 274 | <glossdef>
|
---|
[56532] | 275 | <xsl:if test="not(desc)">
|
---|
| 276 | <para/>
|
---|
| 277 | </xsl:if>
|
---|
| 278 | <xsl:apply-templates select="desc" />
|
---|
[31735] | 279 | </glossdef>
|
---|
| 280 | </glossentry>
|
---|
| 281 | </xsl:for-each>
|
---|
| 282 | </glosslist>
|
---|
| 283 | </xsl:if>
|
---|
| 284 |
|
---|
| 285 | <!-- dump the description here -->
|
---|
| 286 | <xsl:apply-templates select="desc" />
|
---|
| 287 |
|
---|
| 288 | <xsl:if test="desc/result">
|
---|
| 289 | <para>If this method fails, the following error codes may be reported:</para>
|
---|
| 290 | <itemizedlist>
|
---|
| 291 | <xsl:for-each select="desc/result">
|
---|
| 292 | <listitem>
|
---|
| 293 | <para><code><xsl:value-of select="@name" />: </code>
|
---|
| 294 | <xsl:apply-templates />
|
---|
| 295 | </para>
|
---|
| 296 | </listitem>
|
---|
| 297 | </xsl:for-each>
|
---|
| 298 | </itemizedlist>
|
---|
| 299 | </xsl:if>
|
---|
| 300 | </sect2>
|
---|
| 301 | </xsl:for-each>
|
---|
| 302 | <!-- </sect2> -->
|
---|
| 303 | </xsl:if>
|
---|
| 304 |
|
---|
| 305 | </sect1>
|
---|
| 306 | </xsl:if>
|
---|
| 307 | </xsl:for-each>
|
---|
| 308 | </chapter>
|
---|
| 309 |
|
---|
[46213] | 310 | <chapter id="sdkref_enums">
|
---|
| 311 | <title>Enumerations (enums)</title>
|
---|
[31735] | 312 | <xsl:for-each select="//enum">
|
---|
| 313 | <xsl:sort select="@name"/>
|
---|
| 314 |
|
---|
| 315 | <xsl:variable name="ifname" select="@name" />
|
---|
| 316 | <xsl:variable name="wsmap" select="@wsmap" />
|
---|
| 317 | <xsl:variable name="wscpp" select="@wscpp" />
|
---|
| 318 |
|
---|
| 319 | <sect1>
|
---|
| 320 | <xsl:attribute name="id">
|
---|
| 321 | <xsl:value-of select="$ifname" />
|
---|
| 322 | </xsl:attribute>
|
---|
| 323 | <title><xsl:value-of select="$ifname" /></title>
|
---|
| 324 |
|
---|
| 325 | <xsl:apply-templates select="desc" />
|
---|
| 326 |
|
---|
| 327 | <glosslist>
|
---|
| 328 | <xsl:for-each select="const">
|
---|
| 329 | <glossentry>
|
---|
| 330 | <glossterm>
|
---|
| 331 | <xsl:attribute name="id">
|
---|
| 332 | <xsl:call-template name="makeLinkId">
|
---|
| 333 | <xsl:with-param name="ifname" select="$ifname" />
|
---|
| 334 | <xsl:with-param name="member" select="@name" />
|
---|
| 335 | </xsl:call-template>
|
---|
| 336 | </xsl:attribute>
|
---|
| 337 | <xsl:value-of select="@name" />
|
---|
| 338 | </glossterm>
|
---|
| 339 | <glossdef>
|
---|
[56532] | 340 | <xsl:if test="not(desc)">
|
---|
| 341 | <para/>
|
---|
| 342 | </xsl:if>
|
---|
[31735] | 343 | <xsl:apply-templates select="desc" />
|
---|
| 344 | </glossdef>
|
---|
| 345 | </glossentry>
|
---|
| 346 | </xsl:for-each>
|
---|
| 347 | </glosslist>
|
---|
| 348 | </sect1>
|
---|
| 349 | </xsl:for-each>
|
---|
| 350 | </chapter>
|
---|
[56544] | 351 | </book>
|
---|
[31735] | 352 | </xsl:template>
|
---|
| 353 |
|
---|
| 354 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 355 | if
|
---|
| 356 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 357 |
|
---|
| 358 | <!--
|
---|
| 359 | * ignore all |if|s except those for WSDL target
|
---|
| 360 | -->
|
---|
| 361 | <xsl:template match="if">
|
---|
| 362 | <xsl:if test="@target='wsdl'">
|
---|
| 363 | <xsl:apply-templates/>
|
---|
| 364 | </xsl:if>
|
---|
| 365 | </xsl:template>
|
---|
| 366 |
|
---|
| 367 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 368 | cpp
|
---|
| 369 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 370 |
|
---|
| 371 | <xsl:template match="cpp">
|
---|
| 372 | <!-- ignore this -->
|
---|
| 373 | </xsl:template>
|
---|
| 374 |
|
---|
| 375 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 376 | result
|
---|
| 377 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 378 |
|
---|
| 379 | <xsl:template match="result">
|
---|
| 380 | <!-- ignore this, we handle them explicitly in method loops -->
|
---|
| 381 | </xsl:template>
|
---|
| 382 |
|
---|
| 383 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 384 | library
|
---|
| 385 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 386 |
|
---|
| 387 | <xsl:template match="library">
|
---|
| 388 | <xsl:apply-templates />
|
---|
| 389 | </xsl:template>
|
---|
| 390 |
|
---|
| 391 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 392 | class
|
---|
| 393 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 394 |
|
---|
| 395 | <xsl:template match="module/class">
|
---|
| 396 | <!-- TODO swallow for now -->
|
---|
| 397 | </xsl:template>
|
---|
| 398 |
|
---|
| 399 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 400 | enum
|
---|
| 401 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 402 |
|
---|
| 403 | <xsl:template match="enum">
|
---|
| 404 | </xsl:template>
|
---|
| 405 |
|
---|
| 406 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 407 | const
|
---|
| 408 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 409 |
|
---|
| 410 | <!--
|
---|
| 411 | <xsl:template match="const">
|
---|
| 412 | <xsl:apply-templates />
|
---|
| 413 | </xsl:template>
|
---|
| 414 | -->
|
---|
| 415 |
|
---|
| 416 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 417 | desc
|
---|
| 418 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 419 |
|
---|
| 420 | <xsl:template match="desc">
|
---|
[56532] | 421 | <!-- todo: wrapping the entire content in a single para is actually not
|
---|
| 422 | entirely correct, as it contains empty lines denoting new paragraphs -->
|
---|
| 423 | <para>
|
---|
[31735] | 424 | <xsl:apply-templates />
|
---|
[56532] | 425 | </para>
|
---|
[31735] | 426 | </xsl:template>
|
---|
| 427 |
|
---|
| 428 | <xsl:template name="getCurrentInterface">
|
---|
| 429 | <xsl:for-each select="ancestor-or-self::*">
|
---|
| 430 | <xsl:if test="name()='interface'">
|
---|
| 431 | <xsl:value-of select="@name"/>
|
---|
| 432 | </xsl:if>
|
---|
| 433 | </xsl:for-each>
|
---|
| 434 | </xsl:template>
|
---|
| 435 |
|
---|
| 436 | <!-- <link to="DeviceType::HardDisk"/> -->
|
---|
| 437 | <xsl:template match="link">
|
---|
[56532] | 438 | <link>
|
---|
[31735] | 439 | <xsl:variable name="tmp" select="@to" />
|
---|
| 440 | <xsl:variable name="enumNameFromCombinedName">
|
---|
| 441 | <xsl:value-of select="substring-before($tmp, '_')" />
|
---|
| 442 | </xsl:variable>
|
---|
| 443 | <xsl:variable name="enumValueFromCombinedName">
|
---|
| 444 | <xsl:value-of select="substring-after($tmp, '_')" />
|
---|
| 445 | </xsl:variable>
|
---|
| 446 | <xsl:choose>
|
---|
[56540] | 447 | <xsl:when test="count(key('G_keyInterfacesByName',$tmp)) > 0 or count(key('G_keyEnumsByName',$tmp)) > 0"><!-- link to interface only -->
|
---|
[31735] | 448 | <xsl:attribute name="linkend"><xsl:value-of select="@to" /></xsl:attribute>
|
---|
| 449 | <xsl:value-of select="$tmp" />
|
---|
| 450 | </xsl:when>
|
---|
[56540] | 451 | <xsl:when test="count(key('G_keyEnumsByName',$enumNameFromCombinedName)) > 0">
|
---|
[32309] | 452 | <xsl:attribute name="linkend">
|
---|
| 453 | <xsl:value-of select="concat($enumNameFromCombinedName, '__', $enumValueFromCombinedName)" />
|
---|
| 454 | </xsl:attribute>
|
---|
[31735] | 455 | <xsl:value-of select="$enumValueFromCombinedName" />
|
---|
| 456 | </xsl:when>
|
---|
| 457 | <xsl:otherwise>
|
---|
| 458 | <xsl:variable name="currentif">
|
---|
| 459 | <xsl:call-template name="getCurrentInterface" />
|
---|
| 460 | </xsl:variable>
|
---|
| 461 | <xsl:variable name="if"><!-- interface -->
|
---|
| 462 | <xsl:choose>
|
---|
| 463 | <xsl:when test="contains(@to, '#')">
|
---|
| 464 | <xsl:value-of select="$currentif" />
|
---|
| 465 | </xsl:when>
|
---|
| 466 | <xsl:otherwise>
|
---|
| 467 | <xsl:value-of select="substring-before(@to, '::')" />
|
---|
| 468 | </xsl:otherwise>
|
---|
| 469 | </xsl:choose>
|
---|
| 470 | </xsl:variable>
|
---|
| 471 | <xsl:variable name="member"><!-- member in that interface -->
|
---|
| 472 | <xsl:choose>
|
---|
| 473 | <xsl:when test="contains(@to, '#')">
|
---|
| 474 | <xsl:value-of select="substring-after(@to, '#')" />
|
---|
| 475 | </xsl:when>
|
---|
| 476 | <xsl:otherwise>
|
---|
| 477 | <xsl:value-of select="substring-after(@to, '::')" />
|
---|
| 478 | </xsl:otherwise>
|
---|
| 479 | </xsl:choose>
|
---|
| 480 | </xsl:variable>
|
---|
| 481 |
|
---|
| 482 | <xsl:attribute name="linkend"><xsl:value-of select="concat($if, '__', $member)" /></xsl:attribute>
|
---|
| 483 | <xsl:variable name="autotextsuffix">
|
---|
| 484 | <xsl:choose>
|
---|
| 485 | <!-- if link points to a method, append "()" -->
|
---|
[56540] | 486 | <xsl:when test="key('G_keyInterfacesByName',$if)/method[@name=$member]">
|
---|
[31735] | 487 | <xsl:value-of select="'()'" />
|
---|
| 488 | </xsl:when>
|
---|
| 489 | <!-- if link points to a safearray attribute, append "[]" -->
|
---|
[56540] | 490 | <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]/@safearray = 'yes'">
|
---|
[31735] | 491 | <xsl:value-of select="'[]'" />
|
---|
| 492 | </xsl:when>
|
---|
[56540] | 493 | <xsl:when test="key('G_keyInterfacesByName',$if)/attribute[@name=$member]"/>
|
---|
| 494 | <xsl:when test="key('G_keyEnumsByName',$if)/const[@name=$member]"/>
|
---|
| 495 | <xsl:when test="count(key('G_keyResultsByName',$tmp)) > 0"/>
|
---|
[31735] | 496 | <xsl:otherwise>
|
---|
| 497 | <xsl:message terminate="yes">
|
---|
| 498 | <xsl:value-of select="concat('Invalid link pointing to "', $tmp, '"')" />
|
---|
| 499 | </xsl:message>
|
---|
| 500 | </xsl:otherwise>
|
---|
| 501 | </xsl:choose>
|
---|
| 502 | </xsl:variable>
|
---|
| 503 | <xsl:choose>
|
---|
| 504 | <xsl:when test="./text()"><!-- link text given in source -->
|
---|
| 505 | <xsl:apply-templates />
|
---|
| 506 | </xsl:when>
|
---|
| 507 | <xsl:when test="$if=$currentif"><!-- "near" link to method or attribute in current interface -->
|
---|
| 508 | <xsl:value-of select="concat($member, $autotextsuffix)" />
|
---|
| 509 | </xsl:when>
|
---|
| 510 | <xsl:otherwise><!-- "far" link to other method or attribute -->
|
---|
| 511 | <xsl:value-of select="concat($if, '::', $member, $autotextsuffix)" />
|
---|
| 512 | </xsl:otherwise>
|
---|
| 513 | </xsl:choose>
|
---|
| 514 | </xsl:otherwise>
|
---|
| 515 | </xsl:choose>
|
---|
[56532] | 516 | </link>
|
---|
[31735] | 517 | </xsl:template>
|
---|
| 518 |
|
---|
| 519 | <!-- - - - - - - - - - - - - - - - - - - - - - -
|
---|
| 520 | note
|
---|
| 521 | - - - - - - - - - - - - - - - - - - - - - - -->
|
---|
| 522 |
|
---|
| 523 | <xsl:template match="note">
|
---|
| 524 | <xsl:if test="not(@internal='yes')">
|
---|
[56532] | 525 | <note><para>
|
---|
[31735] | 526 | <xsl:apply-templates />
|
---|
[56532] | 527 | </para></note>
|
---|
[31735] | 528 | </xsl:if>
|
---|
| 529 | </xsl:template>
|
---|
| 530 |
|
---|
| 531 | <xsl:template match="tt">
|
---|
| 532 | <computeroutput>
|
---|
| 533 | <xsl:apply-templates />
|
---|
| 534 | </computeroutput>
|
---|
| 535 | </xsl:template>
|
---|
| 536 |
|
---|
| 537 | <xsl:template match="b">
|
---|
| 538 | <emphasis role="bold">
|
---|
| 539 | <xsl:apply-templates />
|
---|
| 540 | </emphasis>
|
---|
| 541 | </xsl:template>
|
---|
| 542 |
|
---|
| 543 | <xsl:template match="i">
|
---|
| 544 | <emphasis>
|
---|
| 545 | <xsl:apply-templates />
|
---|
| 546 | </emphasis>
|
---|
| 547 | </xsl:template>
|
---|
| 548 |
|
---|
| 549 | <xsl:template match="see">
|
---|
| 550 | <xsl:text>See also: </xsl:text>
|
---|
| 551 | <xsl:apply-templates />
|
---|
| 552 | </xsl:template>
|
---|
| 553 |
|
---|
| 554 | <xsl:template match="ul">
|
---|
| 555 | <itemizedlist>
|
---|
| 556 | <xsl:apply-templates />
|
---|
| 557 | </itemizedlist>
|
---|
| 558 | </xsl:template>
|
---|
| 559 |
|
---|
| 560 | <xsl:template match="ol">
|
---|
| 561 | <orderedlist>
|
---|
| 562 | <xsl:apply-templates />
|
---|
| 563 | </orderedlist>
|
---|
| 564 | </xsl:template>
|
---|
| 565 |
|
---|
| 566 | <xsl:template match="li">
|
---|
| 567 | <listitem>
|
---|
[56532] | 568 | <para>
|
---|
| 569 | <xsl:apply-templates />
|
---|
| 570 | </para>
|
---|
[31735] | 571 | </listitem>
|
---|
| 572 | </xsl:template>
|
---|
| 573 |
|
---|
| 574 | <xsl:template match="h3">
|
---|
| 575 | <emphasis role="bold">
|
---|
| 576 | <xsl:apply-templates />
|
---|
| 577 | </emphasis>
|
---|
| 578 | </xsl:template>
|
---|
| 579 |
|
---|
| 580 | <xsl:template match="pre">
|
---|
| 581 | <screen><xsl:apply-templates /></screen>
|
---|
| 582 | </xsl:template>
|
---|
| 583 |
|
---|
| 584 | <xsl:template match="table">
|
---|
| 585 | <xsl:apply-templates /> <!-- todo -->
|
---|
| 586 | </xsl:template>
|
---|
| 587 |
|
---|
| 588 | </xsl:stylesheet>
|
---|