https://www.w3.org/TR/xpath-functions/#func-tokenize объясняет версию с одним аргументом tokenize
:
Форма этой функции с одним аргументом разделяет предоставленную строку на границах пробелов.
, а затем продолжает определять или объяснять, что с
вызов fn:tokenize($input)
эквивалентен вызову fn:tokenize(fn:normalize-space($input), ' '))
, где второй аргумент - это один пробел (x20)
Однако, когда я пытаюсь count(tokenize('1 2 3')), count(tokenize('1 2 3'))
с Saxon, BaseX или XmlPrime, я получаю 3 3
, тогда как предположительно эквивалентный count(tokenize('1 2 3', ' ')), count(tokenize('1 2 3', ' '))
во всех трех реализациях дает мне 3 1
.
Так что все триреализации, кажется, делают с tokenize($s)
, что говорит текстовое объяснение («разбивает предоставленную строку на границах пробелов»), но не похоже, что эквивалентность fn:tokenize($input)
и fn:tokenize(fn:normalize-space($input), ' '))
, заданная в спецификации, сохраняется, еслипробел в буквальном смысле передается только в том случае, если в качестве разделителя используется только один пробел, а не пробельные границы.
Является ли эта эквивалентность, заданная в спецификации, определением единственного аргумента?т версия не так?