2015-02-06 91 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!='')" />的函數,但似乎沒有任何工作。 我錯過了什麼?

編輯:這種情況是正確評估,當我內聯函數?!

+0

請顯示[完整的輸入示例和完整的樣式表](http://stackoverflow.com/help/mcve),以便我們可以嘗試重現此問題。謝謝! – 2015-02-06 09:24:14

回答

2

基本上<xsl:value-of select="boolean(string-length($orgDate)=10)" />用一個布爾值的字符串創建一個文本節點,返回一個布爾值使用<xsl:sequence select="string-length($orgDate)=10" />