2010-07-06 3 views
5

Данный элемент:Strip ведущие пробелы только

<comments> comments 
go here 
</comments> 

Как я могу раздеться, что может быть несколько ведущих космических символов. Я не могу использовать нормализованное пространство, потому что мне нужно сохранить новые строки и т. Д. XSLT 2.0 в порядке.

+0

Спасибо за головы. Наверное, я должен был прочитать инструкции, так как не замечал этого до моего последнего сообщения. – johkar

+0

Хороший вопрос (+1). См. Мой ответ на однострочное решение XPath 1.0. :) –

ответ

4

Используйте replace() функцию:

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

, который обрабатывает ведущие пробельные символы только до первого не-пространства. Если вы хотите, чтобы удалить все ведущие пробельные символы (т.е. пространство, п, сг, вкладка) до первого непробельных, использование:

replace($input,'^\s+','') 
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' 

 Смежные вопросы

  • Нет связанных вопросов^_^