5

给定元素:

 <comments>  comments
go here
</comments>

如何去除可能是多个前导空格字符的内容。我不能使用规范化空间,因为我需要保留换行符等。XSLT 2.0 好的。

4

2 回答 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'
于 2010-07-06T21:51:09.117 回答
3

使用replace()功能:

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

它只处理前导空格字符,直到第一个非空格。如果要删除所有前导空白字符(即空格、nl、cr、制表符)直到第一个非空白,请使用:

replace($input,'^\s+','')
于 2010-07-06T21:19:11.177 回答