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