XSLT:如何忽略不必要的空白区域?

时间:2010-03-23 11:16:14

标签: xslt whitespace

给出这个示例XML文件:

<doc>
<tag>

    Hello !

</tag>
<tag>
    My
    name
    is
    John
</tag>
</doc>

以下XSLT表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"> 
    <xsl:for-each select="doc/tag">
        <xsl:value-of select="."/>
    </xsl:for-each>
</xsl:template> 
</xsl:stylesheet>

如何更改它以忽略换行符并将任何一组空格字符转换为项目中的一个空格?换句话说,我想获得:

Hello!
My name is John

没有那些那些愚蠢的换行。 ......问题是如何。

提前致谢!

2 个答案:

答案 0 :(得分:3)

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

事实上,关于它有一个good post

答案 1 :(得分:1)

normalize-space函数返回带有空格的参数字符串,该空格通过去除前导和尾随空格并用空格替换空白字符序列来规范化。如果省略该参数,则默认为转换为字符串的上下文节点,换句话说,是上下文节点的字符串值。

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