我编写了一个小小的XSLT,其中添加了normalize-space()函数以去掉不必要的空格:
http://xsltransform.net/bnnZWM
<xsl:template match="page/pageFunctionResult/*/text()">
<xsl:value-of select="normalize-space(.)"/>
</xsl:template>XSLT本身起作用,只是有些空格没有标准化:
<category> TEST </category>我不明白为什么normalize-space()不能删除这些空格。
发布于 2016-02-27 22:40:06
规范化-空间()函数剥离https://www.w3.org/TR/REC-xml/#NT-S
3S ::= (#x20 \x9\ #xD \ #xA)+ )
链接示例中围绕TEXT的字符不是这些字符之一(正如@har07在注释中指出的那样)。@michael.hor257 k的string-to-codepoints()
<xsl:template match="page/pageFunctionResult[1]/category[1]">
<xsl:value-of select="string-to-codepoints(substring(., 1, 1))"/>
</xsl:template>我们可以看到它们是无间断空间字符(#xA0),也就是 。
要除去 ,你需要的不仅仅是normalize-space().
XSLT1.0
XSLT2.0
如果希望覆盖 和其他类型的空格字符,请在normalize-space()之前使用replace()和类别转义。
<xsl:value-of select="normalize-space(replace(., '\p{Z}', ' '))"/>发布于 2016-02-27 23:06:34
正如注释中所指出的,这些字符实际上是不间断的空格字符(#160)。若要将它们作为常规空间处理,请使用:
<xsl:value-of select="normalize-space(translate(., ' ', ' '))"/>https://stackoverflow.com/questions/35676242
复制相似问题