0

スペースを埋める 2 つの個別のテンプレートを作成する必要があります。1 つは 49 のスペースを占有し、もう 1 つは 549 のスペースを占有します。うまくいくかもしれないと思うテンプレートを見つけましたが、それが何をしているのか本当にわかりません.xmlは初めてです。

<!-- Template Filler-->
  <xsl:template name="Filler">
    <xsl:param name="fillercount" select="1"/>
    <xsl:if test="$fillercount > 0">
      <table class="tabledetails">
        <tr>
          <td>
            <xsl:value-of select="translate(' ', ' ', '&#160;')"/>
          </td>
        </tr>
      </table>
      <xsl:call-template name="Filler">
        <xsl:with-param name="fillercount" select="$fillercount - 1"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

これは私が必要とするものですか、それを呼び出すか、select="49"それとも間違って読んでいますか。これが今必要なものである場合、どうすればこれを達成できますか?

4

1 に答える 1

0

あなたはあなたが望む出力を言っていません。パラメータ 49 を指定してこのテンプレートを呼び出すと、出力には 49 個のテーブルが含まれ、それぞれに 1 つの行と 1 つの列が含まれ、セルの内容は非改行スペース文字になります。ノンブレーク スペース文字を生成する方法は非常に奇妙です。translate() 呼び出しは、スペース文字を入力として受け取り、すべてのスペースをノンブレーク スペースに置き換えることによって処理します。おそらく、ある段階でより賢明なことを行っていたコードの削減バージョンです。

コードの基本構造は、パラメーター (たとえば 49) を受け取り、1 つの "もの" (この場合はシングルトン テーブル) を出力し、それ自体を呼び出して同じことを N-1 回繰り返す再帰的なテンプレートです。これは、XSLT 1.0 で何かを N 回実行する適切な方法です。<xsl:for-each select="1 to $N">(2.0 では、命令型言語で育ったプログラマーにとってより直感的な を使用できます。)

于 2012-09-28T21:45:36.817 に答える