From http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends
XML parsed entities are often stored
in computer files which, for editing
convenience, are organized into lines.
These lines are typically separated by
some combination of the characters
CARRIAGE RETURN (#xD) and LINE FEED
(#xA).
To simplify the tasks of applications,
the XML processor MUST behave as if it
normalized all line breaks in external
parsed entities (including the
document entity) on input, before
parsing, by translating both the
two-character sequence #xD #xA and any
#xD
that is not followed by #xA to a single #xA character.
So, it's ok to look for 

(or
). But do note that white space only text nodes from the input may or may not be preserve depending on XML tree provider (MSXSL XML parser doesn't preserve this text nodes). Not white space only text nodes are preserved, of course.
Then, this text
named template replace new lines with empty br
elements in XSLT 1.0:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()" name="text">
<xsl:param name="pString" select="."/>
<xsl:choose>
<xsl:when test="contains($pString,'
')">
<xsl:call-template name="text">
<xsl:with-param name="pString"
select="substring-before($pString,'
')"/>
</xsl:call-template>
<br/>
<xsl:call-template name="text">
<xsl:with-param name="pString"
select="substring-after($pString,'
')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$pString"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
With this input:
<root>
<text>
whatever
</text>
<text>and more</text>
</root>
Output:
<root>
<text><br />whatever<br /></text>
<text>and more</text>
</root>