3 <!-- Copyright (C) 2000, HELM Team -->
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. -->
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. -->
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. -->
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. -->
24 <!-- For details, see the HELM World-Wide-Web page, -->
25 <!-- http://cs.unibo.it/helm/. -->
27 <!--******************************************************************-->
28 <!-- Library for MML Content -->
29 <!-- First draft: March 20 2001, Ferruccio Guidi -->
30 <!--******************************************************************-->
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">
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 -->
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"/>
49 <xsl:attribute name="helm:xref">
50 <xsl:value-of select="$c-tag/@id"/>
53 <xsl:copy-of select="$mbody"/>
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"/>
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"/>
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>
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>
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"/>