我有一个类似这样的表格模板:
<xsl:template name="DisplaySortedData">
<xsl:for-each select="$customer/id">
<xsl:call-template name="DisplayData" />
</xsl:for-each>
</xsl:template>
上面的代码通常显示所有客户,并且在DisplayData
或DisplayDataOnDropdown
模板内部构造<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上还比较陌生,即使对执行此操作的循环的示例性想法,我也非常感谢。