Orb/Doxygen/DITA/plugins/apiref/xsl/apiref2xhtml.xsl
changeset 3 d8fccb2cd802
equal deleted inserted replaced
2:932c358ece3e 3:d8fccb2cd802
       
     1 <?xml version="1.0" encoding="UTF-8" ?>
       
     2 <!--
       
     3  | (C) Copyright IBM Corporation 2005 - 2006. All Rights Reserved.
       
     4  *-->
       
     5 
       
     6 <xsl:stylesheet
       
     7     version="1.0"
       
     8     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       
     9 >
       
    10 
       
    11 <xsl:output method="xml"
       
    12             encoding="utf-8"
       
    13             indent="no"
       
    14 />
       
    15 
       
    16 <xsl:param name="APIREFCSS" select="'ibmapiref.css'"/>
       
    17 <xsl:param name="APIREFCSSRTL" select="'ibmapirefrtl.css'"/>
       
    18 
       
    19 <xsl:param name="FILEREF">file:/</xsl:param>
       
    20 <xsl:param name="WORKDIR" select="'./'"/>
       
    21 
       
    22 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
    23    - Suppressed processing
       
    24    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
    25 <xsl:template match="*[contains(@class,' apiRef/apiDef ')]">
       
    26   <xsl:call-template name="output-message">
       
    27    <xsl:with-param name="msg">apiDef element found. Please either use apiSyntax or provide an XSLT extension to format apiDef for the specific programming language</xsl:with-param>
       
    28   </xsl:call-template>
       
    29   <div style="background-color: #FFFF99; color:#CC3333; border: 1pt black solid;">
       
    30     <xsl:text>apiDef element found. Please either use apiSyntax or provide an XSLT extension to format apiDef for the specific programming language</xsl:text>
       
    31   </div>
       
    32 </xsl:template>
       
    33 <!-- Until P019897, the following rule in the javaRef code always overrode the previous rule.
       
    34      It does not belong in JavaRef, adding it here so we do not start breaking people. -->
       
    35 <xsl:template match="*[contains(@class,' apiRef/apiDef ')]" priority="1"/>
       
    36 
       
    37 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
    38    - Alternatives to base processing
       
    39    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
    40 <xsl:template match="/*[contains(@class,' apiRef/apiRef ')]">
       
    41   <xsl:call-template name="api-chapter-setup"/>
       
    42 </xsl:template>
       
    43 
       
    44 <xsl:template name="api-chapter-setup">
       
    45   <html>
       
    46     <xsl:call-template name="setTopicLanguage"/>
       
    47     <xsl:value-of select="$newline"/>
       
    48     <xsl:call-template name="apiChapterHead"/>
       
    49     <xsl:call-template name="apiChapterBody"/>
       
    50   </html>
       
    51 </xsl:template>
       
    52 
       
    53 <xsl:template name="apiChapterHead">
       
    54   <head><xsl:value-of select="$newline"/>
       
    55     <!-- initial meta information -->
       
    56     <xsl:call-template name="generateCharset"/>   <!-- Set the character set to UTF-8 -->
       
    57     <xsl:call-template name="generateDefaultCopyright"/> <!-- Generate a default copyright, if needed -->
       
    58     <xsl:call-template name="generateDefaultMeta"/> <!-- Standard meta for security, robots, etc -->
       
    59     <xsl:call-template name="getMeta"/>           <!-- Process metadata from topic prolog -->
       
    60     <xsl:call-template name="apiGenerateCssLinks"/>  <!-- Generate links to CSS files -->
       
    61     <xsl:call-template name="generateChapterTitle"/> <!-- Generate the <title> element -->
       
    62     <xsl:call-template name="api-gen-user-head" />    <!-- include user's XSL HEAD processing here -->
       
    63     <xsl:call-template name="api-gen-user-scripts" /> <!-- include user's XSL javascripts here -->
       
    64     <xsl:call-template name="api-gen-user-styles" />  <!-- include user's XSL style element and content here -->
       
    65     <xsl:call-template name="processHDF"/>        <!-- Add user HDF file, if specified -->
       
    66   </head>
       
    67   <xsl:value-of select="$newline"/>
       
    68 </xsl:template>
       
    69 
       
    70 <xsl:template name="apiGenerateCssLinks">
       
    71   <xsl:variable name="childlang"><xsl:call-template name="getLowerCaseLang"/></xsl:variable>
       
    72   <xsl:variable name="urltest">
       
    73     <xsl:call-template name="url-string">
       
    74       <xsl:with-param name="urltext" select="$CSSPATH"/>
       
    75     </xsl:call-template>
       
    76   </xsl:variable>
       
    77   <xsl:call-template name="generateCssLinks"/>  <!-- Generate links to CSS files -->
       
    78   <xsl:choose>
       
    79     <xsl:when test="($childlang='ar-eg' or $childlang='ar' or $childlang='he' or $childlang='he-il') and ($urltest='url')">
       
    80       <link rel="stylesheet" type="text/css" href="{$CSSPATH}{$APIREFCSSRTL}" />
       
    81     </xsl:when>
       
    82     <xsl:when test="($childlang='ar-eg' or $childlang='ar' or $childlang='he' or $childlang='he-il') and ($urltest='')">
       
    83       <link rel="stylesheet" type="text/css" href="{$PATH2PROJ}{$CSSPATH}{$APIREFCSSRTL}" />
       
    84     </xsl:when>
       
    85     <xsl:when test="not($childlang='ar-eg' or $childlang='ar' or $childlang='he' or $childlang='he-il') and ($urltest='url')">
       
    86       <link rel="stylesheet" type="text/css" href="{$CSSPATH}{$APIREFCSS}" />
       
    87     </xsl:when>
       
    88     <xsl:otherwise>
       
    89       <link rel="stylesheet" type="text/css" href="{$PATH2PROJ}{$CSSPATH}{$APIREFCSS}" />
       
    90     </xsl:otherwise>
       
    91   </xsl:choose>
       
    92   <xsl:value-of select="$newline"/>
       
    93 </xsl:template>
       
    94 
       
    95 <xsl:template name="apiChapterBody">
       
    96   <body>
       
    97     <!-- Already put xml:lang on <html>; do not copy to body with commonattributes -->
       
    98     <xsl:call-template name="setidaname"/>
       
    99     <xsl:value-of select="$newline"/>
       
   100     <xsl:call-template name="flagit"/>
       
   101     <xsl:call-template name="start-revflag"/>
       
   102     <xsl:call-template name="generateBreadcrumbs"/>
       
   103     <xsl:call-template name="api-gen-user-header"/>  <!-- include user's XSL running header here -->
       
   104     <xsl:call-template name="processHDR"/>
       
   105     <!-- Include a user's XSL call here to generate a toc based on what's a child of topic -->
       
   106     <xsl:call-template name="api-gen-user-sidetoc"/>
       
   107     <xsl:apply-templates/> <!-- this will include all things within topic; therefore, -->
       
   108                            <!-- title content will appear here by fall-through -->
       
   109                            <!-- followed by prolog (but no fall-through is permitted for it) -->
       
   110                            <!-- followed by body content, again by fall-through in document order -->
       
   111                            <!-- followed by related links -->
       
   112                            <!-- followed by child topics by fall-through -->
       
   113 
       
   114     <xsl:call-template name="gen-endnotes"/>    <!-- include footnote-endnotes -->
       
   115     <xsl:call-template name="api-gen-user-footer"/> <!-- include user's XSL running footer here -->
       
   116     <xsl:call-template name="processFTR"/>      <!-- Include XHTML footer, if specified -->
       
   117     <xsl:call-template name="end-revflag"/>
       
   118   </body>
       
   119   <xsl:value-of select="$newline"/>
       
   120 </xsl:template>
       
   121 
       
   122 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
   123    - Hooks
       
   124    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
   125 <xsl:template name="api-gen-user-head">
       
   126   <!-- by default, execute the default user head -->
       
   127   <xsl:call-template name="gen-user-head"/>
       
   128 </xsl:template>
       
   129 
       
   130 <xsl:template name="api-gen-user-scripts">
       
   131   <!-- by default, execute the default user scripts -->
       
   132   <xsl:call-template name="gen-user-scripts"/>
       
   133 </xsl:template>
       
   134 
       
   135 <xsl:template name="api-gen-user-styles">
       
   136   <!-- by default, execute the default user styles -->
       
   137   <xsl:call-template name="gen-user-styles"/>
       
   138 </xsl:template>
       
   139 
       
   140 <xsl:template name="api-gen-user-header">
       
   141   <!-- by default, execute the default user header -->
       
   142   <xsl:call-template name="gen-user-header"/>
       
   143 </xsl:template>
       
   144 
       
   145 <xsl:template name="api-gen-user-sidetoc">
       
   146   <!-- by default, execute the default user sidetoc -->
       
   147   <xsl:call-template name="gen-user-sidetoc"/>
       
   148 </xsl:template>
       
   149 
       
   150 <xsl:template name="api-gen-user-footer">
       
   151   <!-- by default, execute the default user footer -->
       
   152   <xsl:call-template name="gen-user-footer"/>
       
   153 </xsl:template>
       
   154 
       
   155 
       
   156 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
   157    - Section processing
       
   158    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
   159 <!-- adapted from dit2htm.xsl -->
       
   160 <xsl:template match="*[contains(@class,' apiRef/apiSyntax ')]">
       
   161   <xsl:variable name="syntaxItems"
       
   162           select="*[contains(@class,' apiRef/apiSyntaxItem ')]"/>
       
   163   <xsl:call-template name="start-revflag"/>
       
   164   <xsl:apply-templates select="." mode="sectionTitle">
       
   165     <xsl:with-param name="titleType" select="'Syntax'"/>
       
   166   </xsl:apply-templates>
       
   167   <xsl:apply-templates select="*[contains(@class,' apiRef/apiSyntaxText ')]"/>
       
   168   <xsl:if test="$syntaxItems">
       
   169     <table class="itemdefs">
       
   170       <xsl:apply-templates select="$syntaxItems"/>
       
   171     </table>
       
   172   </xsl:if>
       
   173   <xsl:call-template name="end-revflag"/>
       
   174 </xsl:template>
       
   175 
       
   176 <xsl:template match="*[contains(@class,' apiRef/apiDesc ')]"
       
   177       mode="section-fmt">
       
   178   <xsl:apply-templates select="." mode="sectionFormat">
       
   179     <xsl:with-param name="titleType" select="'Description'"/>
       
   180   </xsl:apply-templates>
       
   181 </xsl:template>
       
   182 
       
   183 <xsl:template match="*[contains(@class,' apiRef/apiImpl ')]"
       
   184       mode="section-fmt">
       
   185   <xsl:apply-templates select="." mode="sectionFormat">
       
   186     <xsl:with-param name="titleType" select="'Implementation'"/>
       
   187   </xsl:apply-templates>
       
   188 </xsl:template>
       
   189 
       
   190 <xsl:template match="*[contains(@class,' topic/example ')][ancestor::*[contains(@class,' apiRef/apiRef ')]]"
       
   191       mode="example-fmt">
       
   192   <xsl:apply-templates select="." mode="sectionFormat">
       
   193     <xsl:with-param name="titleType" select="'Example'"/>
       
   194   </xsl:apply-templates>
       
   195 </xsl:template>
       
   196 
       
   197 <xsl:template match="*[contains(@class,' apiRef/apiDesc ') or
       
   198       contains(@class,' topic/example ')][ancestor::*[contains(@class,' apiRef/apiRef ')]]" mode="sectionFormat">
       
   199   <xsl:param name="titleType"/>
       
   200   <xsl:call-template name="start-revflag"/>
       
   201   <xsl:apply-templates select="." mode="sectionTitle">
       
   202     <xsl:with-param name="titleType" select="$titleType"/>
       
   203   </xsl:apply-templates>
       
   204   <xsl:apply-templates select="*[not(contains(@class,' topic/title '))] |
       
   205           text() | comment() | processing-instruction()"/>
       
   206   <xsl:call-template name="end-revflag"/>
       
   207 </xsl:template>
       
   208 
       
   209 <xsl:template match="*[contains(@class,' topic/section ') or
       
   210       contains(@class,' topic/example ')][ancestor::*[contains(@class,' apiRef/apiRef ')]]" mode="sectionTitle">
       
   211   <xsl:param name="titleType"/>
       
   212   <xsl:variable name="platformTitle">
       
   213     <xsl:call-template name="apiGetPlatformTitle"/>
       
   214   </xsl:variable>
       
   215   <xsl:variable name="title"
       
   216       select="*[contains(@class,' topic/title ')][1]"/>
       
   217   <xsl:variable name="titleText">
       
   218     <xsl:choose>
       
   219     <xsl:when test="$title">
       
   220       <xsl:apply-templates select="$title"/>
       
   221     </xsl:when>
       
   222     <xsl:when test="@spectitle">
       
   223       <xsl:apply-templates select="@spectitle"/>
       
   224     </xsl:when>
       
   225     <!-- These 2 are in the default string list. Others come from the APIRef strings.-->
       
   226     <xsl:when test="$titleType='Syntax' or $titleType='Description'">
       
   227       <xsl:call-template name="getString">
       
   228         <xsl:with-param name="stringName" select="$titleType"/>
       
   229       </xsl:call-template>
       
   230     </xsl:when>
       
   231     <xsl:otherwise>
       
   232       <xsl:call-template name="apiGetString">
       
   233         <xsl:with-param name="stringName" select="$titleType"/>
       
   234       </xsl:call-template>
       
   235     </xsl:otherwise>
       
   236     </xsl:choose>
       
   237   </xsl:variable>
       
   238   <h4 class="sectiontitle">
       
   239     <xsl:if test="$platformTitle and string-length($platformTitle) &gt; 0">
       
   240       <span class="platformSyntax">
       
   241         <xsl:value-of select="$platformTitle"/>
       
   242       </span>
       
   243       <xsl:text> </xsl:text>
       
   244     </xsl:if>
       
   245     <xsl:value-of select="$titleText"/>
       
   246   </h4>
       
   247 </xsl:template>
       
   248 
       
   249 <xsl:template match="*[contains(@class,' apiRef/apiDetail ')]">
       
   250   <xsl:call-template name="topic.body"/>
       
   251   <hr/>
       
   252 </xsl:template>
       
   253 
       
   254 
       
   255 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
   256    - Syntax processing
       
   257    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
   258 <xsl:template match="*[contains(@class,' apiRef/apiSyntaxText ')]">
       
   259   <pre class="apiSyntaxText">
       
   260     <xsl:apply-templates/>
       
   261   </pre>
       
   262 </xsl:template>
       
   263 
       
   264 <xsl:template match="*[contains(@class,' apiRef/apiSyntaxText ')] /
       
   265       *[contains(@class,' apiRef/apiItemName ')]">
       
   266   <span class="itemname">
       
   267     <xsl:apply-templates/>
       
   268   </span>
       
   269 </xsl:template>
       
   270 
       
   271 <xsl:template match="*[contains(@class,' apiRef/apiSyntaxItem ')]">
       
   272   <tr class="itemdef">
       
   273     <td class="itemdefname" valign="top">
       
   274       <xsl:apply-templates
       
   275           select="*[contains(@class,' apiRef/apiItemName ')]"/>
       
   276     </td>
       
   277     <td class="itemdefnote" valign="top">
       
   278       <xsl:apply-templates
       
   279           select="*[contains(@class,' apiRef/apiDefNote ')]"/>
       
   280     </td>
       
   281   </tr>
       
   282 </xsl:template>
       
   283 
       
   284 <xsl:template match="*[contains(@class,' apiRef/apiSyntaxItem ')] /
       
   285       *[contains(@class,' apiRef/apiItemName ')]">
       
   286   <xsl:if test="preceding-sibling::*[contains(@class,' apiRef/apiItemName ')]">
       
   287     <br/>
       
   288   </xsl:if>
       
   289   <xsl:apply-templates/>
       
   290 </xsl:template>
       
   291 
       
   292 <xsl:template match="*[contains(@class,' apiRef/apiDefNote ')]">
       
   293   <xsl:apply-templates/>
       
   294 </xsl:template>
       
   295 
       
   296 <xsl:template match="*[contains(@class,' apiRef/apiDetail ')] /
       
   297       *[contains(@class,' topic/example ')] /
       
   298       *[contains(@class,' topic/pre ') and @platform]">
       
   299   <xsl:variable name="platformTitle">
       
   300     <xsl:call-template name="apiGetPlatformTitle"/>
       
   301   </xsl:variable>
       
   302   <xsl:if test="$platformTitle and string-length($platformTitle) &gt; 0">
       
   303     <p class="platformExample">
       
   304       <xsl:value-of select="$platformTitle"/>
       
   305     </p>
       
   306   </xsl:if>
       
   307   <pre>
       
   308     <xsl:call-template name="commonattributes"/>
       
   309     <xsl:call-template name="setscale"/>
       
   310     <xsl:call-template name="setidaname"/>
       
   311     <xsl:apply-templates/>
       
   312   </pre>
       
   313 </xsl:template>
       
   314 
       
   315 
       
   316 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
   317    - General API processing
       
   318    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
   319 <xsl:template match="*[contains(@class,' apiRef/apiRelation ') and 
       
   320       not(@href)]">
       
   321   <span class="{@class}">
       
   322     <xsl:apply-templates/>
       
   323   </span>
       
   324 </xsl:template>
       
   325 
       
   326 <xsl:template match="*[contains(@class,' topic/xref ') and 
       
   327       contains(@class,' api-d/') and 
       
   328       not(@href)]">
       
   329   <span class="{@class}">
       
   330     <xsl:apply-templates/>
       
   331   </span>
       
   332 </xsl:template>
       
   333 
       
   334 
       
   335 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
       
   336    - Filename manipulation
       
   337    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       
   338 <!-- adapted from topicpull.xsl - should be shared utilities -->
       
   339 <xsl:template name="getTopicFile">
       
   340   <xsl:param name="href" select="@href"/>
       
   341   <xsl:choose>
       
   342   <xsl:when test="contains($href,'://') and contains($href,'#')">
       
   343     <xsl:value-of select="substring-before($href,'#')"/>
       
   344   </xsl:when>
       
   345   <xsl:when test="contains($href,'://')">
       
   346     <xsl:value-of select="$href"/>
       
   347   </xsl:when>
       
   348   <xsl:when test="contains($href,'#')">
       
   349     <xsl:value-of select="$WORKDIR"/>
       
   350     <xsl:value-of select="substring-before($href,'#')"/>
       
   351   </xsl:when>
       
   352   <xsl:otherwise>
       
   353     <xsl:value-of select="$WORKDIR"/>
       
   354     <xsl:value-of select="$href"/>
       
   355   </xsl:otherwise>
       
   356   </xsl:choose>
       
   357 </xsl:template>
       
   358 
       
   359 <xsl:template name="getTopicID">
       
   360   <xsl:param name="href" select="@href"/>
       
   361   <xsl:choose>
       
   362   <xsl:when test="contains($href,'#') and contains(substring-after($href,'#'),'/')">
       
   363     <xsl:value-of select="substring-before(substring-after($href,'#'),'/')"/>
       
   364   </xsl:when>
       
   365   <xsl:when test="contains($href,'#')">
       
   366     <xsl:value-of select="substring-after($href,'#')"/>
       
   367   </xsl:when>
       
   368   <xsl:otherwise>
       
   369     <xsl:text>#none#</xsl:text>
       
   370   </xsl:otherwise>
       
   371   </xsl:choose>
       
   372 </xsl:template>
       
   373 
       
   374 <xsl:template name="getBaseFile">
       
   375   <xsl:param name="file"/>
       
   376   <xsl:choose>
       
   377   <xsl:when test="not($file)"/>
       
   378   <xsl:when test="contains($file,'\')">
       
   379     <xsl:call-template name="getBaseFile">
       
   380       <xsl:with-param name="file" select="substring-after($file,'\')"/>
       
   381     </xsl:call-template>
       
   382   </xsl:when>
       
   383   <xsl:when test="contains($file,'/')">
       
   384     <xsl:call-template name="getBaseFile">
       
   385       <xsl:with-param name="file" select="substring-after($file,'/')"/>
       
   386     </xsl:call-template>
       
   387   </xsl:when>
       
   388   <xsl:otherwise>
       
   389     <xsl:value-of select="$file"/>
       
   390   </xsl:otherwise>
       
   391   </xsl:choose>
       
   392 </xsl:template>
       
   393 
       
   394 <xsl:template name="getFileRoot">
       
   395   <xsl:param name="fileroot"/>
       
   396   <xsl:param name="file"/>
       
   397   <xsl:choose>
       
   398   <xsl:when test="$file and contains($file,'.')">
       
   399     <xsl:variable name="infix" select="substring-before($file,'.')"/>
       
   400     <xsl:variable name="newroot">
       
   401       <xsl:choose>
       
   402       <xsl:when test="$fileroot and $infix">
       
   403         <xsl:value-of select="$fileroot"/>
       
   404         <xsl:text>.</xsl:text>
       
   405         <xsl:value-of select="$infix"/>
       
   406       </xsl:when>
       
   407       <xsl:when test="$infix">
       
   408         <xsl:value-of select="$infix"/>
       
   409       </xsl:when>
       
   410       <xsl:when test="$fileroot">
       
   411         <xsl:value-of select="$fileroot"/>
       
   412       </xsl:when>
       
   413       </xsl:choose>
       
   414     </xsl:variable>
       
   415     <xsl:call-template name="getFileRoot">
       
   416       <xsl:with-param name="fileroot" select="$newroot"/>
       
   417       <xsl:with-param name="file"     select="substring-after($file,'.')"/>
       
   418     </xsl:call-template>
       
   419   </xsl:when>
       
   420   <xsl:when test="$fileroot">
       
   421     <xsl:value-of select="$fileroot"/>
       
   422   </xsl:when>
       
   423   <xsl:when test="$file">
       
   424     <xsl:value-of select="$file"/>
       
   425   </xsl:when>
       
   426   </xsl:choose>
       
   427 </xsl:template>
       
   428 
       
   429 <xsl:template name="getBaseFileRoot">
       
   430   <xsl:param name="file"/>
       
   431   <xsl:variable name="basefile">
       
   432     <xsl:call-template name="getBaseFile">
       
   433       <xsl:with-param name="file" select="$file"/>
       
   434     </xsl:call-template>
       
   435   </xsl:variable>
       
   436   <xsl:call-template name="getFileRoot">
       
   437     <xsl:with-param name="file" select="$basefile"/>
       
   438   </xsl:call-template>
       
   439 </xsl:template>
       
   440 
       
   441 <xsl:template name="apiGetString">
       
   442   <xsl:param name="stringName"/>
       
   443   <xsl:call-template name="getString">
       
   444     <xsl:with-param name="stringName" select="$stringName"/>
       
   445   </xsl:call-template>
       
   446 </xsl:template>
       
   447 
       
   448 <xsl:template name="apiGetPlatformTitle">
       
   449   <xsl:param name="platformList" select="@platform"/>
       
   450   <xsl:param name="platform" select="concat(' ',translate($platformList,
       
   451       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
       
   452       'abcdefghijklmnopqrstuvwxyz'),' ')"/>
       
   453   <xsl:choose>
       
   454   <xsl:when test="not($platformList)"/>
       
   455   <xsl:when test="contains($platform,' c ')">
       
   456     <xsl:call-template name="apiGetString">
       
   457       <xsl:with-param name="stringName" select="'platform.c'"/>
       
   458     </xsl:call-template>
       
   459   </xsl:when>
       
   460   <xsl:when test="contains($platform,' cpp ')">
       
   461     <xsl:call-template name="apiGetString">
       
   462       <xsl:with-param name="stringName" select="'platform.cpp'"/>
       
   463     </xsl:call-template>
       
   464   </xsl:when>
       
   465   <xsl:when test="contains($platform,' java ')">
       
   466     <xsl:call-template name="apiGetString">
       
   467       <xsl:with-param name="stringName" select="'platform.java'"/>
       
   468     </xsl:call-template>
       
   469   </xsl:when>
       
   470   <xsl:when test="contains($platform,' javascript ')">
       
   471     <xsl:call-template name="apiGetString">
       
   472       <xsl:with-param name="stringName" select="'platform.javascript'"/>
       
   473     </xsl:call-template>
       
   474   </xsl:when>
       
   475   <xsl:when test="contains($platform,' perl ')">
       
   476     <xsl:call-template name="apiGetString">
       
   477       <xsl:with-param name="stringName" select="'platform.perl'"/>
       
   478     </xsl:call-template>
       
   479   </xsl:when>
       
   480   <xsl:when test="contains($platform,' vb ')">
       
   481     <xsl:call-template name="apiGetString">
       
   482       <xsl:with-param name="stringName" select="'platform.vb'"/>
       
   483     </xsl:call-template>
       
   484   </xsl:when>
       
   485   <xsl:otherwise/>
       
   486   </xsl:choose>
       
   487 </xsl:template>
       
   488 
       
   489 </xsl:stylesheet>