使用XSLT1.0在for-each循环内将值分组

时间:2018-10-16 08:57:16

标签: html xslt-1.0

我有一个类似这样的表格模板:

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

上面的代码通常显示所有客户,并且在DisplayDataDisplayDataOnDropdown模板内部构造<TBODY>。但是,我现在只希望对这些客户ID进行分组(实际上,这是来自配置文件的数据,因此它是可配置的。我只是将其显示为变量):

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

然后,如果不在VIP ID中,则显示为通常的行(无下拉菜单)或另一个不显示VIP的下拉列表-以较容易的为准。

该表的输出类似于下面的示例(这是一个下拉表):

Show or hide table row if checkbox is checked

或更像这样:

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

我当前的代码只是在每个VIP ID上显示一个下拉列表,并且没有将它们全部组合在一起。

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

我认为我的问题只是我的for-each循环的逻辑吗?我在XSL上还比较陌生,即使对执行此操作的循环的示例性想法,我也非常感谢。

0 个答案:

没有答案