-1

for-eachループを使用して、 countの属性値に基づいて <td> 列を表示したいと考えています。誰かがそれを達成するのを手伝ってくれますか? XSLT 開発は初めてです。

XML ノード:
<row count="72">

編集:カウント -行の列数については、ここで参照されます

前もって感謝します。

4

2 に答える 2

1

カウントが数千にならない場合、これは単純な再帰によって行うことができます。XSLT には変更可能な変数がないため、反復は不可能です。

<xsl:template match="row[@count &gt; 0]">
  <xsl:call-template name="new-td">
    <xsl:with-param name="count" select="@count" />
  </xsl:call-template>
</xsl:template>

<xsl:template name="new-td">
  <xsl:param name="count" select="0" />

  <xsl:if test="$count">
    <!-- create current cell -->
    <td>
      <!-- contents... -->
    </td>

    <!-- recursive step: create next cell -->
    <xsl:call-template name="new-td">
      <xsl:with-param name="count" select="$count - 1" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

XSLT プロセッサがどれほど優れているかに応じて、バックグラウンドでこれを反復ループに最適化するため、スタック オーバーフロー エラーが発生する可能性は低くなります$count。XSLT プロセッサがどのように反応するかを確認するには、非常に大きな数値で試してください。

推奨される読み物: IBM DeveloperWorks のXSL で再帰を効果的に使用してください

于 2013-08-05T11:35:43.737 に答える