[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins / odt2spip_32 / inc / xsltml / tables.xsl
diff --git a/www/plugins/odt2spip_32/inc/xsltml/tables.xsl b/www/plugins/odt2spip_32/inc/xsltml/tables.xsl
new file mode 100644 (file)
index 0000000..ad1a10a
--- /dev/null
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding="UTF-8"?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+               xmlns:m="http://www.w3.org/1998/Math/MathML"\r
+                version='1.0'>\r
+                \r
+<!-- ====================================================================== -->\r
+<!-- $id: tables.xsl, 2002/17/05 Exp $\r
+     This file is part of the XSLT MathML Library distribution.\r
+     See ./README or http://www.raleigh.ru/MathML/mmltex for\r
+     copyright and other information                                        -->\r
+<!-- ====================================================================== -->\r
+\r
+<xsl:template match="m:mtd[@columnspan]">\r
+       <xsl:text>\multicolumn{</xsl:text>\r
+       <xsl:value-of select="@columnspan"/>\r
+       <xsl:text>}{c}{</xsl:text>\r
+       <xsl:apply-templates/>\r
+       <xsl:text>}</xsl:text>\r
+       <xsl:if test="count(following-sibling::*)>0">\r
+               <xsl:text>&amp; </xsl:text>\r
+       </xsl:if>\r
+</xsl:template>\r
+\r
+\r
+<xsl:template match="m:mtd">\r
+       <xsl:if test="@columnalign='right' or @columnalign='center'">\r
+               <xsl:text>\hfill </xsl:text>\r
+       </xsl:if>\r
+       <xsl:apply-templates/>\r
+       <xsl:if test="@columnalign='left' or @columnalign='center'">\r
+               <xsl:text>\hfill </xsl:text>\r
+       </xsl:if>\r
+       <xsl:if test="count(following-sibling::*)>0">\r
+<!--    this test valid for Sablotron, another form - test="not(position()=last())".\r
+       Also for m:mtd[@columnspan] and m:mtr  -->\r
+               <xsl:text>&amp; </xsl:text>\r
+       </xsl:if>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:mtr">\r
+       <xsl:apply-templates/>\r
+       <xsl:if test="count(following-sibling::*)>0">\r
+               <xsl:text>\\ </xsl:text>\r
+       </xsl:if>\r
+</xsl:template>\r
+\r
+<xsl:template match="m:mtable">\r
+       <xsl:text>\begin{array}{</xsl:text>\r
+       <xsl:if test="@frame='solid'">\r
+               <xsl:text>|</xsl:text>\r
+       </xsl:if>\r
+       <xsl:variable name="numbercols" select="count(./m:mtr[1]/m:mtd[not(@columnspan)])+sum(./m:mtr[1]/m:mtd/@columnspan)"/>\r
+       <xsl:choose>\r
+               <xsl:when test="@columnalign">\r
+                       <xsl:variable name="colalign">\r
+                               <xsl:call-template name="colalign">\r
+                                       <xsl:with-param name="colalign" select="@columnalign"/>\r
+                               </xsl:call-template>\r
+                       </xsl:variable>\r
+                       <xsl:choose>\r
+                               <xsl:when test="string-length($colalign) > $numbercols">\r
+                                       <xsl:value-of select="substring($colalign,1,$numbercols)"/>\r
+                               </xsl:when>\r
+                               <xsl:when test="string-length($colalign) &lt; $numbercols">\r
+                                       <xsl:value-of select="$colalign"/>\r
+                                       <xsl:call-template name="generate-string">\r
+                                               <xsl:with-param name="text" select="substring($colalign,string-length($colalign))"/>\r
+                                               <xsl:with-param name="count" select="$numbercols - string-length($colalign)"/>\r
+                                       </xsl:call-template>\r
+                               </xsl:when>\r
+                               <xsl:otherwise>\r
+                                       <xsl:value-of select="$colalign"/>\r
+                               </xsl:otherwise>\r
+                       </xsl:choose>\r
+               </xsl:when>\r
+               <xsl:otherwise>\r
+                       <xsl:call-template name="generate-string">\r
+                               <xsl:with-param name="text" select="'c'"/>\r
+                               <xsl:with-param name="count" select="$numbercols"/>\r
+                       </xsl:call-template>\r
+               </xsl:otherwise>\r
+       </xsl:choose>\r
+       <xsl:if test="@frame='solid'">\r
+               <xsl:text>|</xsl:text>\r
+       </xsl:if>\r
+       <xsl:text>}</xsl:text>\r
+       <xsl:if test="@frame='solid'">\r
+               <xsl:text>\hline </xsl:text>\r
+       </xsl:if>\r
+       <xsl:apply-templates/>\r
+       <xsl:if test="@frame='solid'">\r
+               <xsl:text>\\ \hline</xsl:text>\r
+       </xsl:if>\r
+       <xsl:text>\end{array}</xsl:text>\r
+</xsl:template>\r
+\r
+<xsl:template name="colalign">\r
+       <xsl:param name="colalign"/>\r
+       <xsl:choose>\r
+               <xsl:when test="contains($colalign,' ')">\r
+                       <xsl:value-of select="substring($colalign,1,1)"/>\r
+                       <xsl:call-template name="colalign">\r
+                               <xsl:with-param name="colalign" select="substring-after($colalign,' ')"/>\r
+                       </xsl:call-template>\r
+               </xsl:when>\r
+               <xsl:otherwise>\r
+                       <xsl:value-of select="substring($colalign,1,1)"/>\r
+               </xsl:otherwise>\r
+       </xsl:choose>\r
+</xsl:template>\r
+\r
+<xsl:template name="generate-string">\r
+<!-- template from XSLT Standard Library v1.1 -->\r
+    <xsl:param name="text"/>\r
+    <xsl:param name="count"/>\r
+\r
+    <xsl:choose>\r
+      <xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>\r
+\r
+      <xsl:otherwise>\r
+       <xsl:value-of select="$text"/>\r
+       <xsl:call-template name="generate-string">\r
+         <xsl:with-param name="text" select="$text"/>\r
+         <xsl:with-param name="count" select="$count - 1"/>\r
+       </xsl:call-template>\r
+      </xsl:otherwise>\r
+    </xsl:choose>\r
+</xsl:template>\r
+\r
+</xsl:stylesheet>
\ No newline at end of file