我试图在多行上打印td
数据,我正在使用XSLT,基本上如果我们执行以下简单示例:
<td rowspan="3">
X
Y
z
</td>
输出如下:
X Y Z
虽然我把rowspan
属性的内容仍然出现在一行!!
真实代码如下:
<td width="800px" rowspan="3">
<xsl:variable name='newline'><xsl:text>
</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/>
正如我所说,虽然我使用

打印了一个新行但数据仍然显示在一行上,是否有任何关于解决此问题的想法?
答案 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。我不认为它符合你的想法。