如果我使用xsl:number,我会得到一个数字作为输出文档的文本。但是我该如何添加另一个数字呢?
我正在使用它来跟踪元素,所以可以说它们的索引。
如果我说
<xsl:number/> + $somenumber
我会得到像5 + 6但不是11的东西。
答案 0 :(得分:3)
尝试在xsl:number
中存储xsl:variable
并在xsl:value-of
(或AVT中执行计算,如果它将成为属性值)。 ..
XML输入
<doc>
<foo/>
<foo/>
<foo/>
<foo/>
<foo/>
</doc>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="foo">
<xsl:variable name="nbr">
<xsl:number/>
</xsl:variable>
<foo attr="{$nbr + 10}"><xsl:value-of select="$nbr + 10"/></foo>
</xsl:template>
</xsl:stylesheet>
XML输出
<doc>
<foo attr="11">11</foo>
<foo attr="12">12</foo>
<foo attr="13">13</foo>
<foo attr="14">14</foo>
<foo attr="15">15</foo>
</doc>
答案 1 :(得分:1)
你能否使用:
robocopy C:\src D:\dst /maxage:20150723 /minage:20150724
否则你必须将<xsl:value-of select="position() + $somenumber" />
放在另一个变量中,然后使用:
<xsl:number/>
答案 2 :(得分:1)
有时@DanielHaley建议的技术是最好的。有时您可以使用position()
代替xsl:number
。有时最简单的方法是使用count(preceding-sibling::x)
之类的表达来代替xsl:number
。