Как убрать пробелы в конце текста в элементе. (XSL) - PullRequest
2 голосов
/ 15 апреля 2009

Кто-нибудь знает, какой код XSL удалит завершающие пробелы после последнего слова в элементе?

<p>This is my paragraph.  </p>

Спасибо !!

Ответы [ 2 ]

7 голосов
/ 15 апреля 2009

Посмотрите на функцию normalize-space() XPath .

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

Будьте осторожны, есть подвох (который может или не может иметь отношение к вам):

Функция [...] возвращает Строка аргумента с пробелом нормализуется путем удаления ведущих и завершающий пробел и замена последовательности пробельных символов по один пробел .

Это означает, что он также удаляет все разрывы строк и табуляции и другие пробелы и превращает их в один пробел.

4 голосов
/ 16 апреля 2009

РЕДАКТИРОВАТЬ : Значительное упрощение кода благодаря подсказке от Томалака.

Вот решение XPath 2.0 / XSLT 2.0 , которое удаляет только конечные пробелы:

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

  <xsl:template match="text()">
    "<xsl:sequence select="replace(., '\s+$', '', 'm')"/>"
  </xsl:template>
</xsl:stylesheet>

Когда это применяется к следующему документу XML :

<someText>   This is    some text       </someText>

желаемый результат получен :

"   This is    some text"

Вы можете увидеть решение XSLT 1.0 (реализующее почти ту же идею), которое использует FXSL 1.x , здесь :

http://www.biglist.com/lists/xsl-list/archives/200112/msg01067.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...