1<?xml version="1.0"?> 
2<!--
3 Copyright (c) 2002, 2017, 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>
548typedef 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="id">
909              <xsl:choose>
910                <xsl:when test="count(@name)=1">
911                  <xsl:value-of select="@name"/>
912                </xsl:when>
913                <xsl:otherwise>
914                  <xsl:value-of select="@id"/>
915                </xsl:otherwise>
916              </xsl:choose>
917            </xsl:attribute>
918          </a>
919          <xsl:apply-templates select="description" mode="brief"/>
920        </td>
921      </tr>      
922    </xsl:when>
923    <xsl:otherwise>
924      <tr>
925        <td rowspan="2">
926          <code>
927            <xsl:value-of select="@id"/>
928          </code>
929        </td>
930        <td>
931          <a>
932            <xsl:attribute name="id">
933              <xsl:value-of select="@id"/>
934            </xsl:attribute>
935          </a>
936          <xsl:apply-templates select="description" mode="brief"/>
937        </td>
938      </tr>      
939      <tr>
940        <td>
941          <pre>
942            <xsl:apply-templates select="definition"/>
943          </pre>          
944        </td>
945      </tr>
946    </xsl:otherwise>
947  </xsl:choose>
948</xsl:template>
949
950<xsl:template match="description">
951  <xsl:apply-templates/>
952  <p/>
953</xsl:template>
954
955<xsl:template match="description" mode="brief">
956  <xsl:apply-templates/>
957</xsl:template>
958
959<xsl:template match="fieldlink">
960  <a>
961    <xsl:attribute name="href">#<xsl:value-of select="@struct"/>.<xsl:value-of select="@id"/></xsl:attribute>
962    <xsl:choose>
963      <xsl:when test=".=''">
964        <code>
965          <xsl:value-of select="@id"/>
966        </code>        
967      </xsl:when>
968      <xsl:otherwise>
969        <xsl:apply-templates/>
970      </xsl:otherwise>
971    </xsl:choose>
972  </a>
973</xsl:template>
974
975<xsl:template match="paramlink">
976  <a>
977    <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="@id"/>
978    </xsl:attribute>
979    <xsl:choose>
980      <xsl:when test=".=''">
981        <code>
982          <xsl:value-of select="@id"/>
983        </code>        
984      </xsl:when>
985      <xsl:otherwise>
986        <xsl:apply-templates/>
987      </xsl:otherwise>
988    </xsl:choose>
989  </a>
990</xsl:template>
991
992<xsl:template match="eventlink|errorlink|typelink|datalink|functionlink">
993  <a>
994    <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
995    <xsl:choose>
996      <xsl:when test=".=''">
997        <code>
998          <xsl:value-of select="@id"/>
999        </code>        
1000      </xsl:when>
1001      <xsl:otherwise>
1002        <xsl:apply-templates/>
1003      </xsl:otherwise>
1004    </xsl:choose>
1005  </a>
1006</xsl:template>
1007
1008<xsl:template match="functionphaselist">
1009  <xsl:variable name="phase" select="@phase"/>
1010  <ul>
1011    <xsl:for-each select="/specification/functionsection/category/function[@phase=$phase and count(@hide)=0]">   
1012      <li>
1013        <a>
1014          <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1015          <b>
1016            <xsl:value-of select="@id"/>
1017          </b>
1018        </a>
1019      </li>
1020    </xsl:for-each>
1021  </ul>
1022</xsl:template>
1023
1024<xsl:template match="eventphaselist">
1025  <xsl:variable name="phase" select="@phase"/>
1026  <ul>
1027    <xsl:for-each select="//eventsection/event[@phase=$phase]">   
1028      <li>
1029        <a>
1030          <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1031          <b>
1032            <xsl:value-of select="@id"/>
1033          </b>
1034        </a>
1035      </li>
1036    </xsl:for-each>
1037  </ul>
1038</xsl:template>
1039
1040<xsl:template match="externallink">
1041  <a>
1042    <xsl:attribute name="href">
1043      <xsl:value-of select="@id"/>
1044    </xsl:attribute>
1045    <xsl:value-of select="."/>
1046  </a>
1047</xsl:template>
1048
1049<xsl:template match="vmspec">
1050  <cite>
1051    <xsl:text>The Java&#8482; Virtual Machine Specification</xsl:text>
1052    <xsl:if test="count(@chapter)=1">
1053      <xsl:text>, Chapter </xsl:text> 
1054      <xsl:value-of select="@chapter"/>
1055    </xsl:if>
1056  </cite>
1057</xsl:template>
1058
1059<xsl:template match="internallink">
1060  <a>
1061    <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1062    <xsl:apply-templates/>
1063  </a>
1064</xsl:template>
1065
1066<xsl:template match="parameters" mode="body">
1067  <p/>
1068  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1069    <tr bgcolor="#CCCCFF">
1070      <td colspan="3" align="center" class="tableHeader">
1071        Parameters
1072      </td>
1073    </tr>
1074    <tr bgcolor="#EEEEFF">
1075      <td>
1076        Name
1077      </td>
1078      <td>
1079        Type
1080      </td>
1081      <td>
1082        Description
1083      </td>
1084    </tr>
1085    <xsl:apply-templates select="param[count(jclass/@method)=0]" mode="body"/>
1086  </table>
1087</xsl:template>
1088
1089<xsl:template match="param" mode="body">
1090  <tr>
1091    <td>
1092      <code>
1093        <xsl:attribute name="id">
1094          <xsl:value-of select="../../@id"/>.<xsl:value-of select="@id"/>
1095        </xsl:attribute>
1096        <xsl:value-of select="@id"/>
1097      </code>
1098    </td>
1099    <td>
1100      <code>
1101        <xsl:apply-templates select="child::*[position()=1]" mode="link"/>
1102      </code>
1103    </td>
1104    <td>
1105      <xsl:apply-templates select="description" mode="brief"/>
1106      <xsl:if test="count(ancestor::function)=1">
1107        <xsl:apply-templates select="child::*[position()=1]" mode="funcdescription"/>
1108      </xsl:if>
1109    </td>
1110  </tr>
1111</xsl:template>
1112
1113<xsl:template match="capabilities">
1114  <p/>
1115  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1116    <tr bgcolor="#CCCCFF">
1117      <td colspan="2" align="center" class="tableHeader">
1118        Capabilities
1119      </td>
1120    </tr>
1121    <xsl:choose>
1122      <xsl:when test="count(required)=0">
1123        <tr>
1124          <td colspan="2">
1125            <b>Required Functionality</b>
1126          </td>
1127        </tr>
1128      </xsl:when>
1129      <xsl:otherwise>
1130        <tr>
1131          <td colspan="2">
1132            <b>Optional Functionality:</b> might not be implemented for all
1133            virtual machines. 
1134            <xsl:choose>
1135              <xsl:when test="count(required)=1">
1136                The following capability 
1137              </xsl:when>
1138              <xsl:otherwise>
1139                One of the following capabilities
1140              </xsl:otherwise>
1141            </xsl:choose>
1142            (as returned by 
1143            <a href="#GetCapabilities"><code>GetCapabilities</code></a>)
1144            must be true to use this      
1145            <xsl:choose>
1146              <xsl:when test="ancestor::function">
1147                function.
1148              </xsl:when>
1149              <xsl:otherwise>
1150                event.
1151              </xsl:otherwise>
1152            </xsl:choose>
1153          </td>
1154        </tr>
1155        <tr bgcolor="#EEEEFF">
1156          <td >
1157            Capability
1158          </td>
1159          <td>
1160            Effect
1161          </td>
1162        </tr>
1163        <xsl:apply-templates select="required"/>
1164      </xsl:otherwise>
1165    </xsl:choose>
1166    <xsl:if test="count(capability)!=0">
1167      <tr bgcolor="#CCCCFF">
1168        <td colspan="2" align="center">
1169          Optional Features
1170        </td>
1171      </tr>
1172      <xsl:if test="count(required)=0">
1173        <tr bgcolor="#EEEEFF">
1174          <td >
1175            Capability
1176          </td>
1177          <td>
1178            Effect
1179          </td>
1180        </tr>
1181      </xsl:if>
1182      <xsl:apply-templates select="capability"/>
1183    </xsl:if>
1184  </table>
1185</xsl:template>
1186
1187<xsl:template match="eventcapabilities">
1188  <p/>
1189  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1190    <tr bgcolor="#CCCCFF">
1191      <td colspan="2" align="center" class="tableHeader">
1192        Capabilities
1193      </td>
1194    </tr>
1195    <tr>
1196      <td colspan="2">
1197        <b>Required Functionality</b>
1198      </td>
1199    </tr>
1200    <tr bgcolor="#CCCCFF">
1201      <td colspan="2" align="center">
1202        Event Enabling Capabilities
1203      </td>
1204    </tr>
1205    <tr bgcolor="#EEEEFF">
1206      <td >
1207        Capability
1208      </td>
1209      <td>
1210        Events
1211      </td>
1212    </tr>
1213    <xsl:for-each select="//capabilityfield">
1214      <xsl:variable name="capa" select="@id"/>
1215      <xsl:variable name="events" select="//event[capabilities/required/@id=$capa]"/>
1216      <xsl:if test="count($events)">
1217        <tr>
1218          <td>
1219            <a>
1220              <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1221              </xsl:attribute>
1222              <code>
1223                <xsl:value-of select="@id"/>
1224              </code>
1225            </a>
1226          </td>
1227          <td>
1228            <xsl:for-each select="$events">
1229              <a>
1230                <xsl:attribute name="href">#<xsl:value-of select="@id"/>
1231                </xsl:attribute>
1232                <code>
1233                  <xsl:value-of select="@id"/>
1234                </code>
1235              </a>
1236              <br/>
1237            </xsl:for-each>
1238          </td>
1239        </tr>
1240      </xsl:if>
1241    </xsl:for-each>
1242  </table>
1243</xsl:template>
1244
1245<xsl:template match="capability|required">
1246  <tr>
1247    <td>
1248      <a>
1249        <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/>
1250        </xsl:attribute>
1251        <code>
1252          <xsl:value-of select="@id"/>
1253        </code>
1254      </a>
1255    </td>
1256    <td>
1257      <xsl:choose>
1258        <xsl:when test=".=''">
1259          <xsl:variable name="desiredID" select="@id"/>
1260          <xsl:for-each select="//capabilityfield[@id=$desiredID]">
1261            <xsl:apply-templates select="description" mode="brief"/>
1262          </xsl:for-each>
1263        </xsl:when>
1264        <xsl:otherwise>
1265          <xsl:apply-templates/>
1266        </xsl:otherwise>
1267      </xsl:choose>
1268    </td>
1269  </tr>
1270</xsl:template>
1271
1272<xsl:template match="function" mode="errors">
1273  <xsl:variable name="haserrors">
1274    <xsl:apply-templates select="capabilities/required" mode="haserrors"/>
1275    <xsl:apply-templates select="errors/error" mode="haserrors"/>
1276    <xsl:apply-templates select="parameters/param" mode="haserrors"/>
1277  </xsl:variable>
1278  <p/>
1279  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1280    <tr bgcolor="#CCCCFF">
1281      <td colspan="2" align="center" class="tableHeader">
1282        Errors
1283      </td>
1284    </tr>
1285    <xsl:choose>
1286      <xsl:when test="contains($haserrors,'yes')">
1287        <tr>
1288          <td colspan="2">
1289            This function returns either a 
1290            <a href="#universal-error">universal error</a> 
1291            or one of the following errors
1292          </td>
1293        </tr>
1294        <tr bgcolor="#EEEEFF">
1295          <td>
1296            Error
1297          </td>
1298          <td>
1299            Description
1300          </td>
1301        </tr>
1302        <xsl:apply-templates select="capabilities/required" mode="errors"/>
1303        <xsl:apply-templates select="errors/error"/>
1304        <xsl:apply-templates select="parameters/param" mode="errors"/>
1305      </xsl:when>
1306      <xsl:otherwise>
1307        <tr>
1308          <td colspan="2">
1309            This function returns a 
1310            <a href="#universal-error">universal error</a>
1311          </td>
1312        </tr>
1313      </xsl:otherwise>
1314    </xsl:choose>
1315  </table>
1316</xsl:template>
1317
1318<xsl:template match="required" mode="haserrors">
1319  yes
1320</xsl:template>
1321
1322<xsl:template match="required" mode="errors">
1323  <tr>
1324    <td>
1325      <a href="#JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
1326        <code>
1327          JVMTI_ERROR_MUST_POSSESS_CAPABILITY
1328        </code>
1329      </a>
1330    </td>
1331    <td>
1332      The environment does not possess the capability
1333      <a>
1334        <xsl:attribute name="href">#jvmtiCapabilities.<xsl:value-of select="@id"/></xsl:attribute>
1335        <code>
1336          <xsl:value-of select="@id"/>
1337        </code>        
1338      </a>.
1339      Use <a href="#AddCapabilities"><code>AddCapabilities</code></a>.
1340    </td>
1341  </tr>
1342</xsl:template>
1343
1344<xsl:template match="param" mode="haserrors">
1345  <xsl:apply-templates mode="haserrors"/>
1346</xsl:template>
1347
1348<xsl:template match="param" mode="errors">
1349  <xsl:apply-templates select="." mode="errors1"/>
1350  <xsl:apply-templates select="." mode="errors2"/>
1351</xsl:template>
1352
1353<xsl:template match="param" mode="errors1">
1354  <xsl:variable name="haserrors">
1355    <xsl:apply-templates mode="haserrors"/>
1356  </xsl:variable>
1357  <xsl:if test="contains($haserrors,'yes')!=0">
1358    <xsl:variable name="erroridraw">
1359      <xsl:apply-templates mode="errorid"/>
1360    </xsl:variable>
1361    <xsl:variable name="errorid" select="normalize-space($erroridraw)"/>
1362    <tr>
1363      <td>
1364        <a>
1365          <xsl:attribute name="href">#<xsl:value-of select="$errorid"/></xsl:attribute>
1366          <code>
1367            <xsl:value-of select="$errorid"/>
1368          </code>
1369        </a>
1370      </td>
1371      <td>
1372        <xsl:apply-templates mode="errordesc">
1373          <xsl:with-param name="id" select="@id"/>
1374        </xsl:apply-templates>
1375      </td>
1376    </tr>
1377  </xsl:if>
1378</xsl:template>
1379 
1380<xsl:template match="param" mode="errors2">
1381  <xsl:variable name="haserrors2">
1382    <xsl:apply-templates mode="haserrors2"/>
1383  </xsl:variable>
1384  <xsl:if test="contains($haserrors2,'yes')!=0">
1385    <xsl:variable name="erroridraw2">
1386      <xsl:apply-templates mode="errorid2"/>
1387    </xsl:variable>
1388    <xsl:variable name="errorid2" select="normalize-space($erroridraw2)"/>
1389    <tr>
1390      <td>
1391        <a>
1392          <xsl:attribute name="href">#<xsl:value-of select="$errorid2"/></xsl:attribute>
1393          <code>
1394            <xsl:value-of select="$errorid2"/>
1395          </code>
1396        </a>
1397      </td>
1398      <td>
1399        <xsl:apply-templates mode="errordesc2">
1400          <xsl:with-param name="id" select="@id"/>
1401        </xsl:apply-templates>
1402      </td>
1403    </tr>
1404  </xsl:if>
1405</xsl:template>
1406 
1407<xsl:template match="description" mode="haserrors">
1408</xsl:template>
1409
1410<xsl:template match="description" mode="errorid">
1411</xsl:template>
1412
1413<xsl:template match="description" mode="errordesc">
1414</xsl:template>
1415
1416<xsl:template match="jmethodID|jfieldID|jframeID|jrawMonitorID|jthread|jthreadGroup|jobject|enum|jlocation" mode="haserrors">
1417  yes
1418</xsl:template>
1419
1420<xsl:template match="jclass" mode="haserrors">
1421  <xsl:if test="count(@method)=0">
1422    yes
1423  </xsl:if>
1424</xsl:template>
1425
1426<xsl:template match="description|jclass|jfieldID|jrawMonitorID|
1427                    jthreadGroup|jobject|enum|jlocation|jvalue|jchar|jint|jlong|jfloat|jdouble|jboolean|
1428                    char|uchar|size_t|void|varargs|struct|
1429                    ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors2">
1430</xsl:template>
1431
1432<xsl:template match="jmethodID" mode="haserrors2">
1433  <xsl:if test="count(@native)=1 and contains(@native,'error')">
1434    yes
1435  </xsl:if>
1436</xsl:template>
1437
1438<xsl:template match="jthread" mode="haserrors2">
1439  <xsl:if test="count(@started)=0 or contains(@started,'yes') or @started=''">
1440    yes
1441  </xsl:if>
1442</xsl:template>
1443
1444<xsl:template match="jframeID" mode="haserrors2">
1445    yes
1446</xsl:template>
1447
1448<xsl:template match="description" mode="errorid2">
1449</xsl:template>
1450
1451<xsl:template match="description" mode="errordesc2">
1452</xsl:template>
1453
1454<xsl:template match="jmethodID" mode="errorid">
1455  <xsl:text>JVMTI_ERROR_INVALID_METHODID</xsl:text>
1456</xsl:template>
1457
1458<xsl:template match="jmethodID" mode="errorid2">
1459    <xsl:text>JVMTI_ERROR_NATIVE_METHOD</xsl:text>
1460</xsl:template>
1461
1462<xsl:template match="jmethodID" mode="errordesc">
1463  <xsl:param name="id"/>
1464  <xsl:apply-templates select="." mode="paramlink"/>
1465  <xsl:text> is not a jmethodID.</xsl:text>
1466</xsl:template>
1467
1468<xsl:template match="jmethodID" mode="errordesc2">
1469  <xsl:param name="id"/>
1470  <xsl:apply-templates select="." mode="paramlink"/>
1471  <xsl:text> is a native method.</xsl:text>
1472</xsl:template>
1473
1474<xsl:template match="jfieldID" mode="errorid">
1475  <xsl:text>JVMTI_ERROR_INVALID_FIELDID</xsl:text>
1476</xsl:template>
1477
1478<xsl:template match="jfieldID" mode="errordesc">
1479  <xsl:param name="id"/>
1480  <xsl:apply-templates select="." mode="paramlink"/>
1481  <xsl:text> is not a jfieldID.</xsl:text>
1482</xsl:template>
1483
1484<xsl:template match="jframeID" mode="errorid">
1485  <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1486</xsl:template>
1487
1488<xsl:template match="jframeID" mode="errorid2">
1489  <xsl:text>JVMTI_ERROR_NO_MORE_FRAMES</xsl:text>
1490</xsl:template>
1491
1492<xsl:template match="jframeID" mode="errordesc">
1493  <xsl:param name="id"/>
1494  <xsl:apply-templates select="." mode="paramlink"/>
1495  <xsl:text> is less than zero.</xsl:text>
1496</xsl:template>
1497
1498<xsl:template match="jframeID" mode="errordesc2">
1499  <xsl:param name="id"/>
1500  <xsl:text>There are no stack frames at the specified </xsl:text>
1501  <xsl:apply-templates select="." mode="paramlink"/>
1502  <xsl:text>.</xsl:text>
1503</xsl:template>
1504
1505<xsl:template match="jrawMonitorID" mode="errorid">
1506  <xsl:text>JVMTI_ERROR_INVALID_MONITOR</xsl:text>
1507</xsl:template>
1508
1509<xsl:template match="jrawMonitorID" mode="errordesc">
1510  <xsl:param name="id"/>
1511  <xsl:apply-templates select="." mode="paramlink"/>
1512  <xsl:text> is not a jrawMonitorID.</xsl:text>
1513</xsl:template>
1514
1515<xsl:template match="jclass" mode="errorid">
1516  <xsl:text>JVMTI_ERROR_INVALID_CLASS</xsl:text>
1517</xsl:template>
1518
1519<xsl:template match="jclass" mode="errordesc">
1520  <xsl:param name="id"/>
1521  <xsl:apply-templates select="." mode="paramlink"/>
1522  <xsl:text> is not a class object or the class has been unloaded.</xsl:text>
1523</xsl:template>
1524
1525<xsl:template match="jthread" mode="errorid">
1526  <xsl:text>JVMTI_ERROR_INVALID_THREAD</xsl:text>
1527</xsl:template>
1528
1529<xsl:template match="jthread" mode="errorid2">
1530  <xsl:text>JVMTI_ERROR_THREAD_NOT_ALIVE</xsl:text>
1531</xsl:template>
1532
1533<xsl:template match="jthread" mode="errordesc">
1534  <xsl:param name="id"/>
1535  <xsl:apply-templates select="." mode="paramlink"/>
1536  <xsl:text> is not a thread object.</xsl:text>
1537</xsl:template>
1538
1539<xsl:template match="jthread" mode="errordesc2">
1540  <xsl:param name="id"/>
1541  <xsl:apply-templates select="." mode="paramlink"/>
1542  <xsl:text> is not live (has not been started or is now dead).</xsl:text>
1543</xsl:template>
1544
1545<xsl:template match="jthreadGroup" mode="errorid">
1546  <xsl:text>JVMTI_ERROR_INVALID_THREAD_GROUP</xsl:text>
1547</xsl:template>
1548
1549<xsl:template match="jthreadGroup" mode="errordesc">
1550  <xsl:param name="id"/>
1551  <xsl:apply-templates select="." mode="paramlink"/>
1552  <xsl:text> is not a thread group object.</xsl:text>
1553</xsl:template>
1554
1555<xsl:template match="jobject" mode="errorid">
1556  <xsl:text>JVMTI_ERROR_INVALID_OBJECT</xsl:text>
1557</xsl:template>
1558
1559<xsl:template match="jobject" mode="errordesc">
1560  <xsl:param name="id"/>
1561  <xsl:apply-templates select="." mode="paramlink"/>
1562  <xsl:text> is not an object.</xsl:text>
1563</xsl:template>
1564
1565<xsl:template match="enum" mode="errorid">
1566  <xsl:choose>
1567    <xsl:when test=".='jvmtiEvent'">
1568      <xsl:text>JVMTI_ERROR_INVALID_EVENT_TYPE</xsl:text>
1569    </xsl:when>
1570    <xsl:otherwise>
1571      <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1572    </xsl:otherwise>
1573  </xsl:choose>
1574</xsl:template>
1575
1576<xsl:template match="enum" mode="errordesc">
1577  <xsl:param name="id"/>
1578  <xsl:apply-templates select="." mode="paramlink"/>
1579  <xsl:text> is not a </xsl:text>
1580  <xsl:value-of select="."/>
1581  <xsl:text>.</xsl:text>
1582</xsl:template>
1583
1584<xsl:template match="jlocation" mode="errorid">
1585  <xsl:text>JVMTI_ERROR_INVALID_LOCATION</xsl:text>
1586</xsl:template>
1587
1588<xsl:template match="jlocation" mode="errordesc">
1589  <xsl:param name="id"/>
1590  <xsl:apply-templates select="." mode="paramlink"/>
1591  <xsl:text> is not a valid location.</xsl:text>
1592</xsl:template>
1593
1594<xsl:template match="jint" mode="haserrors">
1595  <xsl:if test="count(@min)=1">
1596    yes
1597  </xsl:if>
1598</xsl:template>
1599
1600<xsl:template match="jint" mode="errorid">
1601  <xsl:text>JVMTI_ERROR_ILLEGAL_ARGUMENT</xsl:text>
1602</xsl:template>
1603
1604<xsl:template match="jint" mode="errordesc">
1605  <xsl:param name="id"/>
1606  <xsl:apply-templates select="." mode="paramlink"/>
1607  <xsl:text> is less than </xsl:text>
1608  <code><xsl:value-of select="@min"/></code>
1609  <xsl:text>.</xsl:text>
1610</xsl:template>
1611
1612<xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="haserrors">
1613</xsl:template>
1614
1615<xsl:template match="jvalue|jchar|jlong|jfloat|jdouble|jboolean|char|uchar|size_t|void|varargs|struct" mode="errordesc">
1616  <xsl:param name="id"/>
1617  <xsl:message terminate="yes">
1618    attempt to get error description for <xsl:apply-templates select="." mode="paramlink"/>
1619  </xsl:message>
1620</xsl:template>
1621
1622<xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="haserrors">
1623  <xsl:if test="count(nullok)=0">
1624    yes
1625  </xsl:if>
1626</xsl:template>
1627
1628<xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errorid">
1629  <xsl:text>JVMTI_ERROR_NULL_POINTER</xsl:text>
1630</xsl:template>
1631
1632<xsl:template match="ptrtype|outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf" mode="errordesc">
1633  <xsl:param name="id"/>
1634  <xsl:if test="count(nullok)=1">
1635    <xsl:message terminate="yes">
1636      attempt to get error description in null ok case for <xsl:apply-templates select="." mode="paramlink"/>
1637    </xsl:message>
1638  </xsl:if>
1639  <xsl:apply-templates select="." mode="paramlink"/>
1640  <xsl:text> is </xsl:text>
1641  <code>NULL</code>
1642  <xsl:text>.</xsl:text>
1643</xsl:template>
1644
1645<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">
1646  <a>
1647    <xsl:attribute name="href">#<xsl:value-of select="ancestor::function/@id|ancestor::event/@id"/>.<xsl:value-of select="ancestor::param/@id"/>
1648    </xsl:attribute>
1649    <code>
1650      <xsl:value-of select="ancestor::param/@id"/>
1651    </code>        
1652  </a>
1653</xsl:template>
1654
1655<xsl:template match="error" mode="haserrors">
1656  yes
1657</xsl:template>
1658
1659<xsl:template match="error">
1660  <tr>
1661    <td>
1662      <a>
1663        <xsl:attribute name="href">#<xsl:value-of select="@id"/></xsl:attribute>
1664        <code>
1665          <xsl:value-of select="@id"/>
1666        </code>
1667      </a>
1668    </td>
1669    <td>
1670      <xsl:apply-templates/>
1671    </td>
1672  </tr>
1673</xsl:template>
1674
1675<xsl:template match="errorsection">
1676  <p/>
1677  <hr noshade="noshade" size="3"/>
1678  <h2>
1679    Errors
1680  </h2>
1681  <p/>
1682  <xsl:apply-templates select="intro"/>
1683  <p/>
1684  <xsl:apply-templates select="errorcategory"/>
1685  <p/>
1686</xsl:template>
1687
1688<xsl:template match="datasection">
1689  <p/>
1690  <hr noshade="noshade" size="3"/>
1691  <h2>
1692    Data Types
1693  </h2>
1694  <p/>
1695  <xsl:apply-templates select="intro"/>
1696  <xsl:apply-templates select="basetypes"/>
1697  <p/>
1698  <a name="StructureTypeDefinitions"></a>
1699  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1700    <tr bgcolor="#CCCCFF">
1701      <td colspan="2" align="center" class="tableHeader">
1702        Structure Type Definitions
1703      </td>
1704    </tr>
1705    <tr bgcolor="#EEEEFF">
1706      <td>
1707        Type
1708      </td>
1709      <td>
1710        Description
1711      </td>
1712    </tr>
1713    <xsl:apply-templates select="//typedef|//uniontypedef|//capabilitiestypedef" mode="tableentry">
1714      <xsl:sort select="@id"/>
1715    </xsl:apply-templates>
1716  </table>
1717  <p/>
1718  <a name="FunctionTypeDefinitions"></a>
1719  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1720    <tr bgcolor="#CCCCFF">
1721      <td colspan="2" align="center" class="tableHeader">
1722        Function Type Definitions
1723      </td>
1724    </tr>
1725    <tr bgcolor="#EEEEFF">
1726      <td>
1727        Type
1728      </td>
1729      <td>
1730        Description
1731      </td>
1732    </tr>
1733    <xsl:apply-templates select="//callback" mode="tableentry">
1734      <xsl:sort select="@id"/>
1735    </xsl:apply-templates>
1736  </table>
1737  <p/>
1738  <a name="EnumerationDefinitions"></a>
1739  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1740    <tr bgcolor="#CCCCFF">
1741      <td colspan="2" align="center" class="tableHeader">
1742        Enumeration Definitions
1743      </td>
1744    </tr>
1745    <tr bgcolor="#EEEEFF">
1746      <td>
1747        Type
1748      </td>
1749      <td>
1750        Description
1751      </td>
1752    </tr>
1753    <xsl:apply-templates select="//constants[@kind='enum']" mode="tableentry">
1754      <xsl:sort select="@id"/>
1755    </xsl:apply-templates>
1756  </table>
1757  <p/>
1758  <a name="FunctionTable"></a>
1759  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1760    <tr bgcolor="#CCCCFF">
1761      <td colspan="3" align="center" class="tableHeader">
1762        Function Table Layout
1763      </td>
1764    </tr>
1765    <tr bgcolor="#EEEEFF">
1766      <td>
1767        Position
1768      </td>
1769      <td>
1770        Function
1771      </td>
1772      <td>
1773        Declaration
1774      </td>
1775    </tr>
1776    <xsl:call-template name="funcStruct">
1777      <xsl:with-param name="funcs" select="//functionsection/category/function[count(@hide)=0]"/>
1778      <xsl:with-param name="index" select="1"/>
1779    </xsl:call-template>
1780  </table>
1781  <p/>
1782</xsl:template>
1783
1784
1785<xsl:template name="funcStruct">
1786  <xsl:param name="funcs"/>
1787  <xsl:param name="index"/>
1788  <xsl:variable name="thisFunction" select="$funcs[@num=$index]"/>
1789  <tr>
1790    <td align="right">
1791      <xsl:number value="$index" format="  1"/>
1792    </td>
1793    <xsl:choose>
1794      <xsl:when test="count($thisFunction)=1">
1795        <td>
1796          <a>
1797            <xsl:attribute name="href">
1798              <xsl:text>#</xsl:text>
1799              <xsl:value-of select="$thisFunction/@id"/>
1800            </xsl:attribute>
1801            <xsl:value-of select="$thisFunction/synopsis"/>
1802          </a>
1803        </td>
1804        <td>
1805          <pre>
1806            <xsl:text>jvmtiError (JNICALL *</xsl:text>
1807            <xsl:value-of select="$thisFunction/@id"/>
1808            <xsl:text>) (jvmtiEnv* env</xsl:text>
1809            <xsl:apply-templates select="$thisFunction/parameters" mode="signature">
1810              <xsl:with-param name="comma">
1811                <xsl:text>,&#xA;                       </xsl:text>
1812              </xsl:with-param>
1813            </xsl:apply-templates>
1814            <xsl:text>);</xsl:text>
1815        </pre>
1816      </td>
1817    </xsl:when>
1818    <xsl:otherwise>
1819      <xsl:if test="count($thisFunction) != 0">
1820        <xsl:message terminate="yes">
1821          More than one function has index number <xsl:number value="$index" format="  1"/>.
1822      </xsl:message>
1823      </xsl:if>
1824      <td>
1825        <i>reserved</i>
1826      </td>
1827      <td>
1828        <pre>
1829          <xsl:text>void *reserved</xsl:text>        
1830          <xsl:value-of select="$index"/>
1831          <xsl:text>;</xsl:text>
1832        </pre>
1833      </td>
1834    </xsl:otherwise>
1835  </xsl:choose>
1836  </tr>
1837  <xsl:if test="count($funcs[@num &gt; $index]) &gt; 0">
1838    <xsl:call-template name="funcStruct">
1839      <xsl:with-param name="funcs" select="$funcs"/>
1840      <xsl:with-param name="index" select="1+$index"/>
1841    </xsl:call-template>
1842  </xsl:if>
1843</xsl:template>
1844
1845
1846
1847<xsl:template match="errorcategory">
1848  <h3>
1849    <xsl:attribute name="id">
1850      <xsl:value-of select="@id"/>
1851    </xsl:attribute>
1852    <xsl:value-of select="@label"/>
1853  </h3>
1854  <xsl:apply-templates select="intro"/>
1855  <p/>
1856  <dl>
1857    <xsl:apply-templates select="errorid"/>
1858  </dl>
1859  <p/>
1860</xsl:template>
1861
1862<xsl:template match="errorid">
1863  <dt>
1864    <code>
1865      <xsl:attribute name="id">
1866        <xsl:value-of select="@id"/>
1867      </xsl:attribute>
1868      <xsl:value-of select="@id"/> (<xsl:value-of select="@num"/>)
1869    </code>
1870  </dt>
1871  <dd>
1872    <xsl:apply-templates/>
1873    <p/>
1874  </dd>
1875</xsl:template>
1876
1877<xsl:template match="changehistory">
1878    <p/><hr noshade="noshade" size="3"/>
1879    <h2>Change History</h2>
1880    Last update: <xsl:value-of select="@update"/><br/>
1881    Version: <xsl:call-template name="showversion"/>
1882    <p/>
1883    <xsl:apply-templates select="intro"/>
1884    <p/>
1885    <table border="1" cellpadding="3" cellspacing="0" width="100%">
1886      <tr bgcolor="#EEEEFF">
1887        <td>
1888          <b>Version</b><br/>
1889          <b>Date</b>
1890        </td>
1891        <td>
1892          <b>Changes</b>
1893        </td>
1894      </tr>
1895      <xsl:apply-templates select="change"/>
1896    </table>
1897</xsl:template>
1898
1899<xsl:template match="change">
1900  <tr>
1901    <td>
1902      <xsl:if test="count(@version)">
1903        <b>
1904          <xsl:value-of select="@version"/>
1905        </b>
1906        <br/>
1907      </xsl:if>
1908      <xsl:value-of select="@date"/>
1909    </td>
1910    <td>
1911      <xsl:apply-templates/>
1912    </td>
1913  </tr>
1914</xsl:template>
1915
1916<xsl:template match="intro">
1917  <xsl:if test="@id!=''">
1918    <xsl:choose>
1919      <xsl:when test="@label!=''">
1920        <h4>
1921          <xsl:attribute name="id">
1922            <xsl:value-of select="@id"/>
1923          </xsl:attribute>
1924          <xsl:value-of select="@label"/>
1925        </h4>
1926      </xsl:when>
1927      <xsl:otherwise>
1928        <a>
1929          <xsl:attribute name="name">
1930            <xsl:value-of select="@id"/>
1931          </xsl:attribute>
1932        </a>
1933      </xsl:otherwise>
1934    </xsl:choose>
1935  </xsl:if>
1936  <xsl:apply-templates/>
1937</xsl:template>
1938
1939<xsl:template match="issue">
1940  <xsl:if test="$development = 'Show'">
1941    <p style="color: red">
1942    To be resolved:
1943      <xsl:apply-templates/>
1944    </p>
1945  </xsl:if>
1946</xsl:template>
1947
1948<xsl:template match="rationale">
1949  <p style="color: purple">
1950  Rationale:
1951      <xsl:apply-templates/>
1952  </p>
1953</xsl:template>
1954
1955<xsl:template match="todo">
1956  <xsl:if test="$development = 'Show'">
1957    <p style="color: green">
1958    To do:
1959      <xsl:apply-templates/>
1960    </p>
1961  </xsl:if>
1962</xsl:template>
1963
1964<xsl:template match="elide">
1965</xsl:template>
1966
1967<xsl:template match="b">
1968  <b>
1969  <xsl:apply-templates/>
1970  </b>
1971</xsl:template>
1972
1973<xsl:template match="example">
1974  <blockquote>
1975    <pre>
1976      <xsl:apply-templates/>
1977    </pre>
1978  </blockquote>
1979</xsl:template>
1980
1981
1982<xsl:template match="table">
1983  <table border="1" cellpadding="3" cellspacing="0" width="100%">
1984    <xsl:apply-templates/>
1985  </table>
1986</xsl:template>
1987
1988<xsl:template match="tr">
1989  <tr>
1990    <xsl:apply-templates/>
1991  </tr>
1992</xsl:template>
1993
1994<xsl:template match="td">
1995  <td>
1996    <xsl:attribute name="align">
1997      <xsl:value-of select="@align"/>
1998    </xsl:attribute>
1999    <xsl:apply-templates/>
2000  </td>
2001</xsl:template>
2002
2003<xsl:template match="th">
2004  <th bgcolor="#EEEEFF">
2005    <xsl:attribute name="align">
2006      <xsl:value-of select="@align"/>
2007    </xsl:attribute>
2008    <xsl:apply-templates/>
2009  </th>
2010</xsl:template>
2011
2012<xsl:template match="dl">
2013  <dl>
2014    <xsl:apply-templates/>
2015  </dl>
2016</xsl:template>
2017
2018<xsl:template match="dt">
2019  <dt>
2020    <xsl:apply-templates/>
2021  </dt>
2022</xsl:template>
2023
2024<xsl:template match="dd">
2025  <dd>
2026    <xsl:apply-templates/>
2027  </dd>
2028</xsl:template>
2029
2030<xsl:template match="p">
2031  <p>
2032    <xsl:apply-templates/>
2033  </p>
2034</xsl:template>
2035
2036<xsl:template match="br">
2037  <br>
2038    <xsl:apply-templates/>
2039  </br>
2040</xsl:template>
2041
2042<xsl:template match="ul">
2043  <ul>
2044    <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
2045    <xsl:apply-templates/>
2046  </ul>
2047</xsl:template>
2048
2049<xsl:template match="li">
2050  <li>
2051    <xsl:apply-templates/>
2052  </li>
2053</xsl:template>
2054
2055<xsl:template match="code">
2056  <code>
2057    <xsl:apply-templates/>
2058  </code>
2059</xsl:template>
2060
2061<xsl:template match="tm">
2062  <xsl:apply-templates/>
2063  <sup style="font-size: xx-small">
2064    <xsl:text>TM</xsl:text>
2065  </sup>
2066  <xsl:text>&#032;</xsl:text>
2067</xsl:template>
2068
2069<xsl:template match="b">
2070  <b>
2071    <xsl:apply-templates/>
2072  </b>
2073</xsl:template>
2074
2075<xsl:template match="i">
2076  <i>
2077    <xsl:apply-templates/>
2078  </i>
2079</xsl:template>
2080
2081<xsl:template match="space">
2082  <xsl:text>&#032;</xsl:text>
2083</xsl:template>
2084
2085<xsl:template match="jvmti">
2086  <xsl:text>JVM</xsl:text><small style="font-size: xx-small">&#160;</small><xsl:text>TI</xsl:text>
2087</xsl:template>
2088
2089
2090</xsl:stylesheet>
2091