XSLT HTML table to LaTeX (rowspan)
<p>I am transforming HTML table to LaTeX using XSLT. It works but I need also support for <code>rowspan</code> attribute. Support for both attributes (colspan, rowspan) on one element would be nice. I am using XSLT 2.0. Is there anyone who can help me? Thanks.</p>

<p>HTML I want to transform looks like this</p>

<pre><code>&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
        &lt;td&gt;ipsum&lt;/td&gt;
        &lt;td&gt;dolor&lt;/td&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;sit&lt;/td&gt;
        &lt;td colspan="2" rowspan="3"&gt;amet&lt;/td&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;adipisicing&lt;/td&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;sed&lt;/td&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
        &lt;td&gt;ipsum&lt;/td&gt;
        &lt;td&gt;dolor&lt;/td&gt;
        &lt;td&gt;Lorem&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
</code></pre>

<p>My XSLT</p>

<pre><code>&lt;xsl:template match="table"&gt;
        &lt;xsl:text&gt;\begin{center}\begin{tabu} to \textwidth {&lt;/xsl:text&gt;

        &lt;xsl:for-each select="tr[1]/*"&gt;
            &lt;xsl:choose&gt;
                &lt;xsl:when test="position() = 1"&gt;
                    &lt;xsl:text&gt;X[l,m]&lt;/xsl:text&gt;
                &lt;/xsl:when&gt;
                &lt;xsl:otherwise&gt;
                    &lt;xsl:text&gt;X[c,m]&lt;/xsl:text&gt;
                &lt;/xsl:otherwise&gt;
            &lt;/xsl:choose&gt;
        &lt;/xsl:for-each&gt;

        &lt;xsl:text&gt;}
            \toprule
        &lt;/xsl:text&gt;

        &lt;xsl:apply-templates /&gt;

        &lt;xsl:text&gt;
            \bottomrule
            \end{tabu}  
            \end{center} 
        &lt;/xsl:text&gt;
    &lt;/xsl:template&gt;

    &lt;xsl:template match="tr"&gt;
        &lt;xsl:apply-templates /&gt;
        &lt;xsl:text&gt; \\&amp;#xa;&lt;/xsl:text&gt;
    &lt;/xsl:template&gt;

    &lt;xsl:template match="td"&gt;
            &lt;xsl:choose&gt;
                &lt;xsl:when test="@colspan"&gt;
                    &lt;xsl:text&gt;\multicolumn{&lt;/xsl:text&gt;
                    &lt;xsl:value-of select="@colspan"/&gt;
                    &lt;xsl:text&gt;}{l}{&lt;/xsl:text&gt;
                    &lt;xsl:apply-templates /&gt;
                    &lt;xsl:text&gt;}&lt;/xsl:text&gt;
                &lt;/xsl:when&gt;
                &lt;xsl:otherwise&gt;
                    &lt;xsl:apply-templates /&gt;
                &lt;/xsl:otherwise&gt;
            &lt;/xsl:choose&gt;    
            &lt;xsl:if test="count(following-sibling::td)"&gt;
                 &lt;xsl:text&gt; &amp;amp; &lt;/xsl:text&gt; 
            &lt;/xsl:if&gt;
    &lt;/xsl:template&gt;
</code></pre>

<p>Expected output in LaTeX is</p>

<pre><code>\begin{center}\begin{tabu} to \textwidth {X[l,m]X[c,m]X[c,m]X[c,m]}
    \toprule
       Lorem &amp;   ipsum &amp;   dolor &amp;   Lorem   \\
       sit &amp;  \multicolumn{2}{l}{\multirow{3}{*}{amet}} &amp;  Lorem   \\
       adipisicing &amp; \multicolumn{2}{l}{} &amp;  Lorem   \\
       sed &amp; \multicolumn{2}{l}{} &amp;  Lorem   \\
       Lorem &amp;  ipsum &amp;   dolor &amp;   Lorem   \\
    \bottomrule
\end{tabu}  
\end{center} 
</code></pre>