]> matita.cs.unibo.it Git - helm.git/blob - helm/style/annotatedcont.xsl
added LICENSE
[helm.git] / helm / style / annotatedcont.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 annotated MathML content to MathML presentation:  -->
29 <!-- First draft: March 29 2000, Claudio Sacerdoti Coen, Irene Schena      -->
30 <!--***********************************************************************--> 
31
32 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
33                               xmlns:m="http://www.w3.org/1998/Math/MathML"
34                               xmlns:helm="http://www.cs.unibo.it/helm">
35
36 <xsl:import href="objcontent.xsl"/>
37
38 <xsl:key name="id" use="@id" match="LAMBDA|PROD|CAST|REL|SORT|APPLY|VAR|META|CONST|MUTIND|MUTCONSTRUCT|MUTCASE|FIX|COFIX|Definition|Axiom|CurrentProof|InductiveDefinition|Variable"/>
39
40 <xsl:key name="annid" use="@of" match="Annotation"/>
41
42 <xsl:template match="Definition|Axiom|CurrentProof|InductiveDefinition|Variable">
43     <xsl:choose>
44     <xsl:when test="key('annid',@id)">
45      <annotation helm:xref="{@id}">
46       <xsl:apply-templates select="key('annid',@id)"/>
47      </annotation>
48     </xsl:when>
49     <xsl:otherwise>
50      <xsl:apply-templates select="." mode="noannot"/>
51     </xsl:otherwise>
52     </xsl:choose>
53 </xsl:template>
54
55 <xsl:template match="LAMBDA|PROD|CAST|REL|SORT|APPLY|VAR|META|CONST|MUTIND|MUTCONSTRUCT|MUTCASE|FIX|COFIX">
56     <xsl:choose>
57     <xsl:when test="key('annid',@id)">
58      <annotation helm:xref="{@id}">
59       <xsl:apply-templates select="key('annid',@id)"/>
60      </annotation>
61     </xsl:when>
62     <xsl:otherwise>
63      <m:math>
64       <xsl:apply-templates select="." mode="noannot"/>
65      </m:math>
66     </xsl:otherwise>
67     </xsl:choose>
68 </xsl:template>
69
70 <xsl:template match="node">
71  <xsl:variable name="id" select="@id"/>
72  <xsl:apply-templates select="key('id',$id)"/>
73 </xsl:template>
74
75 <xsl:template match="attribute">
76  <xsl:variable name="id" select="@id"/>
77  <xsl:variable name="name" select="@name"/>
78  <xsl:variable name="child" select="@child"/>
79  <xsl:variable name="grandchild" select="@grandchild"/>
80  <xsl:choose>
81   <xsl:when test="$child">
82    <xsl:choose>
83     <xsl:when test="$grandchild">
84      <xsl:value-of select="key('id',$id)/*[position() = $child]/*[position() = $grandchild]/attribute::*[name() = $name]"/>
85     </xsl:when>
86     <xsl:otherwise>
87      <xsl:value-of select="key('id',$id)/*[position() = $child]/attribute::*[name() = $name]"/>
88     </xsl:otherwise>
89    </xsl:choose>
90   </xsl:when>
91   <xsl:otherwise>
92    <xsl:value-of select="key('id',$id)/attribute::*[name() = $name]"/>
93   </xsl:otherwise>
94  </xsl:choose>
95 </xsl:template>
96
97 </xsl:stylesheet>