当我尝试使用下面的代码时,我得到一个重复的变量错误,因为变量是不可变的.如何将两个变量($nextSubPartPos和$nextQuestionStemPos)中较小的一个设置为我的新变量($nextQuestionPos)?
<xsl:variable name="nextQuestionPos"/>
<xsl:choose>
<xsl:when test="$nextSubPartPos < $nextQuestionStemPos">
<xsl:variable name="nextQuestionPos" select="$nextSubPartPos"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="nextQuestionPos" select="$nextSubPartPos"/>
</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
一个评估为较小值的紧凑型XPath 1.0表达式是:
$ v1*($ v2> = $ v1)+ $ v2*($ v1> $ v2)
其中$ v1和$ v2变量包含要比较的值.
因此,优雅的单行XSLT 1.0解决方案将如下所示:
<xsl:variable name ="v3"select ="$ v1*($ v2> = $ v1)+ $ v2*($ v1> $ v2)"/>
根据XSLT 2.0中的要求定义变量更容易:
可以使用以下(更易读)单行:
if($ v2 gt $ v1)
则$ v1
else $ v2
或者更紧凑:
min(($ v1,$ v2))
| 归档时间: |
|
| 查看次数: |
3043 次 |
| 最近记录: |