我有使用XSLT过滤的麻烦,基本上我有一个xml,我想只得到截止日期为3个月的间隔的那些项目...我写了以下内容:
<xsl:variable name="TaskRows" select="/dsQueryResponse/Tasks/Rows/Row[@DueDate > $IsoBeginQuartDate AND @DueDate < $IsoEndQuartDate]"/>
但是我收到一个错误:“设置处理器样式表失败:预期令牌']'找到'名称'...
以ISO格式计算IsoDates并格式化日期......
任何想法,怎么做,或者我在过滤时不能使用“AND”?
PS:我正在使用XSLT 1.0
答案 0 :(得分:3)
这里有区分大小写!尝试使用'和'而不是'AND'。
答案 1 :(得分: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, '-', '') > $IsoBeginQuartDate and translate(@DueDate, '-', '') < $IsoEndQuartDate]"/>
您现在收到错误,因为>
和<
或字符串或日期不支持。