0

XSLT でのフィルタリングに問題があります。基本的には xml があり、期日が 3 か月の間隔に収まるアイテムのみを取得したいと考えています。次のように記述しました。

<xsl:variable name="TaskRows" select="/dsQueryResponse/Tasks/Rows/Row[@DueDate &gt; $IsoBeginQuartDate AND @DueDate &lt; $IsoEndQuartDate]"/>

しかし、次のエラーが表示されます。

IsoDates は、ISO 形式で計算およびフォーマットされた日付です ...

アイデア、方法、またはフィルタリング時に「AND」を使用できませんか?

PS: XSLT 1.0 を使用しています

4

2 に答える 2

3

ここでは大文字と小文字が区別されます。「AND」の代わりに「and」を使用してみてください。

于 2013-09-19T08:17:58.093 に答える
1

残念ながら、XSLT 1.0 では、日付を比較して日付が 2 つの値の間にあるかどうかを確認することはできません。

あなたができることは次のようなものです:

<!-- Make sure to format this variables as YYYYMMDD -->
<xsl:variable name="$IsoBeginQuartDate">20130101</xsl:variable>
<xsl:variable name="$IsoBeginQuartDate">20131231</xsl:variable>

<!-- Make sure @DueDate also has the format YYYYMMDD, in this example I assume the DueDate has format YYYY-MM-DD -->
<xsl:variable name="TaskRows" select="/dsQueryResponse/Tasks/Rows/Row[translate(@DueDate, '-', '') &gt; $IsoBeginQuartDate and translate(@DueDate, '-', '') &lt; $IsoEndQuartDate]"/>

文字列または日付に対して&gt;andまたは not がサポートされているため、エラーが発生するようになりました。&lt;

于 2013-09-19T06:57:09.563 に答える