XSLT 2.0:<xsl:number> 条件格式
XSLT 2.0: <xsl:number> conditional formatting
我有一个客户,它希望根据存在的总节点数来改变 xsl:number
元素的格式。
例如,如果节点总数 < 101,则格式字符串为“01”,因此 1 => 将显示为 01。
如果节点总数 > 100 或 < 1001,则字符串格式为“001”,则 1 => 001、99 => 099。
我曾尝试在 xsl:number 的格式属性中使用变量,但我只得到格式字符串“001”,结果是 10 => $10 而不是 010。
有没有办法在不使用一些 xsl:choose
作为可能范围的情况下做到这一点?
编辑:
再次感谢 Michael 的代码提示,我找到了解决方案:
<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}"/>
尝试:
<xsl:number format="{substring('000', 1, string-length(string($n)))}"/>
其中 $n 是保存节点数的变量。
我无法以某种方式编辑原始问题,所以这里是我使用的最终代码,可能有使用翻译而不是使用子字符串的更优雅的解决方案....
<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}"/>
我有一个客户,它希望根据存在的总节点数来改变 xsl:number
元素的格式。
例如,如果节点总数 < 101,则格式字符串为“01”,因此 1 => 将显示为 01。
如果节点总数 > 100 或 < 1001,则字符串格式为“001”,则 1 => 001、99 => 099。
我曾尝试在 xsl:number 的格式属性中使用变量,但我只得到格式字符串“001”,结果是 10 => $10 而不是 010。
有没有办法在不使用一些 xsl:choose
作为可能范围的情况下做到这一点?
编辑:
再次感谢 Michael 的代码提示,我找到了解决方案:
<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}"/>
尝试:
<xsl:number format="{substring('000', 1, string-length(string($n)))}"/>
其中 $n 是保存节点数的变量。
我无法以某种方式编辑原始问题,所以这里是我使用的最终代码,可能有使用翻译而不是使用子字符串的更优雅的解决方案....
<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}"/>