1

使用 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 不存在,我想它会是空/空白)。我希望第一个(空白)值不同:departmentDateTime 节点的值

节点位置:

/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

4

2 回答 2

1

要检查它是否已填充:

perDiemStart[text()]

要检查它是否为空/null:

perDiemStart[not(text())]
于 2012-11-30T13:40:39.937 回答
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)之后的日期集来检测空日期,然后使用“不”来查看哪些节点将被排除在外。

于 2012-08-30T00:28:24.830 回答