Ich bin neu in XSLT (v1.0) und ich kann nicht komplexe XHTML-Tabellen mit XSLT zu LaTeX konvertieren.Konvertieren von XHTML-Tabelle zu LaTeX mit XSLT
Was ich meine, wenn ich komplexe Tabellen sagte, sind Tabellen mit Zeilen mit unterschiedlicher Anzahl von Spalten. Mit anderen Worten, td
mit colspan
.
dh (xhtml Tabelle)
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" width="68" colspan="3"> <p>Values</p> </td>
</tr>
<tr>
<td valign="top" width="68"> <p>95</p> </td>
<td valign="top" width="68"> <p>169</p> <p> </p> </td>
<td valign="top" width="68"> <p>180</p> <p> </p> </td>
</tr>
</table>
Was ich in der XSL-Datei zu tun ist:
<xsl:template match="xhtml:table[@border='1']">
<xsl:text>\begin{center}</xsl:text>
<xsl:text>\begin{tabular}{</xsl:text>
<xsl:for-each select="xhtml:tr[1]/*">
<xsl:text>c</xsl:text>
<xsl:if test="position() = last()">
<xsl:text>} </xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text>\toprule </xsl:text>
<xsl:for-each select="xhtml:tr">
<xsl:if test="position() != 1">
<xsl:text>\midrule </xsl:text>
</xsl:if>
<xsl:if test="position() = 2">
<xsl:text>\midrule </xsl:text>
</xsl:if>
<xsl:for-each select="xhtml:td|xhtml:th">
<xsl:if test="name() = 'th'">{\bf </xsl:if>
<xsl:apply-templates />
<xsl:if test="name() = 'th'">}</xsl:if>
<xsl:if test="position() != last()">
<xsl:text>&</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text> \\ </xsl:text>
</xsl:for-each>
<xsl:text>\bottomrule </xsl:text>
<xsl:text>\end{tabular} </xsl:text>
<xsl:text>\end{center} </xsl:text>
</xsl:template>
Aber wie Sie sehen können, dieser Code funktioniert nur für einfache Tabellen, ohne die Colspan-Attribut Der Code umschlingt die erste tr
und schreibt für jede td
ein "c". Im obigen Fall wird nur eine Tabelle mit einer Spalte erstellt.
Was ich tun möchte, ist die Anzahl der td
und die Anzahl der Colspans zählen, wenn es existiert, um eine richtige Tabelle mit 3 Spalten zu erstellen.
Weiß jemand, wie man das macht? Danke im Voraus.
in im Jahr 1993 :-) veröffentlicht wurde als veraltet Das auf Stackoverflow gestellt werden sollten (welches ein sehr aktives XSLT-Tag hat) Es ist keine TeX-Frage –