<table>
<xsl:for-each select="omroep" >
<tr>
<td><xsl:value-of select="@afkorting"/></td>
<xsl:for-each select="programma" >
<td>
<div class="blauw"><xsl:value-of select="@begin-tijd" /></div>
<div>
<span class="red"><xsl:if test="@type='Reeks'">Reeks </xsl:if></span>
<span class="red"><xsl:if test="@type='Docu'">Docu </xsl:if></span>
<b>
<xsl:value-of select="@naam" />
</b>
<xsl:if test="@teletekst-ondertiteld='ja'"> (TT)</xsl:if>
<xsl:choose>
<xsl:when test="@net-gemist" >
Net Gemist
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</div>
</td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
所以我最终得到一行有四个单元格,另一行有五行。像这样:
但是,当一行的单元格多于另一行时,我想自动添加一个额外的空单元格。我怎么能这样做?
答案 0 :(得分:0)
使用此:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="xml">
<table>
<xsl:apply-templates select="omroep"/>
</table>
</xsl:template>
<xsl:template match="omroep">
<tr>
<td>
<xsl:value-of select="@afkorting"/>
</td>
<xsl:apply-templates select="programma"/>
<!-- get maxCount for all 'programma' -->
<xsl:variable name="maxCount">
<xsl:for-each select="//omroep">
<xsl:sort select="count(programma)" data-type="number" order="descending"/>
<xsl:if test="position()=1">
<xsl:value-of select="count(programma)"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<!-- get current count -->
<xsl:variable name="currentCount" select="count(programma)"/>
<!-- generate empty td for each smaller than maxcount -->
<xsl:for-each
select="../omroep[programma[position()=$maxCount]][1]/programma[position() > $currentCount]">
<td/>
</xsl:for-each>
</tr>
</xsl:template>
<xsl:template match="programma">
<td>
<div class="blauw">
<xsl:value-of select="@begin-tijd"/>
</div>
<div>
<span class="red">
<xsl:if test="@type='Reeks'">Reeks </xsl:if>
</span>
<span class="red">
<xsl:if test="@type='Docu'">Docu </xsl:if>
</span>
<b>
<xsl:value-of select="@naam"/>
</b>
<xsl:if test="@teletekst-ondertiteld='ja'"> (TT)</xsl:if>
<xsl:choose>
<xsl:when test="@net-gemist">
Net Gemist
</xsl:when>
<xsl:otherwise> </xsl:otherwise>
</xsl:choose>
</div>
</td>
</xsl:template>
</xsl:stylesheet>
以此作为来源:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<omroep>
<programma></programma>
<programma></programma>
<programma></programma>
<programma></programma>
<programma></programma>
</omroep>
<omroep>
<programma></programma>
<programma></programma>
<programma></programma>
</omroep>
<omroep>
<programma></programma>
<programma></programma>
<programma></programma>
<programma></programma>
</omroep>
<omroep>
<programma></programma>
<programma></programma>
<programma></programma>
<programma></programma>
<programma></programma>
</omroep>
</xml>
将生成一个表,第二行有2个空td,第3行有1个空td。