В файле 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!='')" />
в функции, но ничего не работает. Что мне не хватает?
EDIT: Это условие правильно оценено, когда я встроил функцию ?!
Просьба показать [полный образец ввода и полную таблицу стилей] (http://stackoverflow.com/help/mcve), чтобы мы могли попытаться воспроизвести проблему. Благодаря! –