2015-02-06 1 views
0

В файле 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: Это условие правильно оценено, когда я встроил функцию ?!

+0

Просьба показать [полный образец ввода и полную таблицу стилей] (http://stackoverflow.com/help/mcve), чтобы мы могли попытаться воспроизвести проблему. Благодаря! –

ответ

2

В основном <xsl:value-of select="boolean(string-length($orgDate)=10)" /> создает текстовый узел со строкой логического значения, чтобы вернуть значение boolean значение <xsl:sequence select="string-length($orgDate)=10" />.