执行此XSLT时:
<xsl:variable name="numDeps" select="count(wd:Deps)"/>
<xsl:variable name="depRelation_FieldMaxLength" select="16 * 2"/>
<xsl:variable name="relationFieldRemainingBlanks" select="$depRelation_FieldMaxLength - ($numDeps*2)"/>
<xsl:variable name="spacesNeeded" select="max(0, $relationFieldRemainingBlanks)"/>
它产生错误:“检测到1个错误。max()的第二个参数的必需项目类型为xs:string;提供的值具有xs:integer的项目类型”,这似乎表明{{1}的第一个参数}被解释为字符串,而不是整数。
为什么?
答案 0 :(得分:2)
max
函数的第一个参数可以是max((0, $relationFieldRemainingBlanks))
形式的值序列。调用时,您尝试将max
应用于由0
值和$relationFieldRemainingBlanks
构成的序列,该序列被视为第二个(可选)自变量,该参数应为排序规则(https://www.w3.org/TR/xpath-functions/#func-max )。