Xml 为什么normalize-space()不能去掉所有空格?

Xml 为什么normalize-space()不能去掉所有空格?,xml,xslt,removing-whitespace,Xml,Xslt,Removing Whitespace,我编写了一个小XSLT,其中添加了normalize-space()函数来去除不必要的空格: XSLT本身可以工作,但有些空间没有规范化: <category> TEST </category> 测试 我不明白为什么normalize-space()不能删除这些空格。功能条: 链接示例中TEXT周围的字符不是这些字符中的一个(正如@har07在注释中指出的)。Per@michael.hor257k's 如注释中所述,这些字符实际上是不间断空格字符(#160)。要

我编写了一个小XSLT,其中添加了
normalize-space()
函数来去除不必要的空格:


XSLT本身可以工作,但有些空间没有规范化:

<category> TEST </category>
测试
我不明白为什么
normalize-space()
不能删除这些空格。

功能条:

链接示例中
TEXT
周围的字符不是这些字符中的一个(正如@har07在注释中指出的)。Per@michael.hor257k's


如注释中所述,这些字符实际上是不间断空格字符(#160)。要将其作为常规空格处理,请使用:

<xsl:value-of select="normalize-space(translate(., '&#160;', ' '))"/>


你也有吗?没有,但我添加了:->没有变化。在你发布的链接中,
TEST
周围的字符看起来不像空白。这一个是从你的复制粘贴的,它得到了预期的标准化:明白了。是否有类似normalize-space()的函数,但对于NBSP字符?@Adrian在应用
normalize-space()
之前,您可以
将它们转换为常规空格。
[3]       S      ::=      (#x20 | #x9 | #xD | #xA)+
<xsl:template match="page/pageFunctionResult[1]/category[1]">
  <xsl:value-of select="string-to-codepoints(substring(., 1, 1))"/>
</xsl:template>
<xsl:value-of select="normalize-space(replace(., '\p{Z}', ' '))"/>
<xsl:value-of select="normalize-space(translate(., '&#160;', ' '))"/>