在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!='')" />
等变体,但似乎没有任何效果。
我错过了什么?
编辑:当我内联函数时,正确评估了这个条件?!
答案 0 :(得分:2)
基本上<xsl:value-of select="boolean(string-length($orgDate)=10)" />
创建一个带有布尔值字符串的文本节点,以使用<xsl:sequence select="string-length($orgDate)=10" />
返回布尔值。