需要-每个逻辑基于xslt 1.0中无节点/根派生的变量值



请在下方"for-each"根据XSL 1.0中派生的变量值写入循环的逻辑。注意:在我们的场景中不能调用递归方法,即模板中的模板。

下面附加的不工作的代码片段
<xsl:variable name="finalcount">
<xsl:value-of select="floor($CountofEmp)"/>
</xsl:variable>
<xsl:for-each select="$finalcount">     
do something
</xsl:for-each>

需要输出

1
2
3
4
5
6

你的问题不是很清楚。如果—看起来—您想要生成从1到某个值的数字序列,那么您需要调用递归命名模板—例如:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8" />
<xsl:template match="/">
<xsl:call-template name="count-up">
<xsl:with-param name="n" select="6"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="count-up">
<xsl:param name="n"/>
<xsl:if test="$n > 0">
<!-- recursive call -->
<xsl:call-template name="count-up">
<xsl:with-param name="n" select="$n - 1"/>
</xsl:call-template>
<xsl:value-of select="$n"/>
<xsl:text>&#10;</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

结果

1
2
3
4
5
6

注意,在模板中没有"模板"。这里。

This works as long as final count is not massive.  
Too bad you can't use recursion.  But, recursion is limited.
So, if final count is too big, you'll have a problem with recursion.


<!--  Make a variable to use with your count. -->    
<xsl:variable name="items">
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<xsl:element name="i"/>
<!--  Add more i elements than the possible max size of your count variable. -->
</xsl:variable>  
<!-- Convert to node set using your own prefix.  msxml may not work for you. -->
<xsl:variable name="iList" select="msxml:node-set($items)"/>
<xsl:variable name="finalcount">
<xsl:value-of select="6"/>
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="$iList/i[position() &lt;= $finalcount]">   
<xsl:value-of select="position()"/>
<xsl:text>&#13;</xsl:text>
</xsl:for-each>
</xsl:template>
<!-- Alternatively,
you could replace iList with something that already exists 
in the xml that your XSLT is running against as long as it
has more elements than finalCount.  What you really need is
something to count. -->

相关内容

  • 没有找到相关文章

最新更新