0

我在使用 XSLT 过滤时遇到了麻烦,基本上我有一个 xml,我只想获取到期日期为 3 个月的那些项目......我写了以下内容:

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

但我收到一个错误:“设置处理器样式表失败:预期令牌']'找到'NAME' ...

IsoDates 是以 ISO 格式计算和格式化的日期...

任何想法,怎么做,或者过滤时我不能使用“AND”?

PS:我正在使用 XSLT 1.0

4

2 回答 2

3

这里有区分大小写的工作!尝试使用“and”而不是“AND”。

于 2013-09-19T08:17:58.093 回答
1

不幸的是,在 XSLT 1.0 中,您无法比较日期以查看日期是否介于两个值之间。

你可以做的是这样的:

<!-- 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;&lt;日期不支持或不支持。

于 2013-09-19T06:57:09.563 回答