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