root/trunk/xml/lgtxml.xsl

Revision 4662, 9.0 KB (checked in by pmoura, 6 days ago)

Updated copyright notice.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<xsl:stylesheet
3    version="1.0"
4    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
5
6
7<xsl:output
8    method="html"
9    version="4.0"
10    indent="yes"
11    encoding="utf-8"
12    doctype-public="-//W3C//DTD HTML 4.01//EN"
13    doctype-system="http://www.w3.org/TR/html4/strict.dtd"/>
14
15
16<!--
17================================================================
18Logtalk - Open source object-oriented logic programming language
19Release 2.35.0
20
21Copyright (c) 1998-2009 Paulo Moura.        All Rights Reserved.
22Logtalk is free software.  You can redistribute it and/or modify
23it under the terms of the "Artistic License 2.0" as published by
24The Perl Foundation. Consult the "LICENSE.txt" file for details.
25================================================================
26-->
27
28
29<xsl:template match="/">
30    <html>
31    <head>
32        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
33        <title><xsl:value-of select="logtalk/entity/name" /></title>
34        <link rel="stylesheet" href="logtalk.css" type="text/css" />
35    </head>
36    <body>
37        <div class="header">
38            <p class="type"><xsl:value-of select="logtalk/entity/type" /></p>
39            <h1 class="code"><xsl:value-of select="logtalk/entity/name" /></h1>
40            <blockquote>
41            <xsl:if test="logtalk/entity/comment">
42                <p class="comment"><xsl:value-of select="logtalk/entity/comment" /></p>
43            </xsl:if>
44            <xsl:if test="logtalk/entity/parameters">
45                <ul class="parameters">
46                <xsl:for-each select="logtalk/entity/parameters/parameter">
47                    <li><code><xsl:value-of select="name" /></code><xsl:text disable-output-escaping="yes"> &amp;ndash; </xsl:text><span class="comment"><xsl:value-of select="description" /></span></li>
48                </xsl:for-each>
49                </ul>
50            </xsl:if>
51            </blockquote>
52        </div>
53        <div class="entity">
54            <div class="section">
55                <xsl:apply-templates select="logtalk/entity" />
56                <xsl:apply-templates select="logtalk/relations" />
57            </div>
58        </div>
59        <div class="predicates">
60            <xsl:apply-templates select="logtalk/predicates" />
61        </div>
62        <div class="remarks">
63            <xsl:apply-templates select="logtalk/remarks" />
64        </div>
65    </body>
66    </html>
67</xsl:template>
68
69
70<xsl:template match="logtalk/entity">
71    <dl class="properties">
72    <xsl:if test="author">
73        <dt class ="key">author:</dt>
74            <dd class="value"><code><xsl:value-of select="author" /></code></dd>
75    </xsl:if>
76    <xsl:if test="version">
77        <dt class ="key">version:</dt>
78            <dd class="value"><code><xsl:value-of select="version" /></code></dd>
79    </xsl:if>
80    <xsl:if test="date">
81        <dt class ="key">date:</dt>
82            <dd class="value"><code><xsl:value-of select="date" /></code></dd>
83    </xsl:if>
84    <xsl:if test="copyright">
85        <dt class ="key">copyright:</dt>
86            <dd class="value"><code><xsl:value-of select="copyright" /></code></dd>
87    </xsl:if>
88    <xsl:if test="license">
89        <dt class ="key">license:</dt>
90            <dd class="value"><code><xsl:value-of select="license" /></code></dd>
91    </xsl:if>
92    </dl>
93    <dl class="properties">
94        <dt class ="key">compilation:</dt>
95            <dd class ="value"><code><xsl:value-of select="compilation" /></code></dd>
96    </dl>
97    <xsl:if test="info">
98        <dl class="properties">
99        <xsl:for-each select="info">
100            <dt class ="key"><xsl:value-of select="key" />:</dt>
101                <dd class ="value"><code><xsl:value-of select="value" /></code></dd>
102        </xsl:for-each>
103        </dl>
104    </xsl:if>
105</xsl:template>
106
107
108<xsl:template match="logtalk/relations">
109    <xsl:choose>
110        <xsl:when test="*">
111        <dl class="relations">
112            <xsl:if test="implements">
113            <dt class ="key">implements:</dt>
114                <xsl:apply-templates select="implements" />
115            </xsl:if>
116            <xsl:if test="imports">
117            <dt class ="key">imports:</dt>
118                <xsl:apply-templates select="imports" />
119            </xsl:if>
120            <xsl:if test="extends">
121            <dt class ="key">extends:</dt>
122                <xsl:apply-templates select="extends" />
123            </xsl:if>
124            <xsl:if test="instantiates">
125            <dt class ="key">instantiates:</dt>
126                <xsl:apply-templates select="instantiates" />
127            </xsl:if>
128            <xsl:if test="specializes">
129            <dt class ="key">specializes:</dt>
130                <xsl:apply-templates select="specializes" />
131            </xsl:if>
132            <xsl:if test="uses">
133            <dt class ="key">uses:</dt>
134                <xsl:apply-templates select="uses" />
135            </xsl:if>
136            <xsl:if test="calls">
137            <dt class ="key">calls:</dt>
138                <xsl:apply-templates select="calls" />
139            </xsl:if>
140        </dl>
141        </xsl:when>
142        <xsl:otherwise> 
143            <p class="comment">(no dependencies on other files)</p>
144        </xsl:otherwise>
145    </xsl:choose>
146</xsl:template>
147
148
149<xsl:template match="logtalk/relations/uses">
150    <dd class ="value"><code><a href="{file}.xml"><xsl:value-of select="name" /></a></code></dd>
151</xsl:template>
152
153
154<xsl:template match="logtalk/relations/calls">
155    <dd class ="value"><code><a href="{file}.xml"><xsl:value-of select="name" /></a></code></dd>
156</xsl:template>
157
158
159<xsl:template match="logtalk/relations/*">
160    <dd class ="value"><code><xsl:value-of select="scope" /><xsl:text> </xsl:text><a href="{file}.xml"><xsl:value-of select="name" /></a></code></dd>
161</xsl:template>
162
163
164<xsl:template match="logtalk/predicates">
165    <div class="public">
166    <h2>Public interface</h2>
167    <xsl:choose>
168        <xsl:when test="public/predicate">
169            <xsl:apply-templates select="public/predicate" />
170        </xsl:when>
171        <xsl:when test="/logtalk/relations/*">     
172            <div class="section">
173                <p class="comment">(see related entities)</p>
174            </div>
175        </xsl:when>
176        <xsl:otherwise>
177            <div class="section">
178                <p class="comment">(none)</p>
179            </div>
180        </xsl:otherwise>
181    </xsl:choose>
182    </div>
183    <div class="protected">
184    <h2>Protected interface</h2>
185    <xsl:choose>
186        <xsl:when test="protected/predicate">
187            <xsl:apply-templates select="protected/predicate" />
188        </xsl:when>
189        <xsl:when test="/logtalk/relations/*">     
190            <div class="section">
191                <p class="comment">(see related entities)</p>
192            </div>
193        </xsl:when>
194        <xsl:otherwise>
195            <div class="section">
196                <p class="comment">(none)</p>
197            </div>
198        </xsl:otherwise>
199    </xsl:choose>
200    </div>
201    <div class="private">
202    <h2>Private predicates</h2>
203    <xsl:choose>
204        <xsl:when test="private/predicate">
205            <xsl:apply-templates select="private/predicate" />
206        </xsl:when>
207        <xsl:when test="/logtalk/relations/*">     
208            <div class="section">
209                <p class="comment">(see related entities)</p>
210            </div>
211        </xsl:when>
212        <xsl:otherwise>
213            <div class="section">
214                <p class="comment">(none)</p>
215            </div>
216        </xsl:otherwise>
217    </xsl:choose>
218    </div>
219</xsl:template>
220
221
222<xsl:template match="*/predicate">
223    <div class="section">
224    <h3 class="code"><xsl:value-of select="name" /></h3>
225    <blockquote>
226    <xsl:if test="comment">
227        <p class="comment"><xsl:value-of select="comment" /></p>
228    </xsl:if>
229    </blockquote>
230    <dl class="properties">
231        <dt class ="key">compilation:</dt>
232            <dd class ="value"><code><xsl:value-of select="compilation" /></code></dd>
233        <xsl:if test="template">
234        <dt class ="key">template:</dt>
235            <dd class ="value"><code><xsl:value-of select="template" /></code></dd>
236        </xsl:if>
237        <xsl:if test="arguments">
238            <dd class ="value"><ul class="arguments">
239            <xsl:for-each select="arguments/argument">
240                <li><code><xsl:value-of select="name" /></code><xsl:text disable-output-escaping="yes"> &amp;ndash; </xsl:text><span class="comment"><xsl:value-of select="description" /></span></li>
241            </xsl:for-each></ul></dd>
242        </xsl:if>
243        <xsl:if test="meta">
244        <dt class ="key">meta-predicate template:</dt>
245            <dd class ="value"><code><xsl:value-of select="meta" /></code></dd>
246        </xsl:if>
247        <xsl:if test="mode">
248        <dt class ="key">mode<xsl:text disable-output-escaping="yes"> &amp;ndash; </xsl:text>number of solutions:</dt>
249        <xsl:for-each select="mode">
250            <dd class ="value"><code><xsl:value-of select="template" /><xsl:text disable-output-escaping="yes"> &amp;ndash; </xsl:text><xsl:value-of select="solutions" /></code></dd>
251        </xsl:for-each>
252        </xsl:if>
253        <xsl:if test="exceptions">
254        <dt class ="key">exceptions:</dt>
255        <xsl:for-each select="exceptions/exception">
256            <dd class ="value"><xsl:value-of select="condition" />: <code><xsl:value-of select="term" /></code></dd>
257        </xsl:for-each>
258        </xsl:if>
259        <xsl:if test="examples">
260        <dt class ="key">examples:</dt>
261            <xsl:for-each select="examples/example">
262            <dd class ="value"><dl class="examples">
263                <dt class="comment"><xsl:value-of select="description" /></dt>
264                    <dd class="code"><xsl:value-of select="call" /></dd>
265                    <dd class="code"><xsl:value-of select="bindings" /></dd>
266            </dl></dd>
267            </xsl:for-each>
268        </xsl:if>
269    </dl>
270    <xsl:if test="info">
271        <dl class="properties">
272            <xsl:for-each select="info">
273            <dt class ="key"><xsl:value-of select="key" />:</dt>
274                <dd class ="value"><code><xsl:value-of select="value" /></code></dd>
275            </xsl:for-each>
276        </dl>
277    </xsl:if>
278    </div>
279</xsl:template>
280
281
282<xsl:template match="logtalk/remarks">
283    <h2>Remarks</h2>
284    <div class="section">
285    <xsl:choose>
286        <xsl:when test="remark">
287            <xsl:apply-templates select="remark" />
288        </xsl:when>
289        <xsl:otherwise>
290            <h3 class="code">(none)</h3>
291        </xsl:otherwise>
292    </xsl:choose>
293    </div>
294</xsl:template>
295
296<xsl:template match="logtalk/remarks/remark">
297    <dl class="remarks">
298        <dt class="comment"><xsl:value-of select="topic" /></dt>
299            <dd class="text"><xsl:value-of select="text" /></dd>
300    </dl>
301</xsl:template>
302
303
304</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.