我有一个客户端,根据存在的总节点数量,希望改变xsl:number
元素的格式。
例如,如果节点的总数<1。 101然后格式字符串是&#34; 01&#34;这样1 =&gt;将显示01.
如果节点总数> 100或者&lt; 1001那么字符串格式为&#34; 001&#34;然后1 =&gt; 001,99 =&gt; 099.
我已尝试将format属性中的变量用于xsl:number但我只得到格式字符串&#34; 001&#34;结果10 =&gt; $ 10而不是010.
如果没有对可能的范围使用某些xsl:choose
,有没有办法做到这一点?
编辑:
我再次找到解决方案,感谢迈克尔的代码提示:
<xsl:variable name="total-number-nodes" select="count(//node)"/>
<xsl:variable name="base-format-string" select="string('000000000000000000000001')"/>
<xsl:variable name="fomat-string" select="substring($base-format-string, string-length($base-format-string) - string-length(string($total-number-dossiers)) + 1)"/>
<xsl:number level="multiple" count="node" format="{$fomat-string}"/>
答案 0 :(得分:2)
尝试:
<xsl:number format="{substring('000', 1, string-length(string($n)))}"/>
其中$ n是一个包含节点数的变量。
答案 1 :(得分:0)
我无法以某种方式编辑原始问题,所以这里是我使用的最终代码,可能是使用translate而不是使用子字符串的更优雅的解决方案....
<xsl:variable name="total-number-nodes" select="count(//node)"/>
<xsl:variable name="base-format-string" select="string('000000000000000000000001')"/>
<xsl:variable name="fomat-string" select="substring($base-format-string, string-length($base-format-string) - string-length(string($total-number-dossiers)) + 1)"/>
<xsl:number level="multiple" count="node" format="{$fomat-string}"/>