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



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

    <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"的类

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

<li>
  <xsl:attribute name="class">
    <xsl:choose>
      <xsl:when test="last() &lt;= 2">something</xsl:when>
      <xsl:otherwise>somethingElse</xsl:otherwise>
    </xsl:choose>
  </xsl:attribute>

这样如何:

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

相关内容

  • 没有找到相关文章

最新更新