]> matita.cs.unibo.it Git - helm.git/blob - helm/software/lambda-delta/xml/ld-html-library.xsl
2094c2a87929dbae5278af3b6bcf71e22ada6fad
[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:text disable-output-escaping="yes">&amp;lambda;</xsl:text>
89       </span>
90    </a>
91 </xsl:template>
92
93 <xsl:template name="delta">
94    <a name="" title="{@mark}">
95       <span style="{$binder}">
96          <xsl:text disable-output-escaping="yes">&amp;delta;</xsl:text>
97       </span>
98    </a>
99 </xsl:template>
100
101 <xsl:template name="chi">
102    <a name="" title="{@mark}">
103       <span style="{$binder}">
104          <xsl:text disable-output-escaping="yes">&amp;chi;</xsl:text>
105       </span>
106    </a>
107 </xsl:template>
108
109 <xsl:template name="position">
110    <xsl:variable name="index">
111       <xsl:value-of select="@position"/>
112       <xsl:if test="@offset != 0">
113          <xsl:call-template name="plus"/>         
114          <xsl:value-of select="@offset"/>      
115       </xsl:if>
116    </xsl:variable>
117    <a name="" title="{$index}">
118       <xsl:value-of select="@name"/>
119    </a>
120 </xsl:template>
121
122 <xsl:template name="uri">
123    <xsl:variable name="url">
124       <xsl:value-of select="$baseurl"/>
125       <xsl:value-of select="substring-after(@uri,'ld:')"/>
126       <xsl:text>.html</xsl:text>
127    </xsl:variable>
128    <a href="{$url}" title="{@uri}"><xsl:value-of select="@name"/></a>
129 </xsl:template>
130
131 <xsl:template name="global">
132    <span style="{$global}">
133       <a name="" title="{@mark}">
134          <xsl:value-of select="@name"/>
135       </a>
136    </span>
137 </xsl:template>
138
139 <xsl:template name="mk_names">
140    <xsl:param name="names">
141       <xsl:value-of select="normalize-space(@name)"/>
142       <xsl:call-template name="sp"/>   
143    </xsl:param>
144    <xsl:param name="sep" select="false()"/>  
145    <xsl:if test="$names and $sep">
146       <xsl:call-template name="cm"/>
147    </xsl:if>
148    <xsl:if test="$names">
149       <xsl:value-of select="substring-before($names, ' ')"/>
150       <xsl:call-template name="mk_names">
151          <xsl:with-param name="names" select="substring-after($names, ' ')"/>
152          <xsl:with-param name="sep" select="true()"/>
153       </xsl:call-template>
154    </xsl:if>
155 </xsl:template>
156
157 <xsl:template name="mk_terms">
158    <xsl:for-each select="*">
159       <xsl:apply-templates select="."/>
160       <xsl:if test="(name()='Sort' or name()='LRef' or name()='GRef') and position()!=last()">
161          <xsl:call-template name="cm"/>
162       </xsl:if>
163    </xsl:for-each>
164 </xsl:template>
165
166 <xsl:template name="mk_binder">
167    <xsl:param name="sep-seq"/>
168    <xsl:call-template name="ob"/>
169    <xsl:call-template name="mk_binder_rec1">
170       <xsl:with-param name="sep-seq" select="$sep-seq"/>
171    </xsl:call-template>
172    <xsl:call-template name="cb"/>
173    <xsl:call-template name="fs"/>
174 </xsl:template>
175
176 <xsl:template name="mk_binder_rec1">
177    <xsl:param name="sep-seq"/>
178    <xsl:param name="names">
179       <xsl:value-of select="normalize-space(@name)"/>
180       <xsl:call-template name="sp"/>   
181    </xsl:param>
182    <xsl:param name="sep" select="false()"/>
183    <xsl:param name="start" select="true()"/>
184    <xsl:param name="pos" select="1"/>
185    <xsl:choose>
186       <xsl:when test="$start and $pos &lt;= count(*)">
187          <xsl:if test="$names and $sep">
188             <xsl:call-template name="cm"/>
189          </xsl:if>
190          <xsl:value-of select="substring-before($names, ' ')"/>
191          <xsl:copy-of select="$sep-seq"/>
192          <xsl:call-template name="mk_binder_rec2">
193             <xsl:with-param name="names" select="substring-after($names, ' ')"/>
194             <xsl:with-param name="pos" select="$pos"/>
195             <xsl:with-param name="sep-seq" select="$sep-seq"/>
196          </xsl:call-template>
197       </xsl:when>
198       <xsl:when test="not($start) and $pos &lt;= count(*)">
199          <xsl:call-template name="mk_binder_rec2">
200             <xsl:with-param name="names" select="$names"/>
201             <xsl:with-param name="pos" select="$pos"/>
202             <xsl:with-param name="sep-seq" select="$sep-seq"/>
203          </xsl:call-template>      
204       </xsl:when>
205    </xsl:choose>
206 </xsl:template>
207
208 <xsl:template name="mk_binder_rec2">
209    <xsl:param name="sep-seq"/>
210    <xsl:param name="names"/>
211    <xsl:param name="pos"/>
212    <xsl:apply-templates select="*[$pos]"/>
213    <xsl:call-template name="mk_binder_rec1">
214       <xsl:with-param name="sep-seq" select="$sep-seq"/>
215       <xsl:with-param name="names" select="$names"/>
216       <xsl:with-param name="sep" select="true()"/>
217       <xsl:with-param name="start" select="name(*[$pos])='Sort' or name(*[$pos])='LRef' or name(*[$pos])='GRef'"/>
218       <xsl:with-param name="pos" select="$pos+1"/>
219    </xsl:call-template>      
220 </xsl:template>
221
222 <xsl:template name="mk_segment">
223    <xsl:param name="path"/>
224    <xsl:param name="name"/>
225    <xsl:variable name="url">
226       <xsl:value-of select="$baseurl"/>
227       <xsl:value-of select="substring-after($path,'ld:')"/>
228    </xsl:variable>
229    <a href="{$url}"><xsl:value-of select="$name"/></a>
230    <xsl:call-template name="sl"/>
231 </xsl:template>
232
233 <xsl:template name="mk_path">
234    <xsl:param name="rpath" select="@uri"/>
235    <xsl:variable name="newrpath" select="substring-after($rpath,'/')"/>
236    <xsl:choose>
237       <xsl:when test="$newrpath">
238          <xsl:variable name="segment" select="substring-before($rpath,$newrpath)"/>   
239          <xsl:call-template name="mk_segment">
240             <xsl:with-param name="path" select="substring-before(@uri,$newrpath)"/>
241             <xsl:with-param name="name" select="substring-before($segment,'/')"/>
242          </xsl:call-template>
243          <xsl:call-template name="mk_path">
244             <xsl:with-param name="rpath" select="$newrpath"/>
245          </xsl:call-template>
246       </xsl:when>
247       <xsl:otherwise>
248          <xsl:variable name="path" select="substring-before(@uri,$rpath)"/>
249          <xsl:value-of select="substring-after(@uri,$path)"/>
250       </xsl:otherwise>
251    </xsl:choose>
252 </xsl:template>
253
254 <xsl:template name="entity">
255    <xsl:call-template name="sp"/>
256    <xsl:call-template name="global"/>
257    <xsl:call-template name="sp"/>
258    <xsl:call-template name="op"/>
259    <xsl:call-template name="mk_path"/>
260    <xsl:call-template name="cp"/>
261 </xsl:template>
262
263 <xsl:template name="META">
264    <div>Informal description: "<xsl:value-of select="@meta"/>"</div><h2/>
265 </xsl:template>
266
267 <xsl:template name="ld">
268    <xsl:text disable-output-escaping="yes">&amp;lambda;&amp;delta;</xsl:text>
269 </xsl:template>
270
271 </xsl:stylesheet>