У меня есть шаблон таблицы примерно такой:
<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 и буду очень признателен даже за пример идеи цикла, который делает это.