2

私の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() &gt; 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>&#10;</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 を使用できません。

4

3 に答える 3

2

で使用しているのと同様の方法で、位置関数をテンプレートで直接使用できますfor-each

<xsl:template match="ISP_WebItem">
    <tr>
       <xsl:attribute name="class">
         <xsl:choose>
           <xsl:when test="(position() mod 2) = 0">even</xsl:when>
           <xsl:otherwise>odd</xsl:otherwise>
         </xsl:choose>
       </xsl:attribute>

position()、呼び出しによって選択されたノードのリストに基づいていますapply-templates。つまり、

<xsl:apply-templates select="ISP_WebItem[generate-id() = generate-id(key('itemByFilter', @FILTER)[1])]" />

ISP_WebItemこれが選択する文書順の最初のものposition() = 1は 、2 番目のものは 、というposition() = 2ようになります。

于 2013-06-04T11:25:33.363 に答える
1

このようなJavaScriptを使用することは可能だと思います

$(document).ready(function(){
$(".pdfgrid tr:even").addClass('even');
$(".pdfgrid tr:odd").addClass('odd');
});
于 2013-06-04T11:19:36.007 に答える
1

試す:

<xsl:when test="position() mod 2">


</xsl:when>
于 2013-06-04T11:24:15.057 に答える