]> matita.cs.unibo.it Git - helm.git/blob - helm/style/contentlib.xsl
contentlib.xsl improved, now handles eq eqT
[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                               xmlns:xlink="http://www.w3.org/1999/xlink">
36
37 <xsl:template name="out-mml-op"> <!-- outputs MML nodes for operators -->
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 + 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="arity"/>               <!-- operator arity        -->
66    <xsl:param name="c-tag"/>               <!-- CIC    tag            -->
67    <xsl:param name="m-tag"/>               <!-- MathML tag            -->
68    <xsl:param name="rnset" 
69               select="*[position() > 1]"/> <!-- nodes for recursion   -->
70    <xsl:variable name="mbody">
71       <xsl:apply-templates select="$rnset" mode="noannot"/>
72    </xsl:variable>
73    <xsl:call-template name="out-mml-op">
74       <xsl:with-param name="arity" select="$arity"/>
75       <xsl:with-param name="c-tag" select="$c-tag"/>
76       <xsl:with-param name="m-tag" select="$m-tag"/>
77       <xsl:with-param name="mbody" select="$mbody"/>
78    </xsl:call-template>
79 </xsl:template>
80
81 <!-- interp -->
82
83 <xsl:template name="start-interp"> <!-- interp mode starter -->
84    <xsl:param name="rtree"/>
85    <xsl:param name="atree"/>   
86    <m:apply helm:xref="{@id}">
87       <m:csymbol>interp</m:csymbol>
88       <xsl:apply-templates mode="interp" select="$rtree">
89          <xsl:with-param name="atree" select="$atree"/>
90       </xsl:apply-templates>
91    </m:apply>
92 </xsl:template>
93
94 <xsl:template name="mk-mml-op-interp"> <!-- make MML node for operators (interp mode) --> 
95    <xsl:param name="arity"/>           <!-- operator arity        -->
96    <xsl:param name="c-tag"/>           <!-- CIC    tag            -->
97    <xsl:param name="m-tag"/>           <!-- MathML tag            -->
98    <xsl:param name="atree"/>           <!-- abstract tree pointer -->
99    <xsl:variable name="mbody">
100       <xsl:apply-templates select="*[position() > 1]" mode="interp">
101          <xsl:with-param name="atree" select="$atree"/>
102       </xsl:apply-templates>
103    </xsl:variable>
104    <xsl:call-template name="out-mml-op">
105       <xsl:with-param name="arity" select="$arity"/>
106       <xsl:with-param name="c-tag" select="$c-tag"/>
107       <xsl:with-param name="m-tag" select="$m-tag"/>
108       <xsl:with-param name="mbody" select="$mbody"/>
109    </xsl:call-template>
110 </xsl:template>
111
112 </xsl:stylesheet>