]> matita.cs.unibo.it Git - helm.git/blob - helm/style/objcontent.xsl
Some stylesheets are now generated with Di Lena's meta_style.
[helm.git] / helm / style / objcontent.xsl
1 <?xml version="1.0"?>
2
3 <!-- Copyright (C) 2000, HELM Team                                     -->
4 <!--                                                                   -->
5 <!-- This file is part of HELM, an Hypertextual, Electronic            -->
6 <!-- Library of Mathematics, developed at the Computer Science         -->
7 <!-- Department, University of Bologna, Italy.                         -->
8 <!--                                                                   -->
9 <!-- HELM is free software; you can redistribute it and/or             -->
10 <!-- modify it under the terms of the GNU General Public License       -->
11 <!-- as published by the Free Software Foundation; either version 2    -->
12 <!-- of the License, or (at your option) any later version.            -->
13 <!--                                                                   -->
14 <!-- HELM is distributed in the hope that it will be useful,           -->
15 <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of    -->
16 <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     -->
17 <!-- GNU General Public License for more details.                      -->
18 <!--                                                                   -->
19 <!-- You should have received a copy of the GNU General Public License -->
20 <!-- along with HELM; if not, write to the Free Software               -->
21 <!-- Foundation, Inc., 59 Temple Place - Suite 330, Boston,            -->
22 <!-- MA  02111-1307, USA.                                              -->
23 <!--                                                                   -->
24 <!-- For details, see the HELM World-Wide-Web page,                    -->
25 <!-- http://cs.unibo.it/helm/.                                         -->
26
27 <!--******************************************************************--> 
28 <!-- XSLT version 0.1 of CIC objects to objects and MathML content:   -->
29 <!-- First draft: March 21 2000, Irene Schena                         -->
30 <!--******************************************************************-->
31
32 <!--******************************************************************-->
33 <!-- MANCA: gestione annotation e linking                             -->
34 <!--******************************************************************-->
35
36 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
37                               xmlns:m="http://www.w3.org/1998/Math/MathML"
38                               xmlns:helm="http://www.cs.unibo.it/helm">
39
40 <xsl:import href="content.xsl"/>
41
42 <!-- ROOT -->
43
44 <xsl:template match="cicxml">
45     <xsl:variable name="url"><xsl:value-of select="@baseurl"/></xsl:variable>
46     <xsl:variable name="stylesheet"><xsl:value-of select="@stylesheet"/></xsl:variable>
47     <!--
48     <xsl:processing-instruction name="cocoon-format">type="text/xml"</xsl:processing-instruction>
49     <xsl:processing-instruction name="xml-stylesheet">href="<xsl:value-of select='concat($url,$stylesheet)'/>" type="text/xsl"</xsl:processing-instruction>
50     <xsl:processing-instruction name="cocoon-process">type="xslt"</xsl:processing-instruction>
51     -->
52     <xsl:apply-templates select="*[1]"/>
53 </xsl:template>
54
55
56 <!-- FUNZIONI AUSILIARIE -->
57
58 <xsl:template name="name_of_uri_bis">
59  <xsl:param name="uri" select="&quot;&quot;"/>
60   <xsl:variable name="suffix" select="substring-after($uri, &quot;/&quot;)"/>
61   <xsl:choose>
62    <xsl:when test="$suffix = &quot;&quot;">
63     <xsl:value-of select="substring-before($uri,&quot;.var&quot;)"/>
64    </xsl:when>
65    <xsl:otherwise>
66     <xsl:call-template name="name_of_uri_bis">
67      <xsl:with-param name="uri" select="$suffix"/>
68     </xsl:call-template>
69    </xsl:otherwise>
70   </xsl:choose>
71 </xsl:template>
72
73 <xsl:template name="var_name">
74  <xsl:param name="uri"/>
75  <xsl:param name="string" select="&quot;&quot;"/>
76   <xsl:variable name="prefix" select="substring-before($uri, &quot; &quot;)"/>
77   <xsl:variable name="suffix" select="substring-after($uri, &quot; &quot;)"/> 
78   <xsl:variable name="prefix">
79    <xsl:call-template name="name_of_uri_bis">
80     <xsl:with-param name="uri" select="$prefix"/>
81    </xsl:call-template>
82   </xsl:variable> 
83   <!--xsl:if test="string($prefix) != &quot; &quot; "-->
84    <xsl:variable name="string" select="concat($string,', ', $prefix)"/>
85   <!--/xsl:if-->
86   <xsl:choose>
87    <xsl:when test="$suffix = &quot;&quot;">
88    <xsl:value-of select="substring-after(concat($string, ' '),',')"/>
89    </xsl:when>
90    <xsl:otherwise>
91    <xsl:call-template name="var_name">
92     <xsl:with-param name="uri" select="$suffix"/>
93     <xsl:with-param name="string" select="$string"/>
94    </xsl:call-template>
95    </xsl:otherwise>
96   </xsl:choose>
97 </xsl:template>
98                                   
99                                   
100 <!-- CIC OBJECTS -->
101
102 <xsl:template match="Sequent">  <!-- For Sequents there are no annotations --> 
103     <Sequent helm:xref="{@id}" no="{@no}">
104      <xsl:for-each select="Decl|Def|Hidden">
105       <xsl:copy>
106        <xsl:attribute name="name">
107         <xsl:value-of select="@name"/>
108        </xsl:attribute>
109        <xsl:attribute name="helm:xref">
110         <xsl:value-of select="@id"/>
111        </xsl:attribute>
112        <xsl:apply-templates select="*[1]"/>
113       </xsl:copy>
114      </xsl:for-each>
115      <Goal>
116       <xsl:apply-templates select="Goal/*[1]"/>
117      </Goal>
118     </Sequent> 
119 </xsl:template>
120
121 <xsl:template match="ConstantType" mode="noannot">
122     <Definition name="{@name}" helm:xref="{@id}">  
123      <xsl:if test="string(@params) != &quot;&quot;">
124       <Params>
125       <xsl:call-template name="var_name">
126        <xsl:with-param name="uri" select="concat(@params, ' ')"/>
127       </xsl:call-template>
128       </Params>
129      </xsl:if>
130 <!--     <xsl:choose>
131       <xsl:when test="$showproof=0">
132        <body>
133         <m:mi>Here</m:mi>
134        </body>
135       </xsl:when>
136       <xsl:otherwise>
137        <body>
138         <xsl:apply-templates select="body"/>
139        </body>
140       </xsl:otherwise>
141      </xsl:choose> -->
142      <body/>
143      <type>
144        <xsl:apply-templates select="./*[1]"/>
145      </type>
146     </Definition> 
147 </xsl:template>
148
149 <xsl:template match="ConstantBody" mode= "noannot">
150     <Definition name="{@for}" helm:xref="{@id}">  
151      <xsl:if test="string(@params) != &quot;&quot;">
152       <Params>
153        <xsl:call-template name="var_name">
154        <xsl:with-param name="uri" select="concat(@params, ' ')"/>
155        </xsl:call-template>
156       </Params>
157      </xsl:if>
158      <body>
159       <xsl:apply-templates select="./*[1]"/>
160      </body>
161      <type>
162        <xsl:apply-templates select="document($ConstantTypeUrl)/*[1]/*[1]"/>
163      </type>
164     </Definition>
165 </xsl:template>
166
167
168 <xsl:template match="CurrentProof" mode="noannot">
169     <CurrentProof name="{@of}" helm:xref="{@id}">
170      <xsl:for-each select="Conjecture">
171       <Conjecture no="{@no}" helm:xref="{@id}">
172         <xsl:for-each select="*">
173          <xsl:copy>
174           <xsl:copy-of select="@name"/>
175           <xsl:attribute name="helm:xref">
176            <xsl:value-of select="@id"/>
177           </xsl:attribute>
178           <xsl:apply-templates select="*"/>
179          </xsl:copy>
180         </xsl:for-each>
181       </Conjecture>
182      </xsl:for-each>
183      <body>
184        <xsl:apply-templates select="body/*[1]"/>
185      </body>
186      <type>
187        <xsl:apply-templates select="document($ConstantTypeUrl)/*[1]/*[1]"/>
188      </type>
189     </CurrentProof> 
190 </xsl:template>
191
192 <xsl:template match="InductiveDefinition" mode="noannot">
193     <InductiveDefinition helm:xref="{@id}">
194      <xsl:if test="string(@params) != &quot;&quot;">
195       <Params>
196        <xsl:value-of select="@params"/>
197       </Params>
198      </xsl:if> 
199      <xsl:if test="string(@noParams) != 0"> 
200       <xsl:apply-templates select="InductiveType/arity/*[1]" mode="abstparams">
201        <xsl:with-param name="noparams" select="@noParams"/>
202       </xsl:apply-templates>
203      </xsl:if>
204      <xsl:for-each select="InductiveType">
205       <InductiveType name="{./@name}" inductive="{./@inductive}">
206        <arity>
207          <xsl:apply-templates select="./arity/*[1]" mode="abstparams">
208           <xsl:with-param name="noparams" select="../@noParams"/>
209           <xsl:with-param name="target" select="1"/>
210          </xsl:apply-templates>
211        </arity>
212        <xsl:for-each select="./Constructor">
213         <Constructor name="{./@name}">
214           <xsl:apply-templates select="./*[1]" mode="abstparams">
215            <xsl:with-param name="noparams" select="../../@noParams"/>
216            <xsl:with-param name="target" select="1"/>
217           </xsl:apply-templates>
218         </Constructor>
219        </xsl:for-each>
220       </InductiveType>
221      </xsl:for-each> 
222     </InductiveDefinition>       
223 </xsl:template>
224
225 <xsl:template match="Variable" mode="noannot"> 
226     <Variable name="{@name}" helm:xref="{@id}">
227      <xsl:if test="name(*[1])='body'">
228       <body>
229        <xsl:apply-templates select="body/*[1]"/>
230       </body>
231      </xsl:if>
232      <type>
233        <xsl:apply-templates select="type/*[1]"/>
234      </type>
235     </Variable> 
236 </xsl:template>
237
238 </xsl:stylesheet>