为什么这个选择时测试总是正确的?
Why is this choose-when-test always true?
我在 XSLT 文件中定义了一个函数
<xsl:function name="my:isValidDate">
<xsl:param name="orgDate" />
<xsl:value-of select="boolean(string-length($orgDate)=10)" />
</xsl:function>
测试日期字符串是否具有有效长度。
当我使用这个函数时
<xsl:choose>
<xsl:when test="my:isValidDate(ValidFrom)">
<xsl:call-template name="formatDate"><xsl:with-param name="orgDate" select="ValidFrom"></xsl:with-param></xsl:call-template>
</xsl:when>
...
</xsl:choose>
这似乎总是正确的;即使像 <ValidFrom />
这样的空标签也能通过测试并导致奇怪的输出,因为不能在空或无效的日期字符串上调用模板。当我为调试问题输出 ValidFrom
时,它如预期的那样是空的。我还在函数中尝试了 string-length($orgDate)=10
或 <xsl:value-of select="boolean($orgDate!='')" />
等变体,但似乎没有任何效果。
我错过了什么?
编辑:当我内联函数时,这个条件被正确评估了?!
基本上 <xsl:value-of select="boolean(string-length($orgDate)=10)" />
使用布尔值字符串创建文本节点,return 布尔值使用 <xsl:sequence select="string-length($orgDate)=10" />
.
我在 XSLT 文件中定义了一个函数
<xsl:function name="my:isValidDate">
<xsl:param name="orgDate" />
<xsl:value-of select="boolean(string-length($orgDate)=10)" />
</xsl:function>
测试日期字符串是否具有有效长度。 当我使用这个函数时
<xsl:choose>
<xsl:when test="my:isValidDate(ValidFrom)">
<xsl:call-template name="formatDate"><xsl:with-param name="orgDate" select="ValidFrom"></xsl:with-param></xsl:call-template>
</xsl:when>
...
</xsl:choose>
这似乎总是正确的;即使像 <ValidFrom />
这样的空标签也能通过测试并导致奇怪的输出,因为不能在空或无效的日期字符串上调用模板。当我为调试问题输出 ValidFrom
时,它如预期的那样是空的。我还在函数中尝试了 string-length($orgDate)=10
或 <xsl:value-of select="boolean($orgDate!='')" />
等变体,但似乎没有任何效果。
我错过了什么?
编辑:当我内联函数时,这个条件被正确评估了?!
基本上 <xsl:value-of select="boolean(string-length($orgDate)=10)" />
使用布尔值字符串创建文本节点,return 布尔值使用 <xsl:sequence select="string-length($orgDate)=10" />
.