XPath - 日期为null

时间:2012-08-30 00:07:00

标签: date datetime xpath infopath2010

使用XPath,如何确定日期或日期时间字段是空还是空白?

我使用concat方法作为XPath if语句的替身

concat(
substring(../preceding-sibling::my:PerDiem[1]/my:perDiemEnd, 1, ../preceding-sibling::my:PerDiem[1]/my:perDiemEnd = "" * string-length(../preceding-sibling::my:PerDiem[1]/my:perDiemEnd)),
substring(/my:ExpenseForm/my:ExpenseHeader/my:departureDateTime, 1, not(../preceding-sibling::my:PerDiem[1]/my:perDiemEnd = "") * string-length(/my:ExpenseForm/my:ExpenseHeader/my:departureDateTime))
)

更多信息: 在Infopath 2010中,重复表有两个日期/时间字段perDiemStart和perDiemEnd。在重复表中,下一个perDiemStart是之前的perDiemEnd。如果perDiemStart的默认值为../preceding-sibling::my:PerDiem[1]/my:perDiemEnd

,则可以轻松完成此操作

但是对于第一个perDiemStart(因为之前的perDiemEnd不存在,我认为它将为null /空白)。我希望第一个(空白)值是不同的:departureDateTime节点的值

节点位置:

/my:ExpenseForm/my:ExpenseHeader/my:departureDateTime

/my:ExpenseForm/my:PerDiemDetails/my:PerDiems/my:PerDiem/my:perDiemStart

/my:ExpenseForm/my:PerDiemDetails/my:PerDiems/my:PerDiem/my:perDiemEnd

2 个答案:

答案 0 :(得分:1)

检查它是否已填满:

perDiemStart[text()]

检查它是否为空/ null:

perDiemStart[not(text())]

答案 1 :(得分:0)

这有帮助吗? http://blogs.msdn.com/b/syamp/archive/2011/03/13/fim-2010-xpath-how-to-check-null-value-on-a-datetime-attribute.aspx

基本上,他们通过在旧日期之后获取日期集(例如1900-01-01)然后使用'not'来查看将排除哪些节点来检测空日期。