xsl 1.0,如果超过2个元素则计数然后更改css类

时间:2013-03-20 08:45:33

标签: xslt xslt-1.0

数据来自服务器,通常是两行,但有时甚至更多。所以我试着让列表动态变化。

    <xsl:template match="Event">
        <ul class="lines">
            <xsl:apply-templates select="Line"/>
        </ul>
    </xsl:template>

<xsl:template match="Line">
        <li class="something">
            <a href="">
                <span class="result"><xsl:value-of select="@result"/></span>
                <span class="odds"><xsl:value-of select="@odds"/></span>
            </a>
        </li>
    </xsl:template>

我必须计算“li”的数量,如果它超过2,我必须更改“li”的类

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

  <xsl:template match="Event">
    <ul class="lines">
      <xsl:apply-templates select="Line"/>
    </ul>
  </xsl:template>

  <xsl:template match="Line" name="Line">
    <xsl:param name="classVal" select="'something'" />
    <li class="{$classVal}">
      <a href="">
        <span class="result">
          <xsl:value-of select="@result"/>
        </span>
        <span class="odds">
          <xsl:value-of select="@odds"/>
        </span>
      </a>
    </li>
  </xsl:template>

  <xsl:template match="Line[count(../Line) > 1]">
    <xsl:call-template name="Line">
      <xsl:with-param name="classVal" select="'somethingElse'" />
    </xsl:call-template>
  </xsl:template>

答案 1 :(得分:1)

在匹配Line的模板中,您可以使用Line函数(返回最后一个节点的索引号)访问此Eventlast()个元素的总数在“当前节点列表”中由导致此模板触发的select apply-templates表达式确定的,在这种情况下是特定{{1}的Line个子集的集合}})。

Event