2012-03-30 6 views
1

xslt 1.0で作業中です 1から所定の長さまでnosを出力する必要があります。xsltで与えられた長さのnosを出力する方法を反復する方法は?

与えられた長さが5ならば、私は5回繰り返すことができ、1,2,3,4,5のようなnosを出力するループを繰り返す必要があります。 forループを使用しようとしましたが、各イテレータで印刷する値を減らすことができません。

上記のシナリオにお役立てください。

答えて

1

この変換 inadvanvce ありがとう:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/"> 
    <xsl:call-template name="printNumbers"> 
     <xsl:with-param name="pUpTo" select="5"/> 
    </xsl:call-template> 
</xsl:template> 

<xsl:template name="printNumbers"> 
     <xsl:param name="pUpTo"/> 
     <xsl:param name="pCurrent" select="1"/> 

     <xsl:if test="$pUpTo >= $pCurrent"> 
     <xsl:value-of select="$pCurrent"/> 
     <xsl:text> </xsl:text> 

     <xsl:call-template name="printNumbers"> 
      <xsl:with-param name="pUpTo" select="$pUpTo"/> 
      <xsl:with-param name="pCurrent" select="$pCurrent+1"/> 
     </xsl:call-template> 
     </xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

(使用しない)任意のXML文書に適用され、指名手配、正しい結果生成:成功した巨大な生成のために

1 2 3 4 5 

をアイテムの数、この質問への私の答えのようにDVCスタイルの再帰を使用してください:

Print numbers from one to one million

は、私はこれをやって任意の潜在的なエラーを回避するためにも、明示的な再帰を書面での支出も多くの時間を避けるために、FXSLライブラリの関数を使用してお勧めします。

関連する問題