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