]> matita.cs.unibo.it Git - helm.git/blob - helm/style/contentlib.xsl
- the mathql interpreter is not helm-dependent any more
[helm.git] / helm / style / contentlib.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 <!-- Library for MML Content                                          -->
29 <!-- First draft: March 20 2001, Ferruccio Guidi                      -->
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:template name="out-mml-op">       <!-- outputs MML nodes for operators -->
37    <xsl:param name="hide" select="0"/> <!-- number of hidden parameters     -->
38    <xsl:param name="arity"/>           <!-- operator arity                  -->
39    <xsl:param name="c-tag"/>           <!-- CIC    tag                      -->
40    <xsl:param name="m-tag"/>           <!-- MathML tag                      -->
41    <xsl:param name="mbody"/>           <!-- other sons of m:apply           -->
42    <xsl:choose>
43       <xsl:when test="count(child::*) = $arity + $hide + 1">
44          <m:apply helm:xref="{@id}">
45             <xsl:element name="{concat('m:',$m-tag)}">
46                <xsl:attribute name="definitionURL">
47                   <xsl:value-of select="$c-tag/@uri"/> 
48                </xsl:attribute>
49                <xsl:attribute name="helm:xref">
50                   <xsl:value-of select="$c-tag/@id"/>
51                </xsl:attribute>
52             </xsl:element>
53             <xsl:copy-of select="$mbody"/>
54          </m:apply>
55       </xsl:when>
56       <xsl:otherwise>
57          <xsl:apply-imports/>
58       </xsl:otherwise>
59    </xsl:choose>
60 </xsl:template>
61
62 <!-- noannot -->
63
64 <xsl:template name="mk-mml-op-noannot">    <!-- makes MML nodes for operators (noannot mode) --> 
65    <xsl:param name="hide" 
66               select="0"/>                          <!-- hidden params      -->
67    <xsl:param name="arity"
68               select="2"/>                          <!-- operator arity      -->
69    <xsl:param name="c-tag"/>                        <!-- CIC    tag          -->
70    <xsl:param name="m-tag"/>                        <!-- MathML tag          -->
71    <xsl:param name="rnset" 
72               select="*[position() > 1 + $hide]"/>  <!-- nodes for recursion -->
73    <xsl:variable name="mbody">
74       <xsl:apply-templates select="$rnset" mode="noannot"/>
75    </xsl:variable>
76    <xsl:call-template name="out-mml-op">
77       <xsl:with-param name="hide"  select="$hide"/>
78       <xsl:with-param name="arity" select="$arity"/>
79       <xsl:with-param name="c-tag" select="$c-tag"/>
80       <xsl:with-param name="m-tag" select="$m-tag"/>
81       <xsl:with-param name="mbody" select="$mbody"/>
82    </xsl:call-template>
83 </xsl:template>
84
85 <!-- interp -->
86
87 <xsl:template name="start-interp"> <!-- interp mode starter -->
88    <xsl:param name="rtree"/>
89    <xsl:param name="atree"/>   
90    <m:apply helm:xref="{@id}">
91       <m:csymbol>interp</m:csymbol>
92       <xsl:apply-templates mode="interp" select="$rtree">
93          <xsl:with-param name="atree" select="$atree"/>
94       </xsl:apply-templates>
95    </m:apply>
96 </xsl:template>
97
98 <xsl:template name="mk-mml-op-interp"> <!-- make MML node for operators (interp mode) --> 
99    <xsl:param name="arity"/>           <!-- operator arity        -->
100    <xsl:param name="c-tag"/>           <!-- CIC    tag            -->
101    <xsl:param name="m-tag"/>           <!-- MathML tag            -->
102    <xsl:param name="atree"/>           <!-- abstract tree pointer -->
103    <xsl:variable name="mbody">
104       <xsl:apply-templates select="*[position() > 1]" mode="interp">
105          <xsl:with-param name="atree" select="$atree"/>
106       </xsl:apply-templates>
107    </xsl:variable>
108    <xsl:call-template name="out-mml-op">
109       <xsl:with-param name="arity" select="$arity"/>
110       <xsl:with-param name="c-tag" select="$c-tag"/>
111       <xsl:with-param name="m-tag" select="$m-tag"/>
112       <xsl:with-param name="mbody" select="$mbody"/>
113    </xsl:call-template>
114 </xsl:template>
115
116 </xsl:stylesheet>