Прежде всего, приведенный код XSLT довольно странный :
<xsl:template match="//client">
<xsl:value-of select="./nom/." />
</xsl:template>
Это намного лучше написано как эквивалент :
<xsl:template match="client">
<xsl:value-of select="nom" />
</xsl:template>
И способ вывода многострочного текста ... ну, использовать символ новой строки:
<xsl:template match="client">
<xsl:value-of select="nom" />
<xsl:if test="not(position()=last())">
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
Вот полное преобразование:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="client">
<xsl:value-of select="nom" />
<xsl:if test="not(position()=last())">
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к следующему документу XML:
<t>
<client>
<nom>A</nom>
</client>
<client>
<nom>B</nom>
</client>
<client>
<nom>C</nom>
</client>
</t>
желаемый, правильный результат получается:
A
B
C
Если вы хотите создать вывод xHtml (не только текст), то вместо символа NL должен быть создан элемент <br>
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="client">
<xsl:value-of select="nom" />
<xsl:if test="not(position()=last())">
<br />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Теперь вывод :
A<br/>B<br/>C
и отображается в браузере как :
А
Б
С