Продвижение полосы располагает с интервалами только

Учитывая элемент:

 <comments>  comments
go here
</comments>

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

5
задан johkar 6 July 2010 в 21:04
поделиться

2 ответа

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

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

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

replace($input,'^\s+','')
4
ответ дан 14 December 2019 в 04:29
поделиться

В 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'
4
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: