有人知道XSL代码会删除元素中最后一个单词之后的尾随空格吗?
<p>This is my paragraph. </p>
谢谢!
答案 0 :(得分:7)
<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.x,here:
http://www.biglist.com/lists/xsl-list/archives/200112/msg01067.html