只去除前导空格

5

给定的元素:

 <comments>  comments
go here
</comments>

如何去除可能存在的多个前导空格字符。我不能使用 normalize-space,因为我需要保留换行符等。XSLT 2.0 可以。


谢谢提醒。我想我应该读一下说明书,因为我直到最后一篇帖子才注意到这个问题。 - johkar
好问题(+1)。查看我的答案,有一个XPath 1.0的一行解决方案。 :) - Dimitre Novatchev
2个回答

4
在XPath 1.0中(也适用于XSLT 1.0):
substring($input, 
          string-length(
                        substring-before($input, 
                                         substring(translate($input, ' ', ''), 
                                                   1,
                                                   1)
                                         )
                       ) +1
          )

包装在XSLT转换中:

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

 <xsl:variable name="input"
   select="string(/*/text())"/>

 <xsl:template match="/">
   '<xsl:value-of select=
   "substring($input,
              string-length(
                            substring-before($input,
                            substring(translate($input, ' ', ''),
                                      1,
                                      1)
                                             )
                            ) +1
              )
   "/>'
 </xsl:template>
</xsl:stylesheet>

当这个转换应用在以下XML文档中时:

<t>    XXX   YYY Z</t>

正确的,期望的结果被产生:

   'XXX   YYY Z'

3

使用replace()函数:

replace($input,'^ +','')

该函数只处理到第一个非空格字符之前的前导空格。如果您想删除所有前导空格字符(即空格、换行符、回车符、制表符)直到第一个非空白字符,请使用:

replace($input,'^\s+','')

你如何仅删除行末空格? - StudentOfTheGame

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接