XSLT: как игнорировать ненужные пробелы? - PullRequest
1 голос
/ 23 марта 2010

Данный пример XML-файла:

<doc>
<tag>

    Hello !

</tag>
<tag>
    My
    name
    is
    John
</tag>
</doc>

И следующий лист XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/"> 
    <xsl:for-each select="doc/tag">
        <xsl:value-of select="."/>
    </xsl:for-each>
</xsl:template> 
</xsl:stylesheet>

Как мне изменить его, чтобы игнорировать перевод строки и преобразовывать любую группу белого-пространство символов до одного пробела в элементах?Другими словами, я хотел бы получить:

Hello!
My name is John

Без всех этих глупых переводчиков.... вопрос в том, как.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 23 марта 2010
<xsl:template match="tag">
  ...
  <xsl:value-of select="normalize-space(.)" />
  ...
</xsl:template>

На самом деле есть хороший пост об этом.

2 голосов
/ 23 марта 2010

Функция normalize-space возвращает строку аргумента с пробелами, нормализованными путем удаления начальных и конечных пробелов и замены последовательностей пробельных символов одним пробелом. Если аргумент пропущен, по умолчанию используется узел контекста, преобразованный в строку, другими словами, строковое значение узла контекста.

<xsl:value-of select="normalize-space()"/>
...