невозможно создать несколько строк в HTML-тд

0

Я пытался распечатать данные 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; данные остаются на одной строке, любая идея об устранении этой проблемы?

Теги:
html-table
xslt
xalan

2 ответа

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>
0

Вы всегда будете вводить слева направо в <TD>. Если вы действительно хотите развязки строк, используйте <br/> как и вы все еще.

Для rowspan прочитайте https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td. Я не думаю, что это делает то, что вы думаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню