XSLT Таблица со столбцом с несколькими строками

Рейтинг: 0Ответов: 0Опубликовано: 18.05.2023

Несколько часов не могу понять, как же реализовать столбец "Название 3" (см. скрин).

Смысл такой: Я через цикл for-each должен проходиться и засовывать данные в таблицу с представленным (скрин) шаблоном. Количество перечисляемых данных в столбце 3 ("Что-то 31" - "Что-то 52") может быть разным. Т.е. в примере в одной строке 3 подстроки, но может быть и 1, а может быть и 5. Все остальные ячейки имеют обычный вид.

Как это можно реализовать?

Пытался шаблон набросать, но даже он не получается:

<table class="commissionTable">
        <tr>
            <td>Название 1</td>
            <td>Название 2</td>
            <td colspan="2">Название 3</td>
            <td>Название 4</td>
        </tr>
        <tr>
            <td rowspan="3">Что-то 1</td>
            <td rowspan="3">Что-то 2</td>
            <td>Что-то 31</td>
            <td>Что-то 32</td>
            <tr>
                <td>Что-то 41</td>
                <td>Что-то 42</td>
            </tr>
            <tr>
                <td>Что-то 51</td>
                <td>Что-то 52</td>
            </tr>
            <td rowspan="3">Что-то 33</td>
        </tr>
    </table>

Примерный код с for-each:

<table>
                <tr class="rh" style="background-color: #D9D9D9;">
                    <td>
                        1
                    </td>
                    <td>
                        2
                    </td>
                    <td>
                        3
                    </td>
                    <td>
                        4
                    </td>
                    <td>
                        5
                    </td>
                    <td colspan="2">
                        6
                    </td>
                    <td>
                        7
                    </td>
                </tr>
                <xsl:for-each select="po">
                <xsl:sort select="string-length(rp)"/>
                <xsl:sort select="rp"/>
                <xsl:sort select="op"/>
                <xsl:sort select="m"/>
                <xsl:sort select="ma"/>
                
                <xsl:variable name="cc" select="от 1 до 10"></xsl:variable>
                    <tr rowspan="$cc" class="rh">
                        <td rowspan="$cc">
                            <xsl:choose>
                                <xsl:when test="$cr = 1">
                                    1
                                </xsl:when>
                            </xsl:choose>
                        </td>
                        <td rowspan="$cc">
                            <xsl:value-of select="rns"/>
                        </td>
                        <td rowspan="$cc">
                            <xsl:choose>
                                <xsl:when test="rp!= ''">
                                    <xsl:value-of select="rp"/>
                                </xsl:when>
                                <xsl:otherwise>
                                    -
                                </xsl:otherwise>
                            </xsl:choose>
                        </td>   
                        <td rowspan="$cc">
                            data
                        </td>
                        <td rowspan="$cc">
                            <xsl:choose>
                                <xsl:when test="cdata">data1</xsl:when>
                                <xsl:otherwise>data2</xsl:otherwise>
                            </xsl:choose>
                        </td>
                        <xsl:for-each select="m">
                            <td>
                                <xsl:variable name="fn" select="fn"></xsl:variable>
                                <xsl:variable name="ln" select="ln"></xsl:variable>
                                <xsl:variable name="mn" select="mn"></xsl:variable>
                                <xsl:value-of select="concat($ln, ' ', $fm, ' ', $mn, ' ')"/>
                            </td>
                            <td>
                                <xsl:choose>
                                    <xsl:when test="ma= 'accept'">data1</xsl:when>
                                    <xsl:when test="ma!= 'accept'">data2</xsl:when>
                                </xsl:choose>
                            </td>
                        </xsl:for-each>
                        <td rowspan="$cc">
                            data
                        </td>
                    </tr>
            </xsl:for-each>
            </table>

ack.imgur.com/kx8Th.png

Ответы

Ответов пока нет.