1 <?xml version="1.0"?> 
   2 <!--
   3  Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
   4  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5 
   6  This code is free software; you can redistribute it and/or modify it
   7  under the terms of the GNU General Public License version 2 only, as
   8  published by the Free Software Foundation.
   9 
  10  This code is distributed in the hope that it will be useful, but WITHOUT
  11  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13  version 2 for more details (a copy is included in the LICENSE file that
  14  accompanied this code).
  15 
  16  You should have received a copy of the GNU General Public License version
  17  2 along with this work; if not, write to the Free Software Foundation,
  18  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 
  20  Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21  or visit www.oracle.com if you need additional information or have any
  22  questions.
  23   
  24 -->
  25 
  26 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  27 
  28 <xsl:import href="jvmtiLib.xsl"/>
  29 
  30 <xsl:output method="html" indent="yes" 
  31   doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
  32   doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
  33 
  34 <xsl:param name="development"></xsl:param>
  35 
  36 <xsl:template match="specification">
  37   <html>
  38   <head>
  39         <title>
  40           <xsl:value-of select="@label"/>
  41           <xsl:text> </xsl:text>
  42           <xsl:call-template name="showversion"/>
  43         </title>
  44         <style type="text/css">
  45           td.tableHeader {font-size: larger}
  46         </style>
  47   </head>
  48   <body>
  49     <table border="0" width="100%">
  50       <tr>
  51         <td align="center">
  52           <xsl:apply-templates select="title"/>
  53         </td>
  54       </tr>
  55     </table>
  56     <ul>
  57       <li>
  58         <a href="#SpecificationIntro"><b>Introduction</b></a>
  59         <ul>
  60           <xsl:for-each select="intro">
  61             <li>
  62               <a>
  63                 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
  64                 </xsl:attribute>
  65                 <b><xsl:value-of select="@label"/></b>
  66               </a>
  67             </li>
  68           </xsl:for-each>
  69         </ul>
  70       </li>
  71       <li>
  72         <a href="#FunctionSection"><b>Functions</b></a>
  73         <ul>
  74           <xsl:for-each select="functionsection/intro">
  75             <li>
  76               <a>
  77                 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
  78                 </xsl:attribute>
  79                 <b><xsl:value-of select="@label"/></b>
  80               </a>
  81             </li>
  82           </xsl:for-each>
  83           <li>
  84             <a href="#FunctionIndex"><b>Function Index</b></a>
  85             <ul>
  86               <xsl:for-each select="functionsection/category">
  87                 <li>
  88                   <a>
  89                     <xsl:attribute name="href">#<xsl:value-of select="@id"/>
  90                     </xsl:attribute>
  91                     <b><xsl:value-of select="@label"/></b>
  92                   </a>
  93                 </li>
  94               </xsl:for-each>
  95             </ul>
  96           </li>
  97           <li>
  98             <a href="#ErrorSection"><b>Error Codes</b></a>
  99           </li>
 100         </ul>
 101       </li>
 102       <li>
 103         <a href="#EventSection"><b>Events</b></a>
 104         <ul>
 105           <li>
 106             <a href="#EventIndex"><b>Event Index</b></a>
 107           </li>
 108         </ul>
 109       </li>
 110       <li>
 111         <a href="#DataSection"><b>Data Types</b></a>
 112         <ul>
 113           <xsl:for-each select="//basetypes">   
 114           <li>
 115             <a>
 116               <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
 117               <b>
 118                 <xsl:value-of select="@label"/>
 119               </b>
 120             </a>
 121           </li>
 122           </xsl:for-each>
 123           <li>
 124             <a href="#StructureTypeDefinitions"><b>Structure Type Definitions</b></a>
 125           </li>
 126           <li>
 127             <a href="#FunctionTypeDefinitions"><b>Function Type Definitions</b></a>
 128           </li>
 129           <li>
 130             <a href="#EnumerationDefinitions"><b>Enumeration Definitions</b></a>
 131           </li>
 132           <li>
 133             <a href="#FunctionTable"><b>Function Table</b></a>
 134           </li>
 135         </ul>
 136       </li>
 137       <li>
 138         <a href="#ConstantIndex"><b>Constant Index</b></a>
 139       </li>
 140       <xsl:if test="$development = 'Show'">
 141         <li>
 142           <a href="#SpecificationIssues"><b>Issues</b></a>
 143           <ul>
 144             <xsl:for-each select="issuessection/intro">
 145               <li>
 146                 <a>
 147                   <xsl:attribute name="href">#<xsl:value-of select="@id"/>
 148                   </xsl:attribute>
 149                   <b><xsl:value-of select="@label"/></b>
 150                 </a>
 151               </li>
 152             </xsl:for-each>
 153           </ul>
 154         </li>
 155       </xsl:if>
 156       <li>
 157         <a href="#ChangeHistory"><b>Change History</b></a>
 158       </li>
 159     </ul>
 160     <!-- end table of contents, begin body -->
 161     <p/>
 162     <hr noshade="noshade" size="3"/>
 163     <p/>
 164     <p id="SpecificationIntro"/>
 165       <xsl:apply-templates select="intro"/>
 166     <p id="FunctionSection"/>
 167       <xsl:apply-templates select="functionsection"/>
 168     <p id="ErrorSection"/>
 169       <xsl:apply-templates select="errorsection"/>
 170     <p id="DataSection"/>
 171       <xsl:apply-templates select="datasection"/>
 172     <p id="EventSection"/>
 173       <xsl:apply-templates select="eventsection"/>
 174     <p id="ConstantIndex"/>
 175       <p/>
 176       <hr noshade="noshade" size="3"/>
 177       <h2>
 178         Constant Index
 179       </h2>
 180       <blockquote>
 181         <xsl:apply-templates select="//constant" mode="index">
 182           <xsl:sort select="@id"/>
 183         </xsl:apply-templates>
 184       </blockquote>
 185     <xsl:if test="$development = 'Show'">
 186       <p id="SpecificationIssues"/>
 187       <p/>
 188       <hr noshade="noshade" size="3"/>
 189       <h2>
 190         <xsl:value-of select="issuessection/@label"/>
 191       </h2>
 192       <xsl:apply-templates select="issuessection/intro"/>
 193     </xsl:if>
 194     <p id="ChangeHistory"/>
 195       <xsl:apply-templates select="changehistory"/>
 196   </body>
 197 </html>
 198 </xsl:template>
 199 
 200 <xsl:template match="title">
 201     <h1>
 202       <xsl:apply-templates/>
 203     </h1>
 204     <h3>
 205       <xsl:value-of select="@subtitle"/>
 206       <xsl:text> </xsl:text>
 207       <xsl:call-template name="showbasicversion"/>
 208     </h3>
 209 </xsl:template>
 210 
 211 <xsl:template match="functionsection">
 212   <p/>
 213   <hr noshade="noshade" size="3"/>
 214   <h2>
 215     <xsl:value-of select="@label"/>
 216   </h2>
 217   <xsl:apply-templates select="intro"/>
 218   <h3 id="FunctionIndex">Function Index</h3>
 219   <ul>
 220     <xsl:apply-templates select="category" mode="index"/>
 221   </ul>
 222   <xsl:apply-templates select="category" mode="body"/>
 223 </xsl:template>
 224 
 225 <xsl:template match="category" mode="index">
 226   <li>
 227     <a>
 228       <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
 229       <b>
 230         <xsl:value-of select="@label"/>
 231       </b>
 232     </a>
 233     <ul>
 234       <xsl:apply-templates select="function[count(@hide)=0]" mode="index"/>
 235     </ul>
 236   </li>
 237 </xsl:template>
 238 
 239 <xsl:template match="function|callback" mode="index">
 240   <li>
 241     <a>
 242       <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
 243       <xsl:apply-templates select="synopsis" mode="index"/>
 244     </a>
 245   </li>
 246 </xsl:template>
 247 
 248 <xsl:template match="synopsis" mode="index">
 249     <xsl:value-of select="."/>
 250 </xsl:template>
 251 
 252 <xsl:template match="category" mode="body">
 253   <p>
 254     <xsl:attribute name="id">
 255       <xsl:value-of select="@id"/>
 256     </xsl:attribute>
 257   </p>
 258   <hr noshade="noshade" size="3"/>
 259   <h2 align="center"><xsl:value-of select="@label"/></h2>
 260   <xsl:value-of select="@label"/> functions:
 261   <ul>
 262     <xsl:apply-templates select="function[count(@hide)=0]" mode="index"/>
 263   </ul>
 264   <xsl:variable name="calltypes" select="callback"/>
 265   <xsl:if test="count($calltypes)!=0">
 266     <xsl:value-of select="@label"/> function types:
 267     <ul>
 268       <xsl:apply-templates select="$calltypes" mode="index"/>
 269     </ul>
 270   </xsl:if>
 271   <xsl:variable name="cattypes" 
 272     select="(descendant::typedef|descendant::uniontypedef|descendant::capabilitiestypedef|descendant::constants[@kind='enum'])"/>
 273   <xsl:if test="count($cattypes)!=0">
 274     <xsl:value-of select="@label"/> types:
 275     <ul>
 276       <xsl:for-each select="$cattypes">
 277         <li>
 278           <a>
 279             <xsl:attribute name="href">
 280               <xsl:text>#</xsl:text>
 281               <xsl:value-of select="@id"/>
 282             </xsl:attribute>
 283             <code><xsl:value-of select="@id"/></code>
 284           </a>
 285           <xsl:text> - </xsl:text>
 286           <xsl:value-of select="@label"/>
 287         </li>
 288       </xsl:for-each>
 289     </ul>    
 290   </xsl:if>
 291   <xsl:variable name="catconst" 
 292     select="(descendant::constants[@kind!='enum'])"/>
 293   <xsl:if test="count($catconst)!=0">
 294     <xsl:value-of select="@label"/> flags and constants:
 295     <ul>
 296       <xsl:for-each select="$catconst">
 297         <li>
 298           <a>
 299             <xsl:attribute name="href">
 300               <xsl:text>#</xsl:text>
 301               <xsl:value-of select="@id"/>
 302             </xsl:attribute>
 303             <xsl:value-of select="@label"/>
 304           </a>
 305         </li>
 306       </xsl:for-each>
 307     </ul>    
 308   </xsl:if>
 309   <xsl:apply-templates select="intro|typedef|uniontypedef|capabilitiestypedef"/>
 310   <p/>
 311   <xsl:apply-templates select="function[count(@hide)=0]|callback" mode="body"/>
 312 </xsl:template>
 313 
 314 <xsl:template match="function" mode="body">
 315   <hr noshade="noshade" width="100%" size="1">
 316     <xsl:attribute name="id">
 317       <xsl:value-of select="@id"/>
 318     </xsl:attribute>
 319     
 320   </hr>
 321   <xsl:apply-templates select="synopsis" mode="body"/>
 322   <blockquote>
 323     <xsl:apply-templates select="typedef" mode="code"/>
 324     <xsl:apply-templates select="descendant::constants[@kind='enum']" mode="signature"/>
 325     <pre>
 326       <xsl:text>jvmtiError
 327 </xsl:text>
 328       <xsl:value-of select="@id"/>(jvmtiEnv* env<xsl:apply-templates select="parameters" mode="signature"/>)</pre>
 329   </blockquote>
 330   <xsl:apply-templates select="description"/>
 331   <xsl:apply-templates select="." mode="generalinfo"/>
 332   <xsl:apply-templates select="capabilities|eventcapabilities"/>
 333   <xsl:apply-templates select="typedef" mode="body"/>
 334   <xsl:apply-templates select="parameters" mode="body"/>
 335   <xsl:apply-templates select="." mode="errors"/>
 336 </xsl:template>
 337 
 338 <xsl:template match="function" mode="generalinfo">
 339   <table border="1" cellpadding="3" cellspacing="0" width="100%">
 340     <tr bgcolor="#EEEEFF">
 341       <td >
 342         <a href="#jvmtiPhase">Phase</a>
 343       </td>
 344       <td>
 345         <a href="#heapCallbacks">Callback Safe</a>
 346       </td>
 347       <td>
 348         <a href="#FunctionTable">Position</a>
 349       </td>
 350       <td>
 351         <a href="#ChangeHistory">Since</a>
 352       </td>
 353     </tr>
 354     <tr>
 355       <td >
 356         <xsl:apply-templates select="." mode="phaseinfo"/>
 357       </td>
 358       <td>
 359         <xsl:apply-templates select="." mode="callbacksafeinfo"/>
 360       </td>
 361       <td>
 362         <xsl:value-of select="@num"/>
 363       </td>
 364       <td>
 365         <xsl:value-of select="@since"/>
 366       </td>
 367     </tr>
 368   </table>
 369 </xsl:template>
 370 
 371 <xsl:template match="event" mode="generalinfo">
 372   <table border="1" cellpadding="3" cellspacing="0" width="100%">
 373     <tr bgcolor="#EEEEFF">
 374       <td >
 375         <a href="#jvmtiPhase">Phase</a>
 376       </td>
 377       <td>
 378         <a href="#jvmtiEvent">Event Type</a>
 379       </td>
 380       <td>
 381         <a href="#jvmtiEvent">Number</a>
 382       </td>
 383       <td>
 384         <a href="#enablingevents">Enabling</a>
 385       </td>
 386       <td>
 387         <a href="#ChangeHistory">Since</a>
 388       </td>
 389     </tr>
 390     <tr>
 391       <td >
 392         <xsl:apply-templates select="." mode="phaseinfo"/>
 393       </td>
 394       <td>
 395         <code><xsl:value-of select="@const"/></code>
 396       </td>
 397       <td>
 398         <xsl:value-of select="@num"/>
 399       </td>
 400       <td>
 401           <code><a href="#SetEventNotificationMode">SetEventNotificationMode</a>(JVMTI_ENABLE, 
 402           <xsl:value-of select="@const"/>, NULL)</code>
 403       </td>
 404       <td>
 405         <xsl:value-of select="@since"/>
 406       </td>
 407     </tr>
 408   </table>
 409 </xsl:template>
 410 
 411 <xsl:template match="function" mode="phaseinfo">
 412   may
 413   <xsl:choose>
 414     <xsl:when test="count(@phase) = 0 or @phase = 'live'">
 415       only be called during the live
 416     </xsl:when>
 417     <xsl:otherwise>
 418       <xsl:choose>
 419         <xsl:when test="@phase = 'onload'">
 420           only be called during the OnLoad or the live
 421         </xsl:when>
 422         <xsl:otherwise>
 423           <xsl:choose>
 424             <xsl:when test="@phase = 'any'">
 425               be called during any
 426             </xsl:when>
 427             <xsl:otherwise>
 428               <xsl:choose>
 429                 <xsl:when test="@phase = 'start'">
 430                   only be called during the start or the live
 431                 </xsl:when>
 432                 <xsl:otherwise>
 433                   <xsl:choose>
 434                     <xsl:when test="@phase = 'onloadOnly'">
 435                       only be called during the OnLoad
 436                     </xsl:when>
 437                     <xsl:otherwise>
 438                       <xsl:message terminate="yes">
 439                         bad phase - <xsl:value-of select="@phase"/>
 440                       </xsl:message>
 441                     </xsl:otherwise>
 442                   </xsl:choose>
 443                 </xsl:otherwise>
 444             </xsl:choose>
 445             </xsl:otherwise>
 446           </xsl:choose>
 447         </xsl:otherwise>
 448       </xsl:choose>
 449     </xsl:otherwise>
 450   </xsl:choose>
 451   phase
 452 </xsl:template>
 453 
 454 
 455 <xsl:template match="event" mode="phaseinfo">
 456   sent
 457   <xsl:choose>
 458     <xsl:when test="count(@phase) = 0 or @phase = 'live'">
 459       only during the live
 460     </xsl:when>
 461     <xsl:otherwise>
 462       <xsl:choose>
 463         <xsl:when test="@phase = 'any'">
 464           during the primordial, start or live
 465         </xsl:when>
 466         <xsl:otherwise>
 467           <xsl:choose>
 468             <xsl:when test="@phase = 'start'">
 469               during the start or live
 470             </xsl:when>
 471             <xsl:otherwise>
 472               <xsl:message terminate="yes">
 473                 bad phase - <xsl:value-of select="@phase"/>
 474               </xsl:message>
 475             </xsl:otherwise>
 476           </xsl:choose>
 477         </xsl:otherwise>
 478       </xsl:choose>
 479     </xsl:otherwise>
 480   </xsl:choose>
 481   phase
 482 </xsl:template>
 483 
 484 
 485 <xsl:template match="function" mode="callbacksafeinfo">
 486   <xsl:choose>
 487     <xsl:when test="contains(@callbacksafe,'safe')">
 488     This function may be called from the callbacks to the
 489     <a href="#Heap">Heap</a> iteration functions, or from the
 490     event handlers for the 
 491     <a href="#GarbageCollectionStart"><code>GarbageCollectionStart</code></a>,
 492     <a href="#GarbageCollectionFinish"><code>GarbageCollectionFinish</code></a>,
 493     and <a href="#ObjectFree"><code>ObjectFree</code></a> events.
 494     </xsl:when>
 495     <xsl:otherwise>
 496       No
 497     </xsl:otherwise>
 498   </xsl:choose>
 499 </xsl:template>
 500 
 501 
 502 <xsl:template match="callback" mode="body">
 503   <hr noshade="noshade" width="100%" size="1">
 504     <xsl:attribute name="id">
 505       <xsl:value-of select="@id"/>
 506     </xsl:attribute>
 507   </hr>
 508   <xsl:apply-templates select="synopsis" mode="body"/>
 509   <table cellpadding="0" cellspacing="0" border="0" width="90%" align="center"><tr><td>
 510   <blockquote>
 511     <pre>
 512       <xsl:text>typedef </xsl:text>
 513       <xsl:apply-templates select="child::*[position()=1]" mode="signature"/>
 514       <xsl:text> (JNICALL *</xsl:text>
 515       <xsl:value-of select="@id"/>
 516       <xsl:text>)
 517     (</xsl:text>
 518       <xsl:for-each select="parameters">
 519         <xsl:apply-templates select="param[position()=1]" mode="signature"/>
 520         <xsl:for-each select="param[position()>1]">
 521           <xsl:text>, 
 522      </xsl:text>
 523           <xsl:apply-templates select="." mode="signature"/>
 524         </xsl:for-each>
 525       </xsl:for-each>
 526       <xsl:text>);</xsl:text>
 527     </pre>
 528   </blockquote>
 529   <xsl:apply-templates select="description"/>
 530   <xsl:apply-templates select="parameters" mode="body"/>
 531 </td></tr></table>
 532 </xsl:template>
 533 
 534 <xsl:template match="synopsis" mode="body">
 535   <h3><xsl:value-of select="."/></h3>
 536 </xsl:template>
 537 
 538 <xsl:template match="eventsection">
 539   <p/>
 540   <hr noshade="noshade" size="3"/>
 541   <h2>
 542     <xsl:value-of select="@label"/>
 543   </h2>
 544   <xsl:apply-templates select="intro"/>
 545   <blockquote>
 546   <pre>
 547   <xsl:text>
 548 typedef struct {
 549 </xsl:text>
 550   <xsl:call-template name="eventStruct">
 551     <xsl:with-param name="events" select="event"/>
 552     <xsl:with-param name="index" select="0"/>
 553     <xsl:with-param name="started" select="false"/>
 554     <xsl:with-param name="comment" select="'No'"/>
 555   </xsl:call-template>
 556   <xsl:text>} jvmtiEventCallbacks;
 557 </xsl:text>
 558   </pre>
 559   </blockquote>
 560   <p/>
 561   <hr noshade="noshade" width="100%" size="1"/>
 562   <h3 id="EventIndex">Event Index</h3>
 563   <ul>
 564     <xsl:apply-templates select="event" mode="index">
 565       <xsl:sort select="@label"/>
 566     </xsl:apply-templates>
 567   </ul>
 568   <xsl:apply-templates select="event" mode="body"/>
 569 </xsl:template>
 570 
 571 <xsl:template match="event" mode="index">
 572   <li>
 573     <a>
 574       <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
 575       <b>
 576         <xsl:value-of select="@label"/>
 577       </b>
 578     </a>
 579   </li>
 580 </xsl:template>
 581 
 582 <xsl:template match="event" mode="body">
 583   <p>
 584     <xsl:attribute name="id">
 585       <xsl:value-of select="@id"/>
 586     </xsl:attribute>
 587   </p>
 588   <hr noshade="noshade" size="3"/>
 589   <h2><xsl:value-of select="@label"/></h2>
 590   <p/>
 591   <blockquote>
 592     <xsl:apply-templates select="typedef" mode="code"/>
 593     <pre>
 594 <xsl:text>void JNICALL
 595 </xsl:text>
 596       <xsl:value-of select="@id"/>(jvmtiEnv *jvmti_env<xsl:apply-templates select="parameters" mode="signature"/>)</pre>
 597   </blockquote>
 598   <xsl:apply-templates select="description"/>
 599   <xsl:apply-templates select="." mode="generalinfo"/>
 600   <xsl:apply-templates select="typedef" mode="body"/>
 601   <xsl:apply-templates select="capabilities"/>
 602   <xsl:apply-templates select="parameters" mode="body"/>
 603 </xsl:template>
 604 
 605 <xsl:template match="capabilitiestypedef" mode="code">
 606   <blockquote>
 607     <pre>
 608       <xsl:apply-templates select="." mode="genstruct"/>
 609     </pre>
 610   </blockquote>
 611 </xsl:template>
 612 
 613 <xsl:template match="typedef" mode="code">
 614   <pre>
 615   <xsl:call-template name="gentypedef">
 616     <xsl:with-param name="tdef" select="."/>
 617   </xsl:call-template>
 618   </pre>
 619 </xsl:template>
 620 
 621 <xsl:template match="uniontypedef" mode="code">
 622   <pre>
 623   <xsl:call-template name="genuniontypedef">
 624     <xsl:with-param name="tdef" select="."/>
 625   </xsl:call-template>
 626   </pre>
 627 </xsl:template>
 628 
 629 <xsl:template match="capabilitiestypedef|typedef|uniontypedef" mode="description">
 630   <xsl:apply-templates select="description"/>
 631 </xsl:template>
 632 
 633 <xsl:template match="capabilitiestypedef|typedef|uniontypedef">
 634   <h4>
 635     <xsl:attribute name="id">
 636       <xsl:value-of select="@id"/>
 637     </xsl:attribute>
 638     <xsl:value-of select="@label"/>
 639   </h4>
 640   <xsl:apply-templates select="." mode="description"/>
 641   <blockquote>
 642     <xsl:apply-templates select="." mode="code"/>
 643     <xsl:apply-templates select="." mode="justbody"/>
 644   </blockquote>
 645 </xsl:template>
 646 
 647 <xsl:template match="constants" mode="signature">
 648   <pre>
 649   <xsl:apply-templates select="." mode="enum"/>
 650   </pre>
 651 </xsl:template>
 652 
 653 <xsl:template match="typedef|uniontypedef" mode="body">
 654   <p>
 655     <xsl:attribute name="id">
 656       <xsl:value-of select="@id"/>
 657     </xsl:attribute>
 658   </p>
 659   <xsl:apply-templates select="." mode="justbody"/>
 660 </xsl:template>
 661 
 662 <xsl:template match="typedef|uniontypedef" mode="justbody">
 663     <table border="1" cellpadding="3" cellspacing="0" width="100%">
 664       <tr bgcolor="#CCCCFF">
 665         <td colspan="3" align="center" class="tableHeader">
 666           <code><xsl:value-of select="@id"/></code> - <xsl:value-of select="@label"/>
 667         </td>
 668       </tr>
 669       <tr bgcolor="#EEEEFF">
 670         <td>
 671           Field
 672         </td>
 673         <td>
 674           Type
 675         </td>
 676         <td>
 677           Description
 678         </td>
 679       </tr>
 680       <xsl:apply-templates select="field" mode="body"/>
 681     </table>
 682 </xsl:template>
 683 
 684 <xsl:template match="capabilitiestypedef" mode="body">
 685   <p>
 686     <xsl:attribute name="id">
 687       <xsl:value-of select="@id"/>
 688     </xsl:attribute>
 689   </p>
 690   <xsl:apply-templates select="." mode="justbody"/>
 691 </xsl:template>
 692 
 693 <xsl:template match="capabilitiestypedef" mode="justbody">
 694     <table border="1" cellpadding="3" cellspacing="0" width="100%">
 695       <tr bgcolor="#CCCCFF">
 696         <td colspan="3" align="center" class="tableHeader">
 697           <code><xsl:value-of select="@id"/></code> - <xsl:value-of select="@label"/>
 698         </td>
 699       </tr>
 700       <tr bgcolor="#EEEEFF">
 701         <td colspan="3">
 702           All types are <code>unsigned int : 1</code>
 703         </td>
 704       </tr>
 705       <tr bgcolor="#EEEEFF">
 706         <td>
 707           Field
 708         </td>
 709         <td>
 710           Description
 711         </td>
 712         <td>
 713           <a href="#ChangeHistory">Since</a>
 714         </td>
 715       </tr>
 716       <xsl:apply-templates select="capabilityfield" mode="body"/>
 717     </table>
 718 </xsl:template>
 719 
 720 <xsl:template match="typedef|uniontypedef|capabilitiestypedef|constants" mode="tableentry">
 721   <tr>
 722     <td>
 723       <a>
 724         <xsl:attribute name="href">
 725           <xsl:text>#</xsl:text>
 726           <xsl:value-of select="@id"/>
 727         </xsl:attribute>
 728         <code><xsl:value-of select="@id"/></code>
 729       </a>
 730     </td>
 731     <td>
 732       <xsl:value-of select="@label"/>
 733     </td>
 734   </tr>
 735 </xsl:template>
 736 
 737 <xsl:template match="field" mode="body">
 738   <tr>
 739     <td>
 740       <code>
 741         <xsl:attribute name="id">
 742           <xsl:value-of select="../@id"/>.<xsl:value-of select="@id"/>
 743         </xsl:attribute>
 744         <xsl:value-of select="@id"/>
 745       </code>
 746     </td>
 747     <td>
 748       <code>
 749         <xsl:apply-templates select="child::*[position()=1]" mode="link"/>
 750       </code>
 751     </td>
 752     <td>
 753       <xsl:apply-templates select="description" mode="brief"/>
 754     </td>
 755   </tr>
 756 </xsl:template>
 757 
 758 <xsl:template match="capabilityfield" mode="body">
 759   <tr>
 760     <td>
 761       <code>
 762         <xsl:choose>
 763           <xsl:when test="@disp1!=''">
 764             <xsl:value-of select="@disp1"/>
 765             <br></br>
 766             <xsl:value-of select="@disp2"/>
 767           </xsl:when>
 768           <xsl:otherwise>
 769             <xsl:value-of select="@id"/>
 770           </xsl:otherwise>
 771         </xsl:choose>
 772       </code>
 773     </td>
 774     <td>
 775       <a>
 776         <xsl:attribute name="name">
 777           <xsl:value-of select="../@id"/>.<xsl:value-of select="@id"/>
 778         </xsl:attribute>
 779       </a>
 780       <xsl:apply-templates select="description" mode="brief"/>
 781     </td>
 782     <td>
 783       <xsl:value-of select="@since"/>
 784     </td>
 785   </tr>
 786 </xsl:template>
 787 
 788 <xsl:template match="callback" mode="tableentry">
 789   <tr>
 790     <td>
 791       <a>
 792         <xsl:attribute name="href">
 793           <xsl:text>#</xsl:text>
 794           <xsl:value-of select="@id"/>
 795         </xsl:attribute>
 796         <code>
 797           <xsl:value-of select="@id"/>
 798         </code>
 799       </a>
 800     </td>
 801     <td>
 802       <xsl:apply-templates select="synopsis" mode="index"/>
 803     </td>
 804   </tr>
 805 </xsl:template>
 806 
 807 <xsl:template match="constants">
 808   <blockquote>
 809   <a>
 810     <xsl:attribute name="name">
 811       <xsl:value-of select="@id"/>
 812     </xsl:attribute>
 813   </a>
 814     <table border="1" cellpadding="3" cellspacing="0">
 815       <tr bgcolor="#CCCCFF">
 816         <td colspan="3" align="center" class="tableHeader">
 817             <xsl:value-of select="@label"/>
 818             <xsl:if test="@kind='enum'">
 819               <xsl:text> (</xsl:text>
 820               <code>
 821                 <xsl:value-of select="@id"/>
 822               </code>
 823               <xsl:text>)</xsl:text>
 824             </xsl:if>
 825         </td>
 826       </tr>
 827       <tr bgcolor="#EEEEFF">
 828         <td>
 829           Constant
 830         </td>
 831         <td>
 832           Value
 833         </td>
 834         <td>
 835           Description
 836         </td>
 837       </tr>
 838       <xsl:apply-templates select="constant" mode="body"/>
 839     </table>
 840   </blockquote>
 841 </xsl:template>
 842 
 843 <xsl:template match="constant" mode="index">
 844   <a>
 845     <xsl:attribute name="href">#<xsl:value-of select="@id"/>
 846     </xsl:attribute>
 847     <code>
 848       <xsl:value-of select="@id"/>
 849     </code>
 850   </a>
 851   <br/>
 852 </xsl:template>
 853 
 854 <xsl:template match="constant" mode="body">
 855   <tr>
 856     <td>
 857       <code>
 858         <xsl:attribute name="id">
 859           <xsl:value-of select="@id"/>
 860         </xsl:attribute>
 861         <xsl:value-of select="@id"/>
 862       </code>
 863     </td>
 864     <td align="right">
 865       <xsl:value-of select="@num"/>
 866     </td>
 867     <td>
 868       <xsl:apply-templates/>
 869     </td>
 870   </tr>
 871 </xsl:template>
 872 
 873 <xsl:template match="basetypes">
 874   <p>
 875     <xsl:attribute name="id">
 876       <xsl:value-of select="@id"/>
 877     </xsl:attribute>
 878   </p>
 879     <table border="1" cellpadding="3" cellspacing="0" width="100%">
 880       <tr bgcolor="#CCCCFF">
 881         <td colspan="2" align="center" class="tableHeader">
 882           <xsl:value-of select="@label"/>
 883         </td>
 884       </tr>
 885       <tr bgcolor="#EEEEFF">
 886         <td>
 887           Type
 888         </td>
 889         <td>
 890           Description
 891         </td>
 892       </tr>
 893       <xsl:apply-templates select="basetype" mode="body"/>
 894     </table>
 895 </xsl:template>
 896 
 897 <xsl:template match="basetype" mode="body">
 898   <xsl:choose>
 899     <xsl:when test="count(definition)=0">
 900       <tr>
 901         <td>
 902           <code>
 903             <xsl:value-of select="@id"/>
 904           </code>
 905         </td>
 906         <td>
 907           <a>
 908             <xsl:attribute name="name">
 909               <xsl:value-of select="@id"/>
 910             </xsl:attribute>
 911           </a>
 912           <xsl:apply-templates select="description" mode="brief"/>
 913         </td>
 914       </tr>      
 915     </xsl:when>
 916     <xsl:otherwise>
 917       <tr>
 918         <td rowspan="2">
 919           <code>
 920             <xsl:value-of select="@id"/>
 921           </code>
 922         </td>
 923         <td>
 924           <a>
 925             <xsl:attribute name="name">
 926               <xsl:value-of select="@id"/>
 927             </xsl:attribute>
 928           </a>
 929           <xsl:apply-templates select="description" mode="brief"/>
 930         </td>
 931       </tr>      
 932       <tr>
 933         <td>
 934           <pre>
 935             <xsl:apply-templates select="definition"/>
 936           </pre>          
 937         </td>
 938       </tr>
 939     </xsl:otherwise>
 940   </xsl:choose>
 941 </xsl:template>
 942 
 943 <xsl:template match="description">
 944   <xsl:apply-templates/>
 945   <p/>
 946 </xsl:template>
 947 
 948 <xsl:template match="description" mode="brief">
 949   <xsl:apply-templates/>
 950 </xsl:template>
 951 
 952 <xsl:template match="fieldlink">
 953   <a>
 954     <xsl:attribute name="href">#<xsl:value-of select="@struct"/>.<xsl:value-of select="@id"/></xsl:attribute>
 955     <xsl:choose>
 956       <xsl:when test=".=''">
 957         <code>
 958           <xsl:value-of select="@id"/>
 959         </code>        
 960       </xsl:when>
 961       <xsl:otherwise>
 962         <xsl:apply-templates/>
 963       </xsl:otherwise>
 964     </xsl:choose>
 965   </a>
 966 </xsl:template>
 967 
 968 <xsl:template match="paramlink">
 969   <a>
 970     <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="@id"/>
 971     </xsl:attribute>
 972     <xsl:choose>
 973       <xsl:when test=".=''">
 974         <code>
 975           <xsl:value-of select="@id"/>
 976         </code>        
 977       </xsl:when>
 978       <xsl:otherwise>
 979         <xsl:apply-templates/>
 980       </xsl:otherwise>
 981     </xsl:choose>
 982   </a>
 983 </xsl:template>
 984 
 985 <xsl:template match="eventlink|errorlink|typelink|datalink|functionlink">
 986   <a>
 987     <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
 988     <xsl:choose>
 989       <xsl:when test=".=''">
 990         <code>
 991           <xsl:value-of select="@id"/>
 992         </code>        
 993       </xsl:when>
 994       <xsl:otherwise>
 995         <xsl:apply-templates/>
 996       </xsl:otherwise>
 997     </xsl:choose>
 998   </a>
 999 </xsl:template>
1000 
1001 <xsl:template match="functionphaselist">
1002   <xsl:variable name="phase" select="@phase"/>
1003   <ul>
1004     <xsl:for-each select="/specification/functionsection/category/function[@phase=$phase and count(@hide)=0]">   
1005       <li>
1006         <a>
1007           <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1008           <b>
1009             <xsl:value-of select="@id"/>
1010           </b>
1011         </a>
1012       </li>
1013     </xsl:for-each>
1014   </ul>
1015 </xsl:template>
1016 
1017 <xsl:template match="eventphaselist">
1018   <xsl:variable name="phase" select="@phase"/>
1019   <ul>
1020     <xsl:for-each select="//eventsection/event[@phase=$phase]">   
1021       <li>
1022         <a>
1023           <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1024           <b>
1025             <xsl:value-of select="@id"/>
1026           </b>
1027         </a>
1028       </li>
1029     </xsl:for-each>
1030   </ul>
1031 </xsl:template>
1032 
1033 <xsl:template match="externallink">
1034   <a>
1035     <xsl:attribute name="href">
1036       <xsl:value-of select="@id"/>
1037     </xsl:attribute>
1038     <xsl:value-of select="."/>
1039   </a>
1040 </xsl:template>
1041 
1042 <xsl:template match="vmspec">
1043   <cite>
1044     <xsl:text>The Java&#8482; Virtual Machine Specification</xsl:text>
1045     <xsl:if test="count(@chapter)=1">
1046       <xsl:text>, Chapter </xsl:text> 
1047       <xsl:value-of select="@chapter"/>
1048     </xsl:if>
1049   </cite>
1050 </xsl:template>
1051 
1052 <xsl:template match="internallink">
1053   <a>
1054     <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1055     <xsl:apply-templates/>
1056   </a>
1057 </xsl:template>
1058 
1059 <xsl:template match="parameters" mode="body">
1060   <p/>
1061   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1062     <tr bgcolor="#CCCCFF">
1063       <td colspan="3" align="center" class="tableHeader">
1064         Parameters
1065       </td>
1066     </tr>
1067     <tr bgcolor="#EEEEFF">
1068       <td>
1069         Name
1070       </td>
1071       <td>
1072         Type
1073       </td>
1074       <td>
1075         Description
1076       </td>
1077     </tr>
1078     <xsl:apply-templates select="param[count(jclass/@method)=0]" mode="body"/>
1079   </table>
1080 </xsl:template>
1081 
1082 <xsl:template match="param" mode="body">
1083   <tr>
1084     <td>
1085       <code>
1086         <xsl:attribute name="id">
1087           <xsl:value-of select="../../@id"/>.<xsl:value-of select="@id"/>
1088         </xsl:attribute>
1089         <xsl:value-of select="@id"/>
1090       </code>
1091     </td>
1092     <td>
1093       <code>
1094         <xsl:apply-templates select="child::*[position()=1]" mode="link"/>
1095       </code>
1096     </td>
1097     <td>
1098       <xsl:apply-templates select="description" mode="brief"/>
1099       <xsl:if test="count(ancestor::function)=1">
1100         <xsl:apply-templates select="child::*[position()=1]" mode="funcdescription"/>
1101       </xsl:if>
1102     </td>
1103   </tr>
1104 </xsl:template>
1105 
1106 <xsl:template match="capabilities">
1107   <p/>
1108   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1109     <tr bgcolor="#CCCCFF">
1110       <td colspan="2" align="center" class="tableHeader">
1111         Capabilities
1112       </td>
1113     </tr>
1114     <xsl:choose>
1115       <xsl:when test="count(required)=0">
1116         <tr>
1117           <td colspan="2">
1118             <b>Required Functionality</b>
1119           </td>
1120         </tr>
1121       </xsl:when>
1122       <xsl:otherwise>
1123         <tr>
1124           <td colspan="2">
1125             <b>Optional Functionality:</b> might not be implemented for all
1126             virtual machines. 
1127             <xsl:choose>
1128               <xsl:when test="count(required)=1">
1129                 The following capability 
1130               </xsl:when>
1131               <xsl:otherwise>
1132                 One of the following capabilities
1133               </xsl:otherwise>
1134             </xsl:choose>
1135             (as returned by 
1136             <a href="#GetCapabilities"><code>GetCapabilities</code></a>)
1137             must be true to use this      
1138             <xsl:choose>
1139               <xsl:when test="ancestor::function">
1140                 function.
1141               </xsl:when>
1142               <xsl:otherwise>
1143                 event.
1144               </xsl:otherwise>
1145             </xsl:choose>
1146           </td>
1147         </tr>
1148         <tr bgcolor="#EEEEFF">
1149           <td >
1150             Capability
1151           </td>
1152           <td>
1153             Effect
1154           </td>
1155         </tr>
1156         <xsl:apply-templates select="required"/>
1157       </xsl:otherwise>
1158     </xsl:choose>
1159     <xsl:if test="count(capability)!=0">
1160       <tr bgcolor="#CCCCFF">
1161         <td colspan="2" align="center">
1162           Optional Features
1163         </td>
1164       </tr>
1165       <xsl:if test="count(required)=0">
1166         <tr bgcolor="#EEEEFF">
1167           <td >
1168             Capability
1169           </td>
1170           <td>
1171             Effect
1172           </td>
1173         </tr>
1174       </xsl:if>
1175       <xsl:apply-templates select="capability"/>
1176     </xsl:if>
1177   </table>
1178 </xsl:template>
1179 
1180 <xsl:template match="eventcapabilities">
1181   <p/>
1182   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1183     <tr bgcolor="#CCCCFF">
1184       <td colspan="2" align="center" class="tableHeader">
1185         Capabilities
1186       </td>
1187     </tr>
1188     <tr>
1189       <td colspan="2">
1190         <b>Required Functionality</b>
1191       </td>
1192     </tr>
1193     <tr bgcolor="#CCCCFF">
1194       <td colspan="2" align="center">
1195         Event Enabling Capabilities
1196       </td>
1197     </tr>
1198     <tr bgcolor="#EEEEFF">
1199       <td >
1200         Capability
1201       </td>
1202       <td>
1203         Events
1204       </td>
1205     </tr>
1206     <xsl:for-each select="//capabilityfield">
1207       <xsl:variable name="capa" select="@id"/>
1208       <xsl:variable name="events" select="//event[capabilities/required/@id=$capa]"/>
1209       <xsl:if test="count($events)">
1210         <tr>
1211           <td>
1212             <a>
1213               <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1214               </xsl:attribute>
1215               <code>
1216                 <xsl:value-of select="@id"/>
1217               </code>
1218             </a>
1219           </td>
1220           <td>
1221             <xsl:for-each select="$events">
1222               <a>
1223                 <xsl:attribute name="href">#<xsl:value-of select="@id"/>
1224                 </xsl:attribute>
1225                 <code>
1226                   <xsl:value-of select="@id"/>
1227                 </code>
1228               </a>
1229               <br/>
1230             </xsl:for-each>
1231           </td>
1232         </tr>
1233       </xsl:if>
1234     </xsl:for-each>
1235   </table>
1236 </xsl:template>
1237 
1238 <xsl:template match="capability|required">
1239   <tr>
1240     <td>
1241       <a>
1242         <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1243         </xsl:attribute>
1244         <code>
1245           <xsl:value-of select="@id"/>
1246         </code>
1247       </a>
1248     </td>
1249     <td>
1250       <xsl:choose>
1251         <xsl:when test=".=''">
1252           <xsl:variable name="desiredID" select="@id"/>
1253           <xsl:for-each select="//capabilityfield[@id=$desiredID]">
1254             <xsl:apply-templates select="description" mode="brief"/>
1255           </xsl:for-each>
1256         </xsl:when>
1257         <xsl:otherwise>
1258           <xsl:apply-templates/>
1259         </xsl:otherwise>
1260       </xsl:choose>
1261     </td>
1262   </tr>
1263 </xsl:template>
1264 
1265 <xsl:template match="function" mode="errors">
1266   <xsl:variable name="haserrors">
1267     <xsl:apply-templates select="capabilities/required" mode="haserrors"/>
1268     <xsl:apply-templates select="errors/error" mode="haserrors"/>
1269     <xsl:apply-templates select="parameters/param" mode="haserrors"/>
1270   </xsl:variable>
1271   <p/>
1272   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1273     <tr bgcolor="#CCCCFF">
1274       <td colspan="2" align="center" class="tableHeader">
1275         Errors
1276       </td>
1277     </tr>
1278     <xsl:choose>
1279       <xsl:when test="contains($haserrors,'yes')">
1280         <tr>
1281           <td colspan="2">
1282             This function returns either a 
1283             <a href="#universal-error">universal error</a> 
1284             or one of the following errors
1285           </td>
1286         </tr>
1287         <tr bgcolor="#EEEEFF">
1288           <td>
1289             Error
1290           </td>
1291           <td>
1292             Description
1293           </td>
1294         </tr>
1295         <xsl:apply-templates select="capabilities/required" mode="errors"/>
1296         <xsl:apply-templates select="errors/error"/>
1297         <xsl:apply-templates select="parameters/param" mode="errors"/>
1298       </xsl:when>
1299       <xsl:otherwise>
1300         <tr>
1301           <td colspan="2">
1302             This function returns a 
1303             <a href="#universal-error">universal error</a>
1304           </td>
1305         </tr>
1306       </xsl:otherwise>
1307     </xsl:choose>
1308   </table>
1309 </xsl:template>
1310 
1311 <xsl:template match="required" mode="haserrors">
1312   yes
1313 </xsl:template>
1314 
1315 <xsl:template match="required" mode="errors">
1316   <tr>
1317     <td>
1318       <a href="#JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
1319         <code>
1320           JVMTI_ERROR_MUST_POSSESS_CAPABILITY
1321         </code>
1322       </a>
1323     </td>
1324     <td>
1325       The environment does not possess the capability
1326       <a>
1327         <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/></xsl:attribute>
1328         <code>
1329           <xsl:value-of select="@id"/>
1330         </code>        
1331       </a>.
1332       Use <a href="#AddCapabilities"><code>AddCapabilities</code></a>.
1333     </td>
1334   </tr>
1335 </xsl:template>
1336 
1337 <xsl:template match="param" mode="haserrors">
1338   <xsl:apply-templates mode="haserrors"/>
1339 </xsl:template>
1340 
1341 <xsl:template match="param" mode="errors">
1342   <xsl:apply-templates select="." mode="errors1"/>
1343   <xsl:apply-templates select="." mode="errors2"/>
1344 </xsl:template>
1345 
1346 <xsl:template match="param" mode="errors1">
1347   <xsl:variable name="haserrors">
1348     <xsl:apply-templates mode="haserrors"/>
1349   </xsl:variable>
1350   <xsl:if test="contains($haserrors,'yes')!=0">
1351     <xsl:variable name="erroridraw">
1352       <xsl:apply-templates mode="errorid"/>
1353     </xsl:variable>
1354     <xsl:variable name="errorid" select="normalize-space($erroridraw)"/>
1355     <tr>
1356       <td>
1357         <a>
1358           <xsl:attribute name="href">#<xsl:value-of select="$errorid"/></xsl:attribute>
1359           <code>
1360             <xsl:value-of select="$errorid"/>
1361           </code>
1362         </a>
1363       </td>
1364       <td>
1365         <xsl:apply-templates mode="errordesc">
1366           <xsl:with-param name="id" select="@id"/>
1367         </xsl:apply-templates>
1368       </td>
1369     </tr>
1370   </xsl:if>
1371 </xsl:template>
1372  
1373 <xsl:template match="param" mode="errors2">
1374   <xsl:variable name="haserrors2">
1375     <xsl:apply-templates mode="haserrors2"/>
1376   </xsl:variable>
1377   <xsl:if test="contains($haserrors2,'yes')!=0">
1378     <xsl:variable name="erroridraw2">
1379       <xsl:apply-templates mode="errorid2"/>
1380     </xsl:variable>
1381     <xsl:variable name="errorid2" select="normalize-space($erroridraw2)"/>
1382     <tr>
1383       <td>
1384         <a>
1385           <xsl:attribute name="href">#<xsl:value-of select="$errorid2"/></xsl:attribute>
1386           <code>
1387             <xsl:value-of select="$errorid2"/>
1388           </code>
1389         </a>
1390       </td>
1391       <td>
1392         <xsl:apply-templates mode="errordesc2">
1393           <xsl:with-param name="id" select="@id"/>
1394         </xsl:apply-templates>
1395       </td>
1396     </tr>
1397   </xsl:if>
1398 </xsl:template>
1399  
1400 <xsl:template match="description" mode="haserrors">
1401 </xsl:template>
1402 
1403 <xsl:template match="description" mode="errorid">
1404 </xsl:template>
1405 
1406 <xsl:template match="description" mode="errordesc">
1407 </xsl:template>
1408 
1409 <xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jthread|jthreadGroup|jobject|enum|jlocation" mode="haserrors">
1410   yes
1411 </xsl:template>
1412 
1413 <xsl:template match="jclass" mode="haserrors">
1414   <xsl:if test="count(@method)=0">
1415     yes
1416   </xsl:if>
1417 </xsl:template>
1418 
1419 <xsl:template match="description|jclass|jfieldID|jrawMonitorID|
1420                     jthreadGroup|jobject|enum|jlocation|jvalue|jchar|jint|jlong|jfloat|jdouble|jboolean|
1421                     char|uchar|size_t|void|varargs|struct|
1422                     ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors2">
1423 </xsl:template>
1424 
1425 <xsl:template match="jmethodID" mode="haserrors2">
1426   <xsl:if test="count(@native)=1 and contains(@native,'error')">
1427     yes
1428   </xsl:if>
1429 </xsl:template>
1430 
1431 <xsl:template match="jthread" mode="haserrors2">
1432   <xsl:if test="count(@started)=0 or contains(@started,'yes') or @started=''">
1433     yes
1434   </xsl:if>
1435 </xsl:template>
1436 
1437 <xsl:template match="jframeID" mode="haserrors2">
1438     yes
1439 </xsl:template>
1440 
1441 <xsl:template match="description" mode="errorid2">
1442 </xsl:template>
1443 
1444 <xsl:template match="description" mode="errordesc2">
1445 </xsl:template>
1446 
1447 <xsl:template match="jmethodID" mode="errorid">
1448   <xsl:text>JVMTI_ERROR_INVALID_METHODID</xsl:text>
1449 </xsl:template>
1450 
1451 <xsl:template match="jmethodID" mode="errorid2">
1452     <xsl:text>JVMTI_ERROR_NATIVE_METHOD</xsl:text>
1453 </xsl:template>
1454 
1455 <xsl:template match="jmethodID" mode="errordesc">
1456   <xsl:param name="id"/>
1457   <xsl:apply-templates select="." mode="paramlink"/>
1458   <xsl:text> is not a jmethodID.</xsl:text>
1459 </xsl:template>
1460 
1461 <xsl:template match="jmethodID" mode="errordesc2">
1462   <xsl:param name="id"/>
1463   <xsl:apply-templates select="." mode="paramlink"/>
1464   <xsl:text> is a native method.</xsl:text>
1465 </xsl:template>
1466 
1467 <xsl:template match="jfieldID" mode="errorid">
1468   <xsl:text>JVMTI_ERROR_INVALID_FIELDID</xsl:text>
1469 </xsl:template>
1470 
1471 <xsl:template match="jfieldID" mode="errordesc">
1472   <xsl:param name="id"/>
1473   <xsl:apply-templates select="." mode="paramlink"/>
1474   <xsl:text> is not a jfieldID.</xsl:text>
1475 </xsl:template>
1476 
1477 <xsl:template match="jframeID" mode="errorid">
1478   <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1479 </xsl:template>
1480 
1481 <xsl:template match="jframeID" mode="errorid2">
1482   <xsl:text>JVMTI_ERROR_NO_MORE_FRAMES</xsl:text>
1483 </xsl:template>
1484 
1485 <xsl:template match="jframeID" mode="errordesc">
1486   <xsl:param name="id"/>
1487   <xsl:apply-templates select="." mode="paramlink"/>
1488   <xsl:text> is less than zero.</xsl:text>
1489 </xsl:template>
1490 
1491 <xsl:template match="jframeID" mode="errordesc2">
1492   <xsl:param name="id"/>
1493   <xsl:text>There are no stack frames at the specified </xsl:text>
1494   <xsl:apply-templates select="." mode="paramlink"/>
1495   <xsl:text>.</xsl:text>
1496 </xsl:template>
1497 
1498 <xsl:template match="jrawMonitorID" mode="errorid">
1499   <xsl:text>JVMTI_ERROR_INVALID_MONITOR</xsl:text>
1500 </xsl:template>
1501 
1502 <xsl:template match="jrawMonitorID" mode="errordesc">
1503   <xsl:param name="id"/>
1504   <xsl:apply-templates select="." mode="paramlink"/>
1505   <xsl:text> is not a jrawMonitorID.</xsl:text>
1506 </xsl:template>
1507 
1508 <xsl:template match="jclass" mode="errorid">
1509   <xsl:text>JVMTI_ERROR_INVALID_CLASS</xsl:text>
1510 </xsl:template>
1511 
1512 <xsl:template match="jclass" mode="errordesc">
1513   <xsl:param name="id"/>
1514   <xsl:apply-templates select="." mode="paramlink"/>
1515   <xsl:text> is not a class object or the class has been unloaded.</xsl:text>
1516 </xsl:template>
1517 
1518 <xsl:template match="jthread" mode="errorid">
1519   <xsl:text>JVMTI_ERROR_INVALID_THREAD</xsl:text>
1520 </xsl:template>
1521 
1522 <xsl:template match="jthread" mode="errorid2">
1523   <xsl:text>JVMTI_ERROR_THREAD_NOT_ALIVE</xsl:text>
1524 </xsl:template>
1525 
1526 <xsl:template match="jthread" mode="errordesc">
1527   <xsl:param name="id"/>
1528   <xsl:apply-templates select="." mode="paramlink"/>
1529   <xsl:text> is not a thread object.</xsl:text>
1530 </xsl:template>
1531 
1532 <xsl:template match="jthread" mode="errordesc2">
1533   <xsl:param name="id"/>
1534   <xsl:apply-templates select="." mode="paramlink"/>
1535   <xsl:text> is not live (has not been started or is now dead).</xsl:text>
1536 </xsl:template>
1537 
1538 <xsl:template match="jthreadGroup" mode="errorid">
1539   <xsl:text>JVMTI_ERROR_INVALID_THREAD_GROUP</xsl:text>
1540 </xsl:template>
1541 
1542 <xsl:template match="jthreadGroup" mode="errordesc">
1543   <xsl:param name="id"/>
1544   <xsl:apply-templates select="." mode="paramlink"/>
1545   <xsl:text> is not a thread group object.</xsl:text>
1546 </xsl:template>
1547 
1548 <xsl:template match="jobject" mode="errorid">
1549   <xsl:text>JVMTI_ERROR_INVALID_OBJECT</xsl:text>
1550 </xsl:template>
1551 
1552 <xsl:template match="jobject" mode="errordesc">
1553   <xsl:param name="id"/>
1554   <xsl:apply-templates select="." mode="paramlink"/>
1555   <xsl:text> is not an object.</xsl:text>
1556 </xsl:template>
1557 
1558 <xsl:template match="enum" mode="errorid">
1559   <xsl:choose>
1560     <xsl:when test=".='jvmtiEvent'">
1561       <xsl:text>JVMTI_ERROR_INVALID_EVENT_TYPE</xsl:text>
1562     </xsl:when>
1563     <xsl:otherwise>
1564       <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1565     </xsl:otherwise>
1566   </xsl:choose>
1567 </xsl:template>
1568 
1569 <xsl:template match="enum" mode="errordesc">
1570   <xsl:param name="id"/>
1571   <xsl:apply-templates select="." mode="paramlink"/>
1572   <xsl:text> is not a </xsl:text>
1573   <xsl:value-of select="."/>
1574   <xsl:text>.</xsl:text>
1575 </xsl:template>
1576 
1577 <xsl:template match="jlocation" mode="errorid">
1578   <xsl:text>JVMTI_ERROR_INVALID_LOCATION</xsl:text>
1579 </xsl:template>
1580 
1581 <xsl:template match="jlocation" mode="errordesc">
1582   <xsl:param name="id"/>
1583   <xsl:apply-templates select="." mode="paramlink"/>
1584   <xsl:text> is not a valid location.</xsl:text>
1585 </xsl:template>
1586 
1587 <xsl:template match="jint" mode="haserrors">
1588   <xsl:if test="count(@min)=1">
1589     yes
1590   </xsl:if>
1591 </xsl:template>
1592 
1593 <xsl:template match="jint" mode="errorid">
1594   <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1595 </xsl:template>
1596 
1597 <xsl:template match="jint" mode="errordesc">
1598   <xsl:param name="id"/>
1599   <xsl:apply-templates select="." mode="paramlink"/>
1600   <xsl:text> is less than </xsl:text>
1601   <code><xsl:value-of select="@min"/></code>
1602   <xsl:text>.</xsl:text>
1603 </xsl:template>
1604 
1605 <xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="haserrors">
1606 </xsl:template>
1607 
1608 <xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="errordesc">
1609   <xsl:param name="id"/>
1610   <xsl:message terminate="yes">
1611     attempt to get error description for <xsl:apply-templates select="." mode="paramlink"/>
1612   </xsl:message>
1613 </xsl:template>
1614 
1615 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors">
1616   <xsl:if test="count(nullok)=0">
1617     yes
1618   </xsl:if>
1619 </xsl:template>
1620 
1621 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errorid">
1622   <xsl:text>JVMTI_ERROR_NULL_POINTER</xsl:text>
1623 </xsl:template>
1624 
1625 <xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errordesc">
1626   <xsl:param name="id"/>
1627   <xsl:if test="count(nullok)=1">
1628     <xsl:message terminate="yes">
1629       attempt to get error description in null ok case for <xsl:apply-templates select="." mode="paramlink"/>
1630     </xsl:message>
1631   </xsl:if>
1632   <xsl:apply-templates select="." mode="paramlink"/>
1633   <xsl:text> is </xsl:text>
1634   <code>NULL</code>
1635   <xsl:text>.</xsl:text>
1636 </xsl:template>
1637 
1638 <xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jint|jclass|jthread|jthreadGroup|jobject|enum|jlocation|ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="paramlink">
1639   <a>
1640     <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="ancestor::param/@id"/>
1641     </xsl:attribute>
1642     <code>
1643       <xsl:value-of select="ancestor::param/@id"/>
1644     </code>        
1645   </a>
1646 </xsl:template>
1647 
1648 <xsl:template match="error" mode="haserrors">
1649   yes
1650 </xsl:template>
1651 
1652 <xsl:template match="error">
1653   <tr>
1654     <td>
1655       <a>
1656         <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1657         <code>
1658           <xsl:value-of select="@id"/>
1659         </code>
1660       </a>
1661     </td>
1662     <td>
1663       <xsl:apply-templates/>
1664     </td>
1665   </tr>
1666 </xsl:template>
1667 
1668 <xsl:template match="errorsection">
1669   <p/>
1670   <hr noshade="noshade" size="3"/>
1671   <h2>
1672     Errors
1673   </h2>
1674   <p/>
1675   <xsl:apply-templates select="intro"/>
1676   <p/>
1677   <xsl:apply-templates select="errorcategory"/>
1678   <p/>
1679 </xsl:template>
1680 
1681 <xsl:template match="datasection">
1682   <p/>
1683   <hr noshade="noshade" size="3"/>
1684   <h2>
1685     Data Types
1686   </h2>
1687   <p/>
1688   <xsl:apply-templates select="intro"/>
1689   <xsl:apply-templates select="basetypes"/>
1690   <p/>
1691   <a name="StructureTypeDefinitions"></a>
1692   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1693     <tr bgcolor="#CCCCFF">
1694       <td colspan="2" align="center" class="tableHeader">
1695         Structure Type Definitions
1696       </td>
1697     </tr>
1698     <tr bgcolor="#EEEEFF">
1699       <td>
1700         Type
1701       </td>
1702       <td>
1703         Description
1704       </td>
1705     </tr>
1706     <xsl:apply-templates select="//typedef|//uniontypedef|//capabilitiestypedef" mode="tableentry">
1707       <xsl:sort select="@id"/>
1708     </xsl:apply-templates>
1709   </table>
1710   <p/>
1711   <a name="FunctionTypeDefinitions"></a>
1712   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1713     <tr bgcolor="#CCCCFF">
1714       <td colspan="2" align="center" class="tableHeader">
1715         Function Type Definitions
1716       </td>
1717     </tr>
1718     <tr bgcolor="#EEEEFF">
1719       <td>
1720         Type
1721       </td>
1722       <td>
1723         Description
1724       </td>
1725     </tr>
1726     <xsl:apply-templates select="//callback" mode="tableentry">
1727       <xsl:sort select="@id"/>
1728     </xsl:apply-templates>
1729   </table>
1730   <p/>
1731   <a name="EnumerationDefinitions"></a>
1732   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1733     <tr bgcolor="#CCCCFF">
1734       <td colspan="2" align="center" class="tableHeader">
1735         Enumeration Definitions
1736       </td>
1737     </tr>
1738     <tr bgcolor="#EEEEFF">
1739       <td>
1740         Type
1741       </td>
1742       <td>
1743         Description
1744       </td>
1745     </tr>
1746     <xsl:apply-templates select="//constants[@kind='enum']" mode="tableentry">
1747       <xsl:sort select="@id"/>
1748     </xsl:apply-templates>
1749   </table>
1750   <p/>
1751   <a name="FunctionTable"></a>
1752   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1753     <tr bgcolor="#CCCCFF">
1754       <td colspan="3" align="center" class="tableHeader">
1755         Function Table Layout
1756       </td>
1757     </tr>
1758     <tr bgcolor="#EEEEFF">
1759       <td>
1760         Position
1761       </td>
1762       <td>
1763         Function
1764       </td>
1765       <td>
1766         Declaration
1767       </td>
1768     </tr>
1769     <xsl:call-template name="funcStruct">
1770       <xsl:with-param name="funcs" select="//functionsection/category/function[count(@hide)=0]"/>
1771       <xsl:with-param name="index" select="1"/>
1772     </xsl:call-template>
1773   </table>
1774   <p/>
1775 </xsl:template>
1776 
1777 
1778 <xsl:template name="funcStruct">
1779   <xsl:param name="funcs"/>
1780   <xsl:param name="index"/>
1781   <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
1782   <tr>
1783     <td align="right">
1784       <xsl:number value="$index" format="  1"/>
1785     </td>
1786     <xsl:choose>
1787       <xsl:when test="count($thisFunction)=1">
1788         <td>
1789           <a>
1790             <xsl:attribute name="href">
1791               <xsl:text>#</xsl:text>
1792               <xsl:value-of select="$thisFunction/@id"/>
1793             </xsl:attribute>
1794             <xsl:value-of select="$thisFunction/synopsis"/>
1795           </a>
1796         </td>
1797         <td>
1798           <pre>
1799             <xsl:text>jvmtiError (JNICALL *</xsl:text>
1800             <xsl:value-of select="$thisFunction/@id"/>
1801             <xsl:text>) (jvmtiEnv* env</xsl:text>
1802             <xsl:apply-templates select="$thisFunction/parameters" mode="signature">
1803               <xsl:with-param name="comma">
1804                 <xsl:text>,&#xA;                       </xsl:text>
1805               </xsl:with-param>
1806             </xsl:apply-templates>
1807             <xsl:text>);</xsl:text>
1808         </pre>
1809       </td>
1810     </xsl:when>
1811     <xsl:otherwise>
1812       <xsl:if test="count($thisFunction) != 0">
1813         <xsl:message terminate="yes">
1814           More than one function has index number <xsl:number value="$index" format="  1"/>.
1815       </xsl:message>
1816       </xsl:if>
1817       <td>
1818         <i>reserved</i>
1819       </td>
1820       <td>
1821         <pre>
1822           <xsl:text>void *reserved</xsl:text>        
1823           <xsl:value-of select="$index"/>
1824           <xsl:text>;</xsl:text>
1825         </pre>
1826       </td>
1827     </xsl:otherwise>
1828   </xsl:choose>
1829   </tr>
1830   <xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
1831     <xsl:call-template name="funcStruct">
1832       <xsl:with-param name="funcs" select="$funcs"/>
1833       <xsl:with-param name="index" select="1+$index"/>
1834     </xsl:call-template>
1835   </xsl:if>
1836 </xsl:template>
1837 
1838 
1839 
1840 <xsl:template match="errorcategory">
1841   <h3>
1842     <xsl:attribute name="id">
1843       <xsl:value-of select="@id"/>
1844     </xsl:attribute>
1845     <xsl:value-of select="@label"/>
1846   </h3>
1847   <xsl:apply-templates select="intro"/>
1848   <p/>
1849   <dl>
1850     <xsl:apply-templates select="errorid"/>
1851   </dl>
1852   <p/>
1853 </xsl:template>
1854 
1855 <xsl:template match="errorid">
1856   <dt>
1857     <code>
1858       <xsl:attribute name="id">
1859         <xsl:value-of select="@id"/>
1860       </xsl:attribute>
1861       <xsl:value-of select="@id"/> (<xsl:value-of select="@num"/>)
1862     </code>
1863   </dt>
1864   <dd>
1865     <xsl:apply-templates/>
1866     <p/>
1867   </dd>
1868 </xsl:template>
1869 
1870 <xsl:template match="changehistory">
1871     <p/><hr noshade="noshade" size="3"/>
1872     <h2>Change History</h2>
1873     Last update: <xsl:value-of select="@update"/><br/>
1874     Version: <xsl:call-template name="showversion"/>
1875     <p/>
1876     <xsl:apply-templates select="intro"/>
1877     <p/>
1878     <table border="1" cellpadding="3" cellspacing="0" width="100%">
1879       <tr bgcolor="#EEEEFF">
1880         <td>
1881           <b>Version</b><br/>
1882           <b>Date</b>
1883         </td>
1884         <td>
1885           <b>Changes</b>
1886         </td>
1887       </tr>
1888       <xsl:apply-templates select="change"/>
1889     </table>
1890 </xsl:template>
1891 
1892 <xsl:template match="change">
1893   <tr>
1894     <td>
1895       <xsl:if test="count(@version)">
1896         <b>
1897           <xsl:value-of select="@version"/>
1898         </b>
1899         <br/>
1900       </xsl:if>
1901       <xsl:value-of select="@date"/>
1902     </td>
1903     <td>
1904       <xsl:apply-templates/>
1905     </td>
1906   </tr>
1907 </xsl:template>
1908 
1909 <xsl:template match="intro">
1910   <xsl:if test="@id!=''">
1911     <xsl:choose>
1912       <xsl:when test="@label!=''">
1913         <h4>
1914           <xsl:attribute name="id">
1915             <xsl:value-of select="@id"/>
1916           </xsl:attribute>
1917           <xsl:value-of select="@label"/>
1918         </h4>
1919       </xsl:when>
1920       <xsl:otherwise>
1921         <a>
1922           <xsl:attribute name="name">
1923             <xsl:value-of select="@id"/>
1924           </xsl:attribute>
1925         </a>
1926       </xsl:otherwise>
1927     </xsl:choose>
1928   </xsl:if>
1929   <xsl:apply-templates/>
1930 </xsl:template>
1931 
1932 <xsl:template match="issue">
1933   <xsl:if test="$development = 'Show'">
1934     <p style="color: red">
1935     To be resolved:
1936       <xsl:apply-templates/>
1937     </p>
1938   </xsl:if>
1939 </xsl:template>
1940 
1941 <xsl:template match="rationale">
1942   <p style="color: purple">
1943   Rationale:
1944       <xsl:apply-templates/>
1945   </p>
1946 </xsl:template>
1947 
1948 <xsl:template match="todo">
1949   <xsl:if test="$development = 'Show'">
1950     <p style="color: green">
1951     To do:
1952       <xsl:apply-templates/>
1953     </p>
1954   </xsl:if>
1955 </xsl:template>
1956 
1957 <xsl:template match="elide">
1958 </xsl:template>
1959 
1960 <xsl:template match="b">
1961   <b>
1962   <xsl:apply-templates/>
1963   </b>
1964 </xsl:template>
1965 
1966 <xsl:template match="example">
1967   <blockquote>
1968     <pre>
1969       <xsl:apply-templates/>
1970     </pre>
1971   </blockquote>
1972 </xsl:template>
1973 
1974 
1975 <xsl:template match="table">
1976   <table border="1" cellpadding="3" cellspacing="0" width="100%">
1977     <xsl:apply-templates/>
1978   </table>
1979 </xsl:template>
1980 
1981 <xsl:template match="tr">
1982   <tr>
1983     <xsl:apply-templates/>
1984   </tr>
1985 </xsl:template>
1986 
1987 <xsl:template match="td">
1988   <td>
1989     <xsl:attribute name="align">
1990       <xsl:value-of select="@align"/>
1991     </xsl:attribute>
1992     <xsl:apply-templates/>
1993   </td>
1994 </xsl:template>
1995 
1996 <xsl:template match="th">
1997   <th bgcolor="#EEEEFF">
1998     <xsl:attribute name="align">
1999       <xsl:value-of select="@align"/>
2000     </xsl:attribute>
2001     <xsl:apply-templates/>
2002   </th>
2003 </xsl:template>
2004 
2005 <xsl:template match="dl">
2006   <dl>
2007     <xsl:apply-templates/>
2008   </dl>
2009 </xsl:template>
2010 
2011 <xsl:template match="dt">
2012   <dt>
2013     <xsl:apply-templates/>
2014   </dt>
2015 </xsl:template>
2016 
2017 <xsl:template match="dd">
2018   <dd>
2019     <xsl:apply-templates/>
2020   </dd>
2021 </xsl:template>
2022 
2023 <xsl:template match="p">
2024   <p>
2025     <xsl:apply-templates/>
2026   </p>
2027 </xsl:template>
2028 
2029 <xsl:template match="br">
2030   <br>
2031     <xsl:apply-templates/>
2032   </br>
2033 </xsl:template>
2034 
2035 <xsl:template match="ul">
2036   <ul>
2037     <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
2038     <xsl:apply-templates/>
2039   </ul>
2040 </xsl:template>
2041 
2042 <xsl:template match="li">
2043   <li>
2044     <xsl:apply-templates/>
2045   </li>
2046 </xsl:template>
2047 
2048 <xsl:template match="code">
2049   <code>
2050     <xsl:apply-templates/>
2051   </code>
2052 </xsl:template>
2053 
2054 <xsl:template match="tm">
2055   <xsl:apply-templates/>
2056   <sup style="font-size: xx-small">
2057     <xsl:text>TM</xsl:text>
2058   </sup>
2059   <xsl:text>&#032;</xsl:text>
2060 </xsl:template>
2061 
2062 <xsl:template match="b">
2063   <b>
2064     <xsl:apply-templates/>
2065   </b>
2066 </xsl:template>
2067 
2068 <xsl:template match="i">
2069   <i>
2070     <xsl:apply-templates/>
2071   </i>
2072 </xsl:template>
2073 
2074 <xsl:template match="space">
2075   <xsl:text>&#032;</xsl:text>
2076 </xsl:template>
2077 
2078 <xsl:template match="jvmti">
2079   <xsl:text>JVM</xsl:text><small style="font-size: xx-small">&#160;</small><xsl:text>TI</xsl:text>
2080 </xsl:template>
2081 
2082 
2083 </xsl:stylesheet>