无法在HTML td中生成多行

时间:2013-12-17 12:26:29

标签: html xslt html-table xalan

我试图在多行上打印td数据,我正在使用XSLT,基本上如果我们执行以下简单示例:

<td rowspan="3">
  X
  Y
  z
</td>

输出如下:

X Y Z

虽然我把rowspan属性的内容仍然出现在一行!!

真实代码如下:

<td width="800px" rowspan="3">
 <xsl:variable name='newline'><xsl:text>&#xa;</xsl:text></xsl:variable>
    <xsl:variable name="recip">
        <xsl:for-each select="page/message/recipients/recipient">
            <xsl:choose>
                <xsl:when test="position() mod 5 = 0">
                    <xsl:value-of select="concat(first-name,' ',middle-name,' ',last-name,$newline)"/>
               </xsl:when>
                 <xsl:otherwise>
                    <xsl:value-of select="concat(first-name,' ',middle-name,' ',last-name,',')"/>
                </xsl:otherwise>
           </xsl:choose>
        </xsl:for-each>
 </xsl:variable>
    <xsl:variable name="recipID">
<td/>

正如我所说,虽然我使用&#xa;打印了一个新行但数据仍然显示在一行上,是否有任何关于解决此问题的想法?

2 个答案:

答案 0 :(得分:1)

我认为你误解了rowspan属性的目的。这样:

<td rowspan="3">

意味着指定它的元素(td)的内容被分成三个表格单元格。相反,跨越多行实际上意味着生成更少的单元格。在上述情况下,得到的细胞高达三个“正常细胞”。

为了说明这一点:

--------------------------------------------
| normal cell | normal cell |              |
-----------------------------              |
| normal cell | normal cell | cell with    |
----------------------------- rowspan="3"  |
| normal cell | normal cell |              |
--------------------------------------------

现在,在样式表代码段中,只生成了一个td元素,它包含从<td width="800px" rowspan="3">中输出的所有内容。

要输出多个表格单元格,请按以下方式写一些内容:

<xsl:for-each select="page/message/recipients/recipient">    
  <td><xsl:value-of select="first-name"/></td>
  <td><xsl:value-of select="middle-name"/></td>
  <td><xsl:value-of select="last-name"/></td>
</xsl:for-each>

请注意,td元素必须嵌套在HTML表格中才能正确显示。 (您没有显示XSLT样式表的那一部分。)


更新:如果你理解了这一切,并且真的想在一个单元格中输出三行,那么你就是这样做的:

<td rowspan="3">X<br />Y</br />Z<br /></td>

答案 1 :(得分:0)

您将始终在<TD>中从左向右键入。 如果您确实想要换行,请像其他人一样使用<br />

对于rowspan,请阅读https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td。我不认为它符合你的想法。