[xsl] XSL - parsing a delimited string (URL)

Subject: [xsl] XSL - parsing a delimited string (URL)
From: B Williams <bwilliam45@xxxxxxxxxxx>
Date: Wed, 22 Dec 2010 12:24:26 -0600
I have an XML element that might might be empty or might contain:

;#http://www.blah.com/blah/blah2/blah.doc;#

or:

;#http://www.blah.com/blah/blah3/blah.doc;#http://www.blah.com/blah/blah4/bla
h.doc;#

How do I tokenize the string so that I can get only that first occurrence?
That is, only the first URL (if any) between the delimiters ... ?

Also, if possible, I need the xsl function / template to spit out a 'default'
URL if the source XML element is empty ...

Believe I'm using XSL 1.0.
I'm using Microsoft SharePoint Designer for SharePoint 2007.   The beginning
of the <xsl ...> is the following:

<xsl:stylesheet xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:ddw1="http://schemas.microsoft.com/sharepoint/soap/";
xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"
version="1.0" exclude-result-prefixes="xsl msxsl ddwrt"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime";
xmlns:asp="http://schemas.microsoft.com/ASPNET/20";
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer";
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:ddwrt2="urn:frontpage:internal">


I have the following, but it's not so great:

<xsl:template name="SplitAttachments">
 <xsl:param name="str"/>
  <xsl:choose>
   <xsl:when test="contains($str,';#')">
   <xsl:variable name="attachmentUrl" select="substring-before($str,';#')"/>
   <xsl:if test="string-length($attachmentUrl) != 0">
    <a href="{$attachmentUrl}"></a>
   </xsl:if>
   <xsl:call-template name="SplitAttachments">
    <xsl:with-param name="str" select="substring-after($str,';#')" />
   </xsl:call-template>
   </xsl:when>
  <xsl:otherwise> </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Current Thread