So say for example your XML looks like...
="1.0"
<root>
<links>Some URL|http://www.someurl.com|Another URL|http://www.anotherurl.com</links>
</root>
If you are using XSLT 1.0 then you'll need yo use some form of recursion (be aware, if you have too many text+link pairs the transformation engine may stack overflow - in which case you'll need to look at using divide'n'conquer). But something like...
="1.0"
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<p>
<xsl:text>My links are:-</xsl:text>
<br/>
<xsl:apply-templates select="root/links"/>
</p>
</body>
</html>
</xsl:template>
<xsl:template match="links">
<xsl:call-template name="SplitLinks">
<xsl:with-param name="pLinks" select="text()"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="SplitLinks">
<xsl:param name="pLinks"/>
<xsl:variable name="vCountSeperators" select="string-length($pLinks) - string-length(translate($pLinks,'|',''))"/>
<xsl:choose>
<xsl:when test="$vCountSeperators >= 2">
<a href="{substring-before(substring-after($pLinks,'|'),'|')}">
<xsl:value-of select="substring-before($pLinks,'|')"/>
</a>
<xsl:text> | </xsl:text>
<xsl:call-template name="SplitLinks">
<xsl:with-param name="pLinks" select="substring-after(substring-after($pLinks,'|'),'|')"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$vCountSeperators = 1">
<a href="{substring-after($pLinks,'|')}">
<xsl:value-of select="substring-before($pLinks,'|')"/>
</a>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
In XSLT 2.0/XPath 2.0 you can use the tokenize() function, something like...
="1.0"
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<p>
<xsl:text>My links are:-</xsl:text>
<br/>
<xsl:apply-templates select="root/links"/>
</p>
</body>
</html>
</xsl:template>
<xsl:template match="links">
<xsl:variable name="vLinksParts" select="tokenize(text(),'\|')" as="xs:string*"/>
<xsl:for-each select="1 to xs:integer(floor(count($vLinksParts) div 2))">
<xsl:variable name="vIndex" select="(. * 2) - 1" as="xs:integer"/>
<a href="{$vLinksParts[$vIndex + 1]}">
<xsl:value-of select="$vLinksParts[$vIndex]"/>
</a>
<xsl:if test="position() != last()">
<xsl:text> | </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>