Я пытался распечатать данные 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/>
как я сказал, хотя я печатаю новую строку, используя 

данные остаются на одной строке, любая идея об устранении этой проблемы?
Я думаю, вы неправильно поняли назначение атрибута 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>
Вы всегда будете вводить слева направо в <TD>
. Если вы действительно хотите развязки строк, используйте <br/>
как и вы все еще.
Для rowspan
прочитайте https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td. Я не думаю, что это делает то, что вы думаете.