Subject: RE: [xsl] Converting embedded URLs int hot links via XSL From: bryan.s.schnabel@xxxxxxxxxxxxxx Date: Fri, 16 Apr 2004 15:17:41 -0700 |
Here's an approach you could use. The "choose's" and "substring-before's" and "substring-after's" get kind of shaggy. And choice of substring conditions make some pretty lazy assumptions about the expected form of the url's, but you get the idea: <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="text()" priority="2"> <xsl:choose> <xsl:when test="contains(.,'http')"> <xsl:variable name="after.com" select="substring-after(.,'.com')" /> <xsl:value-of select="substring-before(.,'http')" /> <a> <xsl:attribute name="href"> <xsl:value-of select="concat('http',substring-after(substring-before(.,'.com'),'http'),'.c om')" /> </xsl:attribute> <xsl:value-of select="concat('http',substring-after(substring-before(.,'.com'),'http'),'.c om')" /> </a> <xsl:call-template name="lazy-recurs"> <xsl:with-param name="after-.com"> <xsl:value-of select="$after.com" /> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="." /> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="lazy-recurs"> <xsl:param name="after-.com" /> <xsl:choose> <xsl:when test="contains($after-.com,'http')"> <xsl:variable name="after.com" select="substring-after($after-.com,'.com')" /> <xsl:value-of select="substring-before($after-.com,'http')" /> <a> <xsl:attribute name="href"> <xsl:value-of select="concat('http',substring-after(substring-before($after-.com,'.com'),' http'),'.com')" /> </xsl:attribute> <xsl:value-of select="concat('http',substring-after(substring-before($after-.com,'.com'),' http'),'.com')" /> </a> <xsl:call-template name="lazy-recurs"> <xsl:with-param name="after-.com"> <xsl:value-of select="$after.com" /> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$after-.com" /> </xsl:otherwise> </xsl:choose> </xsl:template> -----Original Message----- From: Ghulam Abbas [mailto:abbasg_99@xxxxxxxxx] Sent: Friday, April 16, 2004 12:53 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] Converting embedded URLs int hot links via XSL Here is the sample xml <strings> <str>Test url string: 'http://www.yahoo.com' and one more url "https://www.yahoo.com"</str> </strings> So, is there a way to extract the urls above from str and then convert them into hotlinks. The desired html is something like Test url string: <a href="http://www.yahoo.com" target="_blank">'http://www.yahoo.com'</a> and one more url <a href="https://www.yahoo.com" target="_blank">"https://www.yahoo.com"</a> I've tried recursion but it doesn't work. Any ideas??? Thanks, Abbas __________________________________ Do you Yahoo!? Yahoo! Tax Center - File online by April 15th http://taxes.yahoo.com/filing.html
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Converting embedded URLs , Passin, Tom | Thread | RE: [xsl] Converting embedded URLs , Ghulam Abbas |
RE: [xsl] Value-of varible question, Hansen, John | Date | Re: [xsl] Select issue with some at, David Carlisle |
Month |