0

データはサーバーから取得され、通常は 2 行ですが、それ以上の場合もあります。だから私はリストを動的に変更しようとします。

    <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

テンプレートマッチング内で、関数を使用してこの中の要素Lineの総数にアクセスできます(これは、このテンプレートを起動させたの式によって決定される「現在のノードリスト」の最後のノードのインデックス番号を返します。ケースは特定の子のセットです)。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 に答える
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 に答える