]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/style/style_prima_del_linguaggio_naturale/objcontent_old.xsl
Added style before natural language synthesis
[helm.git] / helm / style / style_prima_del_linguaggio_naturale / objcontent_old.xsl
diff --git a/helm/style/style_prima_del_linguaggio_naturale/objcontent_old.xsl b/helm/style/style_prima_del_linguaggio_naturale/objcontent_old.xsl
new file mode 100644 (file)
index 0000000..d3514b4
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0"?>
+
+<!--******************************************************************--> 
+<!-- XSLT version 0.1 of CIC objects to objects and MathML content:   -->
+<!-- First draft: March 21 2000, Irene Schena                         -->
+<!--******************************************************************-->
+
+<!--******************************************************************-->
+<!-- MANCA: gestione annotation e linking                             -->
+<!--******************************************************************-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                              xmlns:m="http://www.w3.org/1998/Math/MathML"
+                              xmlns:helm="http://www.cs.unibo.it/helm">
+
+<xsl:import href="content.xsl"/>
+
+<!-- ROOT -->
+
+<xsl:template match="cicxml">
+    <xsl:variable name="url"><xsl:value-of select="@baseurl"/></xsl:variable>
+    <xsl:variable name="stylesheet"><xsl:value-of select="@stylesheet"/></xsl:variable>
+    <xsl:processing-instruction name="cocoon-format">type="text/xml"</xsl:processing-instruction>
+    <xsl:processing-instruction name="xml-stylesheet">href="<xsl:value-of select='concat($url,$stylesheet)'/>" type="text/xsl"</xsl:processing-instruction>
+    <xsl:processing-instruction name="cocoon-process">type="xslt"</xsl:processing-instruction>
+    <xsl:apply-templates select="*[1]"/>
+</xsl:template>
+
+<!-- CIC OBJECTS -->
+
+<xsl:template match="Definition" mode="noannot">
+    <Definition name="{@name}" helm:xref="{@id}">  
+     <xsl:if test="string(@params) != &quot;&quot;">
+      <Params>
+       <xsl:value-of select="@params"/>
+      </Params>
+     </xsl:if>
+     <body>
+      <xsl:apply-templates select="body"/>
+     </body>
+     <type>
+       <xsl:apply-templates select="type"/>
+     </type>
+    </Definition> 
+</xsl:template>
+
+<xsl:template match="Axiom" mode="noannot"> 
+    <Axiom name="{@name}" helm:xref="{@id}">
+     <xsl:if test="string(@params) != &quot;&quot;">
+      <Params>
+       <xsl:value-of select="@params"/>
+      </Params>
+     </xsl:if>
+     <type>
+       <xsl:apply-templates select="type"/>
+     </type>
+    </Axiom> 
+</xsl:template>
+
+<xsl:template match="CurrentProof" mode="noannot">
+    <CurrentProof name="{@name}" helm:xref="{@id}">
+     <xsl:for-each select="Conjecture">
+      <Conjecture no="./{@no}">
+        <xsl:apply-templates select="."/>
+      </Conjecture>
+     </xsl:for-each>
+     <body>
+       <xsl:apply-templates select="body"/>
+     </body>
+     <type>
+       <xsl:apply-templates select="type"/>
+     </type>
+    </CurrentProof> 
+</xsl:template>
+
+<xsl:template match="InductiveDefinition" mode="noannot">
+    <InductiveDefinition helm:xref="{@id}">
+     <xsl:if test="string(@params) != &quot;&quot;">
+      <Params>
+       <xsl:value-of select="@params"/>
+      </Params>
+     </xsl:if> 
+     <xsl:if test="string(@noParams) != 0"> 
+      <xsl:apply-templates select="InductiveType/arity/*[1]" mode="abstparams">
+       <xsl:with-param name="noparams" select="@noParams"/>
+      </xsl:apply-templates>
+     </xsl:if>
+     <xsl:for-each select="InductiveType">
+      <InductiveType name="{./@name}" inductive="{./@inductive}">
+       <arity>
+         <xsl:apply-templates select="./arity/*[1]" mode="abstparams">
+          <xsl:with-param name="noparams" select="../@noParams"/>
+          <xsl:with-param name="target" select="1"/>
+         </xsl:apply-templates>
+       </arity>
+       <xsl:for-each select="./Constructor">
+        <Constructor name="{./@name}">
+          <xsl:apply-templates select="./*[1]" mode="abstparams">
+           <xsl:with-param name="noparams" select="../../@noParams"/>
+           <xsl:with-param name="target" select="1"/>
+          </xsl:apply-templates>
+        </Constructor>
+       </xsl:for-each>
+      </InductiveType>
+     </xsl:for-each> 
+    </InductiveDefinition>       
+</xsl:template>
+
+<xsl:template match="Variable" mode="noannot"> 
+    <Variable name="{@name}" helm:xref="{@id}">
+     <type>
+       <xsl:apply-templates select="type"/>
+     </type>
+    </Variable> 
+</xsl:template>
+
+<!--*******************************************-->
+<!--    ABSTRACTING PARAMETERS AND COUNTING    -->
+<!--*******************************************-->
+<!-- Si dimentica i CAST dei termini che astrae. Nel caso dell'astrazione -->
+<!-- dei lambda dei pattern del CASE, qualora i lambda non si trovino     -->
+<!-- nella forma weak-head, astrae solo i lambda che trova e restituisce  -->
+<!-- un corpo depurato da tutti i primi cast che precedono il termine     -->
+<!-- restituito.                                                          -->
+
+<xsl:template match="*" mode="abstparams">
+<xsl:param name="noparams" select="0"/>
+<xsl:param name="target" select="0"/>
+<xsl:param name="binder">PROD</xsl:param>
+    <xsl:choose>
+    <xsl:when test="($noparams != 0) and ((name(.)=string($binder)) or (name(.)=&quot;CAST&quot;))">
+     <xsl:choose>
+     <xsl:when test="name(.) = string($binder)">
+      <xsl:if test="$target = 0">
+       <xsl:choose>
+       <xsl:when test="string($binder) = &quot;LAMBDA&quot;">
+        <m:ci>
+         <xsl:value-of select="target/@binder"/>
+        </m:ci>
+       </xsl:when>
+       <xsl:otherwise> 
+        <Param name="{target/@binder}">
+         <xsl:apply-templates select="source" mode="noannot"/>
+        </Param>
+       </xsl:otherwise>
+       </xsl:choose>
+      </xsl:if>
+      <xsl:apply-templates select="target/*[1]" mode="abstparams">
+       <xsl:with-param name="noparams" select="$noparams - 1"/>
+       <xsl:with-param name="target" select="$target"/>
+       <xsl:with-param name="binder" select="$binder"/>
+      </xsl:apply-templates>
+     </xsl:when>
+     <xsl:otherwise>
+      <xsl:apply-templates select="term/*[1]" mode="abstparams">
+       <xsl:with-param name="noparams" select="$noparams"/>
+       <xsl:with-param name="target" select="$target"/>
+       <xsl:with-param name="binder" select="$binder"/>
+      </xsl:apply-templates>
+     </xsl:otherwise>
+     </xsl:choose>
+    </xsl:when>
+    <xsl:otherwise> 
+     <xsl:choose>
+     <xsl:when test="($target = 1) and ($noparams != 0)">
+      <m:apply>
+      <m:csymbol>app</m:csymbol>
+      <xsl:apply-templates select="." mode="noannot"/>
+      <xsl:call-template name="printparam"><xsl:with-param name="noleft" select="$noparams"/></xsl:call-template>
+      </m:apply>
+     </xsl:when>
+     <xsl:otherwise>
+      <xsl:choose>
+      <xsl:when test="$noparams != 0">
+      <xsl:call-template name="printparam"><xsl:with-param name="noleft" select="$noparams"/></xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+       <xsl:if test="$target = 1">
+        <xsl:apply-templates select="." mode="noannot"/>
+       </xsl:if>
+      </xsl:otherwise>
+      </xsl:choose>
+     </xsl:otherwise>
+     </xsl:choose>
+    </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template name="printparam">
+<xsl:param name="noleft" select="0"/>
+<xsl:param name="number" select="1"/>
+    <xsl:if test="$noleft != 0">
+     <m:ci>$<xsl:value-of select="$number"/></m:ci>
+     <xsl:call-template name="printparam"><xsl:with-param name="noleft" select="$noleft - 1"/><xsl:with-param name="number" select="$number + 1"/></xsl:call-template>  
+    </xsl:if>
+</xsl:template>
+
+<xsl:template match="*" mode="counting">
+<xsl:param name="noparams" select="0"/>
+<xsl:param name="count" select="0"/>
+ <xsl:choose>
+ <xsl:when test="name(.) = &quot;PROD&quot;">
+  <xsl:apply-templates select="target/*[1]" mode="counting">
+   <xsl:with-param name="noparams" select="$noparams"/>
+   <xsl:with-param name="count" select="$count + 1"/>
+  </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="name(.) = &quot;CAST&quot;">
+  <xsl:apply-templates select="term/*[1]" mode="counting">
+   <xsl:with-param name="noparams" select="$noparams"/>
+   <xsl:with-param name="count" select="$count"/> 
+  </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+  <xsl:value-of select="$count - $noparams"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>