[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / odt2spip_30 / inc / xsltml / tables.xsl
1 <?xml version='1.0' encoding="UTF-8"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:m="http://www.w3.org/1998/Math/MathML"
4 version='1.0'>
5
6 <!-- ====================================================================== -->
7 <!-- $id: tables.xsl, 2002/17/05 Exp $
8 This file is part of the XSLT MathML Library distribution.
9 See ./README or http://www.raleigh.ru/MathML/mmltex for
10 copyright and other information -->
11 <!-- ====================================================================== -->
12
13 <xsl:template match="m:mtd[@columnspan]">
14 <xsl:text>\multicolumn{</xsl:text>
15 <xsl:value-of select="@columnspan"/>
16 <xsl:text>}{c}{</xsl:text>
17 <xsl:apply-templates/>
18 <xsl:text>}</xsl:text>
19 <xsl:if test="count(following-sibling::*)>0">
20 <xsl:text>&amp; </xsl:text>
21 </xsl:if>
22 </xsl:template>
23
24
25 <xsl:template match="m:mtd">
26 <xsl:if test="@columnalign='right' or @columnalign='center'">
27 <xsl:text>\hfill </xsl:text>
28 </xsl:if>
29 <xsl:apply-templates/>
30 <xsl:if test="@columnalign='left' or @columnalign='center'">
31 <xsl:text>\hfill </xsl:text>
32 </xsl:if>
33 <xsl:if test="count(following-sibling::*)>0">
34 <!-- this test valid for Sablotron, another form - test="not(position()=last())".
35 Also for m:mtd[@columnspan] and m:mtr -->
36 <xsl:text>&amp; </xsl:text>
37 </xsl:if>
38 </xsl:template>
39
40 <xsl:template match="m:mtr">
41 <xsl:apply-templates/>
42 <xsl:if test="count(following-sibling::*)>0">
43 <xsl:text>\\ </xsl:text>
44 </xsl:if>
45 </xsl:template>
46
47 <xsl:template match="m:mtable">
48 <xsl:text>\begin{array}{</xsl:text>
49 <xsl:if test="@frame='solid'">
50 <xsl:text>|</xsl:text>
51 </xsl:if>
52 <xsl:variable name="numbercols" select="count(./m:mtr[1]/m:mtd[not(@columnspan)])+sum(./m:mtr[1]/m:mtd/@columnspan)"/>
53 <xsl:choose>
54 <xsl:when test="@columnalign">
55 <xsl:variable name="colalign">
56 <xsl:call-template name="colalign">
57 <xsl:with-param name="colalign" select="@columnalign"/>
58 </xsl:call-template>
59 </xsl:variable>
60 <xsl:choose>
61 <xsl:when test="string-length($colalign) > $numbercols">
62 <xsl:value-of select="substring($colalign,1,$numbercols)"/>
63 </xsl:when>
64 <xsl:when test="string-length($colalign) &lt; $numbercols">
65 <xsl:value-of select="$colalign"/>
66 <xsl:call-template name="generate-string">
67 <xsl:with-param name="text" select="substring($colalign,string-length($colalign))"/>
68 <xsl:with-param name="count" select="$numbercols - string-length($colalign)"/>
69 </xsl:call-template>
70 </xsl:when>
71 <xsl:otherwise>
72 <xsl:value-of select="$colalign"/>
73 </xsl:otherwise>
74 </xsl:choose>
75 </xsl:when>
76 <xsl:otherwise>
77 <xsl:call-template name="generate-string">
78 <xsl:with-param name="text" select="'c'"/>
79 <xsl:with-param name="count" select="$numbercols"/>
80 </xsl:call-template>
81 </xsl:otherwise>
82 </xsl:choose>
83 <xsl:if test="@frame='solid'">
84 <xsl:text>|</xsl:text>
85 </xsl:if>
86 <xsl:text>}</xsl:text>
87 <xsl:if test="@frame='solid'">
88 <xsl:text>\hline </xsl:text>
89 </xsl:if>
90 <xsl:apply-templates/>
91 <xsl:if test="@frame='solid'">
92 <xsl:text>\\ \hline</xsl:text>
93 </xsl:if>
94 <xsl:text>\end{array}</xsl:text>
95 </xsl:template>
96
97 <xsl:template name="colalign">
98 <xsl:param name="colalign"/>
99 <xsl:choose>
100 <xsl:when test="contains($colalign,' ')">
101 <xsl:value-of select="substring($colalign,1,1)"/>
102 <xsl:call-template name="colalign">
103 <xsl:with-param name="colalign" select="substring-after($colalign,' ')"/>
104 </xsl:call-template>
105 </xsl:when>
106 <xsl:otherwise>
107 <xsl:value-of select="substring($colalign,1,1)"/>
108 </xsl:otherwise>
109 </xsl:choose>
110 </xsl:template>
111
112 <xsl:template name="generate-string">
113 <!-- template from XSLT Standard Library v1.1 -->
114 <xsl:param name="text"/>
115 <xsl:param name="count"/>
116
117 <xsl:choose>
118 <xsl:when test="string-length($text) = 0 or $count &lt;= 0"/>
119
120 <xsl:otherwise>
121 <xsl:value-of select="$text"/>
122 <xsl:call-template name="generate-string">
123 <xsl:with-param name="text" select="$text"/>
124 <xsl:with-param name="count" select="$count - 1"/>
125 </xsl:call-template>
126 </xsl:otherwise>
127 </xsl:choose>
128 </xsl:template>
129
130 </xsl:stylesheet>