为什么XSL / XPath认为这个零是一个字符串?

时间:2019-06-19 14:00:09

标签: xml xslt

执行此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}的第一个参数}被解释为字符串,而不是整数。

为什么?

1 个答案:

答案 0 :(得分:2)

max函数的第一个参数可以是max((0, $relationFieldRemainingBlanks))形式的值序列。调用时,您尝试将max应用于由0值和$relationFieldRemainingBlanks构成的序列,该序列被视为第二个(可选)自变量,该参数应为排序规则(https://www.w3.org/TR/xpath-functions/#func-max )。