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

4

2 回答 2

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>
于 2013-03-20T09:03:15.140 回答
1

在模板匹配中,您可以使用函数访问this 中的元素Line总数(该函数返回由导致此模板触发的表达式确定的“当前节点列表”中最后一个节点的索引号,在此case 是特定) 的子集。LineEventlast()selectapply-templatesLineEvent

<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>
于 2013-03-20T09:04:45.560 回答