Группировка значений внутри цикла for-each с использованием XSLT1.0 - PullRequest
0 голосов
/ 16 октября 2018

У меня есть шаблон таблицы примерно такой:

<xsl:template name="DisplaySortedData">
    <xsl:for-each select="$customer/id">        
        <xsl:call-template name="DisplayData" />
    </xsl:for-each>
</xsl:template>

Приведенный выше код обычно отображает всех клиентов, а внутри шаблона DisplayData или DisplayDataOnDropdown находится строение <TBODY>.Однако теперь я хочу сгруппировать только эти идентификаторы клиентов (в реальной жизни это данные из файла конфигурации, поэтому их можно настраивать. Я просто представил их как переменную):

<xsl:variable name="vipList" select="'1001|1002|1003|1004|1005|1006|1007|1008|1009|1010|1011|1012'"/>

Тогда еслине в VIP-идентификаторах, отображаться как обычный ряд (без раскрывающегося списка) или в другом раскрывающемся списке для не vips - что проще.

Вывод таблицы похож на приведенные ниже примеры (это раскрывающаяся таблица):

Показать или скрыть строку таблицы, если установлен флажок

или больше так:

https://codepen.io/andornagy/pen/gaGBZz

Мой текущий код просто отображает выпадающий список для каждого из VIP-идентификаторов и НЕ группирует их все вместе.

<xsl:template name="DisplaySortedData">
    <xsl:variable name="vipList" select="'1001|1002|1003|1004|1005|1006|1007|1008|1009|1010|1011|1012'"/>
    <xsl:variable name="OptimizedIDs" select="'true'"/>
    <xsl:for-each select="$customer/id">
        <xsl:variable name="custID" select="@id"/>
        <xsl:choose>
            <xsl:when test="$OptimizedIDs='true' and contains(concat('|',$vipList,'|'),concat('|',$custID,'|'))">
                <xsl:call-template name="DisplayDataAsDropdown" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:call-template name="DisplayData" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>

Я думаю, что моя проблема - это просто логика моего цикла для каждого?Я относительно новичок в XSL и буду очень признателен даже за пример идеи цикла, который делает это.

...