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), ' '))
规范中作为单参数版本的定义给出的等价是错误的吗?