这个问题一再让我感到厌烦,我通常按照我在这里展示的方式处理它,但我厌倦了做错事,想要学习更好的方法来做到这一点。
下面的代码演示了我想要实现的目标,但我不想写所有这些。我有一个变量($ast
),它将输出我想要的星号数。当然,这可以通过更简单的方式完成。
<xsl:when test="$itm_lev = 0" >
<xsl:value-of select="concat($itm_lev)"/>
</xsl:when>
<xsl:when test="$itm_lev = 1" >
<xsl:value-of select="concat($ast,$itm_lev)"/>
</xsl:when>
<xsl:when test="$itm_lev = 2" >
<xsl:value-of select="concat($ast,$ast,$itm_lev)"/>
</xsl:when>
<xsl:when test="$itm_lev = 3" >
<xsl:value-of select="concat($ast,$ast,$ast,$itm_lev)"/>
</xsl:when>
<xsl:when test="$itm_lev = 4" >
<xsl:value-of select="concat($ast,$ast,$ast,$ast,$itm_lev)"/>
</xsl:when>
<xsl:when test="$itm_lev = 5" >
<xsl:value-of select="concat($ast,$ast,$ast,$ast,$ast,$itm_lev)"/>
</xsl:when>
输出:
0
*1
**2
***3
****4
*****5
答案 0 :(得分:1)
以下三个选项供您考虑:
<强> 1 强>
<xsl:value-of select="substring('********************', 1, $itm_lev)"/>
需要预设最大星号(=以上星号字符串的长度);
2。
<xsl:value-of select="translate(math:power(10, $itm_lev) - 1, '90', '*')"/>
需要一个支持EXSLT math:power()扩展功能的处理器(大多数都支持)。请注意,根据您的特定处理器,当$ itm_lev&gt;时,这可能会爆炸。 15;
第3 强>
调用递归命名模板。