2011-10-27 26 views
0

我想使用字符串的長度來確定它是日期還是日期和時間。一個日期會有十個字符,一個日期會有24個。如果沒有時間,那麼日曆應該把它解釋爲一個整天的事件。XSLT如果字符串長度()不起作用

所以 - 這是if語句我使用:

<xsl:variable name="alextest" select="string-length(gd:when/@startTime)" /> 
allDay:  <xsl:if test="$alextest&lt;12"> true </xsl:if> 

然而if語句始終無法真正的輸出,即使在條件滿足。

我測試以各種方式的邏輯,例如輸出表達式

<xsl:value-of select="$alextest&lt;12"/>', 

其解析爲真值,所以比較適用。我也試過這個,它的工作,這似乎表明,結構是正確的:

allDay:  <xsl:if test="0&lt;12"> true </xsl:if>, 

我做錯了什麼?

非常感謝

亞歷

+0

請打印出$ alextest的價值,那麼你一定會找到你的錯誤。 – FailedDev

+0

您向我們展示的代碼中沒有任何錯誤。所以在其他地方有一個錯誤。您需要向我們提供足夠的信息,以便我們重現它:完整的源文檔,樣式表以及關於您如何運行它的信息。 –

回答

1

&lt;低於。 13 < 12無法評估爲true。我認爲你需要<=,形式爲&lt;=>,形式爲&gt;

編輯:以下按預期工作,所以必須仍然存在事件代碼之外的事情,或者值需要調整。確保變量的選擇表達式真正解決了某些問題。

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <el1>123456789101112</el1> 
    <el2>123456</el2> 
    <el3>1234567891011121314</el3> 
    <el4></el4> 
</root> 

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> 
    <xsl:output method="text"/> 
    <xsl:template match="/*"> 
     <xsl:for-each select="*"> 
      <xsl:variable name="test" select="string-length(.)" /> 
      <xsl:if test="$test &lt; 12"><xsl:value-of select="local-name(.)"/>: shorter than 12&#10;</xsl:if> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
+0

錯字(在我的帖子中不是我的代碼)現在會更正 – ankles

+0

但是如果日期有12或24個字符,'$ alextest < 12'仍然是錯誤的。 –

+0

謝謝,沒有太多的睡眠,短日期實際上是十個字符,所以它應該解決爲真 – ankles