XPath - это нулевая дата

Как с помощью 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 не существует, я предполагаю, что он будет нулевым/пустым). Я хочу, чтобы это первое (пустое) значение было другим: значение узла offsetDateTime

Расположение узлов:

/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


person marcwenger    schedule 30.08.2012    source источник
comment
Если вам нужен осмысленный и полезный ответ, вам нужно предоставить небольшой образец XML-документа, чтобы объяснить, какие узлы содержат значения даты и каким должен быть результат оценки выражения XPath. Пожалуйста, отредактируйте вопрос и укажите недостающую, важную информацию.   -  person Dimitre Novatchev    schedule 30.08.2012


Ответы (2)


Чтобы проверить, заполнен ли он:

perDiemStart[text()]

Чтобы проверить, является ли он пустым/нулевым:

perDiemStart[not(text())]
person Mauritz Hansen    schedule 30.11.2012

Это помогает? 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), а затем используя «не», чтобы увидеть, какие узлы будут исключены.

person snibbets    schedule 30.08.2012