2011-10-27 2 views
0

文字列の長さを使用して、日付か日時かを判断しようとしています。日付には10個の文字があり、日時には24文字が含まれます。時間がない場合は、カレンダーでそれを終日イベントとして解釈する必要があります。string-length()が機能しない場合のXSLT

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

if文は常に条件が満たされた場合でも、出力trueに失敗しかし: -

は、これは私が使用して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;の形式で必要と思われます。

EDIT:以下の作品を期待されるようなので、まだ何か問題がコードの外にあなたが示されてきた、または多分値を調整する必要がなければなりません。変数の選択式が本当に何かに解決されていることを確認してください。

<?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

Typo(自分のコードではない)自分のコードではない – ankles

+0

日付が12文字か24文字の場合、 '$ alextest < 12'は常にfalseになります。 –

+0

ありがとう、多くの睡眠を持っていない、短い日付は実際には10文字ですので真実として解決する必要があります – ankles

関連する問題