]> matita.cs.unibo.it Git - helm.git/blob - helm/software/lambda-delta/xml/ld-html-library.xsl
last commit for helena 0.8.1
[helm.git] / helm / software / lambda-delta / xml / ld-html-library.xsl
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!--
4     ||M||  This file is part of HELM, an Hypertextual, Electronic        
5     ||A||  Library of Mathematics, developed at the Computer Science     
6     ||T||  Department, University of Bologna, Italy.                     
7     ||I||                                                                
8     ||T||  HELM is free software; you can redistribute it and/or         
9     ||A||  modify it under the terms of the GNU General Public License   
10     \   /  version 2 or (at your option) any later version.              
11      \ /   This software is distributed as is, NO WARRANTY.              
12       V_______________________________________________________________ -->
13
14 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
15
16 <xsl:variable name="sort">color: rgb(128, 0, 255);</xsl:variable>
17 <xsl:variable name="cast">color: rgb(255, 0, 0);</xsl:variable>
18 <xsl:variable name="binder">color: rgb(0, 160, 0);</xsl:variable>
19 <xsl:variable name="global">color: rgb(0, 0, 255);</xsl:variable>
20
21 <xsl:template name="sp">
22    <xsl:text> </xsl:text>
23 </xsl:template>
24
25 <xsl:template name="cm">
26    <xsl:text>, </xsl:text>
27 </xsl:template>
28
29 <xsl:template name="sl">
30    <xsl:text>/</xsl:text>
31 </xsl:template>
32
33 <xsl:template name="plus">
34    <xsl:text>+</xsl:text>
35 </xsl:template>
36
37 <xsl:template name="fs">
38    <xsl:text>.&#x200B;</xsl:text>
39 </xsl:template>
40
41 <xsl:template name="op">
42    <xsl:text>(</xsl:text>
43 </xsl:template>
44
45 <xsl:template name="cp">
46    <xsl:text>)</xsl:text>
47 </xsl:template>
48
49 <xsl:template name="ob">
50    <span style="{$binder}">
51       <xsl:text>[</xsl:text>
52    </span>
53 </xsl:template>
54
55 <xsl:template name="cb">
56    <span style="{$binder}">
57       <xsl:text>]</xsl:text>
58    </span>
59 </xsl:template>
60
61 <xsl:template name="oa">
62    <span style="{$cast}">
63       <xsl:text>&lt;</xsl:text>
64    </span>
65 </xsl:template>
66
67 <xsl:template name="ca">
68    <span style="{$cast}">
69       <xsl:text>&gt;</xsl:text>
70    </span>
71 </xsl:template>
72
73 <xsl:template name="cn">
74    <span style="{$binder}">
75       <xsl:text>:</xsl:text>
76    </span>
77 </xsl:template>
78
79 <xsl:template name="eq">
80    <span style="{$binder}">
81       <xsl:text>=</xsl:text>
82    </span>
83 </xsl:template>
84
85 <xsl:template name="lambda">
86    <a name="" title="{@mark}">
87       <span style="{$binder}">
88          <xsl:choose>
89             <xsl:when test="@level=0">
90                <xsl:text disable-output-escaping="yes">&amp;Pi;</xsl:text>
91                <sup><xsl:value-of select="@level"/></sup>
92             </xsl:when>
93             <xsl:when test="@level=1">
94                <xsl:text disable-output-escaping="yes">&amp;Pi;</xsl:text>
95             </xsl:when>
96             <xsl:when test="@level=2">
97                <xsl:text disable-output-escaping="yes">&amp;lambda;</xsl:text>
98             </xsl:when>
99             <xsl:when test="not(@level)">
100                <xsl:text disable-output-escaping="yes">&amp;lambda;</xsl:text>
101                <sup><xsl:text disable-output-escaping="yes">&amp;infin;</xsl:text></sup>
102             </xsl:when>
103             <xsl:otherwise>
104                <xsl:text disable-output-escaping="yes">&amp;lambda;</xsl:text>
105                <sup><xsl:value-of select="@level"/></sup>
106             </xsl:otherwise>        
107          </xsl:choose>
108       </span>
109    </a>
110 </xsl:template>
111
112 <xsl:template name="delta">
113    <a name="" title="{@mark}">
114       <span style="{$binder}">
115          <xsl:text disable-output-escaping="yes">&amp;delta;</xsl:text>
116       </span>
117    </a>
118 </xsl:template>
119
120 <xsl:template name="chi">
121    <a name="" title="{@mark}">
122       <span style="{$binder}">
123          <xsl:text disable-output-escaping="yes">&amp;chi;</xsl:text>
124       </span>
125    </a>
126 </xsl:template>
127
128 <xsl:template name="position">
129    <xsl:variable name="index">
130       <xsl:value-of select="@position"/>
131       <xsl:if test="@offset != 0">
132          <xsl:call-template name="plus"/>
133          <xsl:value-of select="@offset"/>
134       </xsl:if>
135    </xsl:variable>
136    <a name="" title="{$index}">
137       <xsl:value-of select="@name"/>
138    </a>
139 </xsl:template>
140
141 <xsl:template name="uri">
142    <xsl:variable name="url">
143       <xsl:value-of select="$baseurl"/>
144       <xsl:value-of select="substring-after(@uri,'ld:')"/>
145       <xsl:text>.html</xsl:text>
146    </xsl:variable>
147    <a href="{$url}" title="{@uri}"><xsl:value-of select="@name"/></a>
148 </xsl:template>
149
150 <xsl:template name="global">
151    <span style="{$global}">
152       <a name="" title="{@mark}">
153          <xsl:value-of select="@name"/>
154       </a>
155    </span>
156 </xsl:template>
157
158 <xsl:template name="mk_names">
159    <xsl:param name="names">
160       <xsl:value-of select="normalize-space(@name)"/>
161       <xsl:call-template name="sp"/>   
162    </xsl:param>
163    <xsl:param name="sep" select="false()"/>  
164    <xsl:if test="$names and $sep">
165       <xsl:call-template name="cm"/>
166    </xsl:if>
167    <xsl:if test="$names">
168       <xsl:value-of select="substring-before($names, ' ')"/>
169       <xsl:call-template name="mk_names">
170          <xsl:with-param name="names" select="substring-after($names, ' ')"/>
171          <xsl:with-param name="sep" select="true()"/>
172       </xsl:call-template>
173    </xsl:if>
174 </xsl:template>
175
176 <xsl:template name="mk_terms">
177    <xsl:for-each select="*">
178       <xsl:apply-templates select="."/>
179       <xsl:if test="(name()='Sort' or name()='LRef' or name()='GRef') and position()!=last()">
180          <xsl:call-template name="cm"/>
181       </xsl:if>
182    </xsl:for-each>
183 </xsl:template>
184
185 <xsl:template name="mk_binder">
186    <xsl:param name="sep-seq"/>
187    <xsl:call-template name="ob"/>
188    <xsl:call-template name="mk_binder_rec1">
189       <xsl:with-param name="sep-seq" select="$sep-seq"/>
190    </xsl:call-template>
191    <xsl:call-template name="cb"/>
192    <xsl:call-template name="fs"/>
193 </xsl:template>
194
195 <xsl:template name="mk_binder_rec1">
196    <xsl:param name="sep-seq"/>
197    <xsl:param name="names">
198       <xsl:value-of select="normalize-space(@name)"/>
199       <xsl:call-template name="sp"/>   
200    </xsl:param>
201    <xsl:param name="sep" select="false()"/>
202    <xsl:param name="start" select="true()"/>
203    <xsl:param name="pos" select="1"/>
204    <xsl:choose>
205       <xsl:when test="$start and $pos &lt;= count(*)">
206          <xsl:if test="$names and $sep">
207             <xsl:call-template name="cm"/>
208          </xsl:if>
209          <xsl:value-of select="substring-before($names, ' ')"/>
210          <xsl:copy-of select="$sep-seq"/>
211          <xsl:call-template name="mk_binder_rec2">
212             <xsl:with-param name="names" select="substring-after($names, ' ')"/>
213             <xsl:with-param name="pos" select="$pos"/>
214             <xsl:with-param name="sep-seq" select="$sep-seq"/>
215          </xsl:call-template>
216       </xsl:when>
217       <xsl:when test="not($start) and $pos &lt;= count(*)">
218          <xsl:call-template name="mk_binder_rec2">
219             <xsl:with-param name="names" select="$names"/>
220             <xsl:with-param name="pos" select="$pos"/>
221             <xsl:with-param name="sep-seq" select="$sep-seq"/>
222          </xsl:call-template>      
223       </xsl:when>
224    </xsl:choose>
225 </xsl:template>
226
227 <xsl:template name="mk_binder_rec2">
228    <xsl:param name="sep-seq"/>
229    <xsl:param name="names"/>
230    <xsl:param name="pos"/>
231    <xsl:apply-templates select="*[$pos]"/>
232    <xsl:call-template name="mk_binder_rec1">
233       <xsl:with-param name="sep-seq" select="$sep-seq"/>
234       <xsl:with-param name="names" select="$names"/>
235       <xsl:with-param name="sep" select="true()"/>
236       <xsl:with-param name="start" select="name(*[$pos])='Sort' or name(*[$pos])='LRef' or name(*[$pos])='GRef'"/>
237       <xsl:with-param name="pos" select="$pos+1"/>
238    </xsl:call-template>      
239 </xsl:template>
240
241 <xsl:template name="mk_segment">
242    <xsl:param name="path"/>
243    <xsl:param name="name"/>
244    <xsl:variable name="url">
245       <xsl:value-of select="$baseurl"/>
246       <xsl:value-of select="substring-after($path,'ld:')"/>
247    </xsl:variable>
248    <a href="{$url}"><xsl:value-of select="$name"/></a>
249    <xsl:call-template name="sl"/>
250 </xsl:template>
251
252 <xsl:template name="mk_path">
253    <xsl:param name="rpath" select="@uri"/>
254    <xsl:variable name="newrpath" select="substring-after($rpath,'/')"/>
255    <xsl:choose>
256       <xsl:when test="$newrpath">
257          <xsl:variable name="segment" select="substring-before($rpath,$newrpath)"/>   
258          <xsl:call-template name="mk_segment">
259             <xsl:with-param name="path" select="substring-before(@uri,$newrpath)"/>
260             <xsl:with-param name="name" select="substring-before($segment,'/')"/>
261          </xsl:call-template>
262          <xsl:call-template name="mk_path">
263             <xsl:with-param name="rpath" select="$newrpath"/>
264          </xsl:call-template>
265       </xsl:when>
266       <xsl:otherwise>
267          <xsl:variable name="path" select="substring-before(@uri,$rpath)"/>
268          <xsl:value-of select="substring-after(@uri,$path)"/>
269       </xsl:otherwise>
270    </xsl:choose>
271 </xsl:template>
272
273 <xsl:template name="entity">
274    <xsl:call-template name="sp"/>
275    <xsl:call-template name="global"/>
276    <xsl:call-template name="sp"/>
277    <xsl:call-template name="op"/>
278    <xsl:call-template name="mk_path"/>
279    <xsl:call-template name="cp"/>
280 </xsl:template>
281
282 <xsl:template name="META">
283    <div>Informal description: "<xsl:value-of select="@meta"/>"</div><h2/>
284 </xsl:template>
285
286 <xsl:template name="ld">
287    <xsl:text disable-output-escaping="yes">&amp;lambda;&amp;delta;</xsl:text>
288 </xsl:template>
289
290 </xsl:stylesheet>