私のXMLはこのようなものです
<filters>
<ISP_WebItem FILTER="Type" FILTERNAME="Malet" UNITCODE="" />
<ISP_WebItem FILTER="Mængde" FILTERNAME="500" UNITCODE="g" />
<ISP_WebItem FILTER="Anvendelse" FILTERNAME="Kaffemaskine" UNITCODE="" />
</filters>
このフィルターのそれぞれをループして、別々のテーブル行に出力しています。私のコードは次のようになります。
<xsl:variable name="grouped-filt">
<xsl:for-each select="exslt:node-set($filt)/filters">
<xsl:apply-templates select="ISP_WebItem[generate-id() = generate-id(key('itemByFilter', @FILTER)[1])]" />
</xsl:for-each>
</xsl:variable>
<xsl:template match="ISP_WebItem">
<tr>
<td width="200px">
<xsl:value-of select="@FILTER" />
</td>
<td>
<xsl:for-each select="key('itemByFilter', @FILTER)">
<xsl:if test="position() > 1">,</xsl:if>
<xsl:value-of select="@FILTERNAME" />
<xsl:if test="@UNITCODE != ''">
<xsl:text> </xsl:text>
<xsl:value-of select="@UNITCODE"/>
</xsl:if>
</xsl:for-each>
<xsl:text> </xsl:text>
</td>
</tr>
</xsl:template>
ここで必要なのは、印刷された各 tr の代替クラスを取得することです。例
<tr class="odd">data</tr>
<tr class="even">data</tr>
<tr class="odd">data</tr>
<tr class="even">data</tr>
誰でも私に道を示すことができますか?
注: 1-上記のコードは、すべてのフィルターをグループ化するなど、さまざまな目的のために作成されています。2-この目的で JavaScript を使用できません。