At 2009-07-01 09:10 -0400, Sharon_Harris(_at_)ultimatesoftware(_dot_)com wrote:
One more thing I am trying to do within the same node is to search for any
text that starts w/ "http://" and take that and the text that follows it
and turn it into an active hyperlink.
Sounds good. Another role for <xsl:analyze-string/>
This is the code I was using to
perform this action and now understand that I need to combine this along w/
the action for searching for specific words and wrapping tags around them
within the same template definition (ReleaseNote). Unfortunately, I have
not been successful and do not understand how to perform 2 different search
and replace functions within the same node.
Indeed ... you need to know that template rules are mutually
exclusive and for every node that arrives only one template gets
matched. Therefore, you need to approach this a similar way to how
you approached the nested replace functions ... there you were acting
on the second replace with the results of the third, and the first
replace with the results of the second. Now you need to nest the
string analysis.
Here is the original code which obviously does not work as the ReleaseNote
template definition overwrites the changes made from the text template
definition. But I do not understand how to combine both actions within the
ReleaseNote template definition.
You can take advantage of the template rule you've written, or you
could write the analysis inline. For my example below, I've re-used
what you've created. I'm assuming you've parameterized the template
in order to take advantage of it elsewhere ... otherwise your
assignment provides no benefit.
Oh, one thing you missed is that my use of <xsl:copy> was to preserve
<ReleaseNotes> for your example ... since you are now creating pure
HTML, you shouldn't be preserving that input element.
I hope this helps. You've moved quickly in understanding what needs
to be done.
. . . . . . . . . Ken
p.s. Happy Canada day holiday to all Canadian readers!
t:\>type sharon.xml
<test>
<Row>
<ReleaseNote>Before: The application did this. Now: The application does
this. Here is a link: http://myurl.com Note: The application may also do
this.</ReleaseNote>
</Row>
<Row>
<ReleaseNote>Before: The application did not do this. Now: The
application does this.</ReleaseNote>
</Row>
</test>
t:\>xslt2 sharon.xml sharon.xsl
<?xml version="1.0" encoding="UTF-8"?><test>
<Row>
<td><b>Before:</b> The application did this. <b>Now:</b> The
application does
this. Here is a link: <a href="http://myurl.com"
target="new">http://myurl.com</a> <b>Note:</b> The application may also do
this.</td>
</Row>
<Row>
<td><b>Before:</b> The application did not do this. <b>Now:</b> The
application does this.</td>
</Row>
</test>
t:\>type sharon.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match="ReleaseNote">
<td>
<xsl:analyze-string select="."
regex="Before:|Enhancement:|Informational:|Note:|Now:">
<xsl:matching-substring>
<b><xsl:value-of select="."/></b>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:call-template name="hyperlink"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</td>
</xsl:template>
<xsl:template name="hyperlink">
<xsl:param name="string" select="string(.)"/>
<xsl:analyze-string select="$string" regex="http://[^ ]+">
<xsl:matching-substring>
<a href="{.}" target="new">
<xsl:value-of select="."/>
</a>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
<xsl:template match="@*|node()"><!--identity for all other nodes-->
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
t:\>
--
Possible July/August XSLT/XQuery/XSL-FO training in Oakland/CA/USA
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--