Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Efficient XSLT to Render Hyperlink

Posted on 2008-11-02
3
Medium Priority
?
586 Views
Last Modified: 2013-11-18
I have some XSLT which appears to do what I need it to (listed in the source snippet box below). What I want to know, is this the simplest way of doing this?

The XSLT renders the hyperlink URL next to the link text (only when printed).
Visit EE (www.experts-exchange.com)

The URL should only be rendered when:
   - The link text is not a URL itself.
            <hyperlink href="www.experts-exchange.com">www.experts-exchange.com</hyperlink>
   - The link text is blank (because the URL is rendered instead of text).
            <hyperlink href="www.experts-exchange.com"></hyperlink>
   - The URL refers to a page, website, or file. I don't want anything like 'javascript:addTotals' to be rendered!!
            <hyperlink href="javascript:addTotals();">Calculate Totals</hyperlink>
<xsl:template match="hyperlink" mode="content">
	<xsl:variable name="innerText" select="child::node()" />
	<a>
		<xsl:attribute name="href">
			<xsl:choose>
				<xsl:when test="string-length(@href)>0">
					<xsl:value-of select="@href" />
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>#</xsl:text>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:attribute>
		<xsl:choose>
			<xsl:when test="string-length($innerText)>0">
				<xsl:call-template name="render-html-content" />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="@href" />
			</xsl:otherwise>
		</xsl:choose>
	</a>
	<xsl:if test="string-length($innerText)>0 and not(contains($innerText,'www.') or contains($innerText,'tp://') or starts-with(@url,'javascript:'))">
		<span class="PrintOnly">
			<xsl:text> (</xsl:text>
			<span style="color: green">
				<xsl:value-of select="@href" />
			</span>
			<xsl:text>)</xsl:text>
		</span>
	</xsl:if>
</xsl:template>

Open in new window

0
Comment
Question by:numberkruncher
  • 2
3 Comments
 
LVL 60

Accepted Solution

by:
Geert Bormans earned 2000 total points
ID: 22862603
seems to do what you want...
I don't think there is much to improve here

cheers

Geert
0
 
LVL 13

Author Comment

by:numberkruncher
ID: 22865891
Excellent, thanks for checking that for me. Some pages can have a lot of links, and I wanted to make sure that the XSLT was as efficient as possible so as not to kill my server when this thing goes live.
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 22865934
welcome
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Find out what you should include to make the best professional email signature for your organization.
Without even knowing it, most of us are using web applications on a daily basis.  In fact, Gmail and Yahoo email, Twitter, Facebook, and eBay are used by most of us daily—and they are web applications. We generally confuse these web applications to…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.
Suggested Courses

564 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question