我正在尝试确定当前日期是否在XSLT / XPath中的其他两个日期之间。我发现xs:date(STRING)将日期字符串转换为日期值,然后可以与current-date()比较。
我的问题是尝试此方法时,出现错误,提示该功能不存在。 dateTime也显然不存在。这是我使用的名称空间的代码。
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/04/xpath-functions/"
xmlns:xs="http://www.w3.org/2001/XMLSchema/">
<xsl:if test = "fn:current-dateTime lt fn:date(EndDateActive)
and fn:current-dateTime gt fn:date(StartDateActive)">
“结束”和“开始日期”字符串的格式正确为afaik(yyyy-mm-dd),我也尝试了以下选项,它们全部告诉我该功能不存在:
xs:date(EndDateActivate)
xsl:date(EndDateActivate)
fn:dateTime(EndDateActivate)
xs:dateTime(EndDateActivate)
xsl:dateTime(EndDateActivate)
答案 0 :(得分:0)
有两个问题:
fn:current-dateTime()
是一个函数。您缺少()
fn
命名空间是http://www.w3.org/2005/xpath-functions
,而不是http://www.w3.org/2005/04/xpath-functions/
fn:
名称空间前缀。您可以只使用current-dateTime()
http://www.w3.org/2001/XMLSchema
,而不是http://www.w3.org/2001/XMLSchema/
(删除尾随的/
)xs:dateTime
与xs:date
进行比较
current-dateTime()
而不是current-date()
对名称空间声明进行以下调整:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
并发送到您的@test
:
<xsl:if test="fn:current-date() lt xs:date(EndDateActive)
and fn:current-date() gt xs:date(StartDateActive)">
</xsl:if>