Кто-нибудь знает, какой код XSL удалит завершающие пробелы после последнего слова в элементе?
<p>This is my paragraph. </p>
Спасибо !!
Посмотрите на функцию normalize-space() XPath .
normalize-space()
<xsl:template match="p"> <p><xsl:value-of select="normalize-space()" /></p> </xsl:template>
Будьте осторожны, есть подвох (который может или не может иметь отношение к вам):
Функция [...] возвращает Строка аргумента с пробелом нормализуется путем удаления ведущих и завершающий пробел и замена последовательности пробельных символов по один пробел .
Это означает, что он также удаляет все разрывы строк и табуляции и другие пробелы и превращает их в один пробел.
РЕДАКТИРОВАТЬ : Значительное упрощение кода благодаря подсказке от Томалака.
Вот решение 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