XSLT fn: маркировать игнорирование начальных и конечных пробелов

#xslt

#xslt

Вопрос:

Простая строка даты должна быть маркирована. Я использую этот пример кода xslt:

 fn:tokenize(date, '[ .s] ')
  

Все варианты неправильного формата даты (например, «10.10.2020», «10. 10 . 2020», «10 . 10. 2020») обозначаются ok с помощью функции, описанной выше, за исключением случаев, когда присутствует начальный пробел (например, «10.10.2020»). Если присутствует начальный пробел, первый элемент затем маркируется как » » пробел.

Есть ли возможность игнорировать и эти начальные пробелы, поэтому независимо от того, насколько плох формат, только разделитель «.» означает другой токен, и все пробелы также удаляются?

Комментарии:

1. Разве вы не можете просто использовать tokenize(normalize-space(date), '.') ? Или использовать tokenize(replace(date, '^s |s $'), '[ .s] ') .

2. Я попробовал первый вариант, как вы предложили, но он по-прежнему оставляет некоторые пробелы (22-) (-6-) (-2018) с каждым элементом. Я просто заменил пробелы на «-«, чтобы проиллюстрировать ситуацию. Затем я просто обновил свой код с помощью normalize-space, и он работает нормально. Я также опубликовал решение. Спасибо!

Ответ №1:

Кажется, правильное решение:

 fn:tokenize(normalize-space(date, '[ .s] ')