如何从元素中的文本末尾删除空格。 (XSL)

时间:2009-04-15 18:32:33

标签: xslt

有人知道XSL代码会删除元素中最后一个单词之后的尾随空格吗?

<p>This is my paragraph.  </p>

谢谢!

2 个答案:

答案 0 :(得分:7)

查看normalize-space() XPath函数。

<xsl:template match="p">
  <p><xsl:value-of select="normalize-space()" /></p>
</xsl:template>

小心,有一个问题(可能与您有关或可能不相关):

  

[...]函数返回   带有空格的参数字符串   通过剥离领先和标准化   尾随空格并替换   空格字符序列   单个空间

这意味着它还会删除所有换行符和制表符以及其他空格,并将它们转换为单个空格。

答案 1 :(得分:4)

编辑:感谢Tomalak的提示,显着简化了代码。

这是一个XPath 2.0 / XSLT 2.0解决方案,只删除尾随空格:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 >
  <xsl:output method="text"/>

  <xsl:template match="text()">
    "<xsl:sequence select="replace(., '\s+$', '', 'm')"/>"
  </xsl:template>
</xsl:stylesheet>

将此内容应用于以下XML文档

<someText>   This is    some text       </someText>

生成了想要的结果

"   This is    some text"

您可以看到XSLT 1.0解决方案(实现几乎相同的想法),它使用FXSL 1.xhere

http://www.biglist.com/lists/xsl-list/archives/200112/msg01067.html