[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: element nodes in a string?

Subject: RE: element nodes in a string?
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Fri, 25 May 2001 14:54:47 +0100
xsl tildes
The title explains the problem: you can't have element nodes in a string. To
achieve what you're after, I think you'll have to use result tree fragments
rather than strings; and because you need to process the result tree
fragments, you'll need to use the node-set() extension function.

>
> My approach is to chain together a bunch of calls to a
> standard replace-substring template:
>
> <!-- convert two hyphens into an em dash -->
> <xsl:variable name='temp2'>
> 	<xsl:call-template name='replace-substring'>
> 		<xsl:with-param name='text' select='$temp1'/>
> 		<xsl:with-param name='from' select='$dash'/>
> 		<xsl:with-param name='to'>&#8212;</xsl:with-param>
> 	</xsl:call-template>
> </xsl:variable>
>
> <!-- convert tab characters into two &nbsp;'s -->
> <xsl:variable name='temp3'>
> 	<xsl:call-template name='replace-substring'>
> 		<xsl:with-param name='text' select='$temp2'/>
> 		<xsl:with-param name='from' select='$tab'/>
> 		<xsl:with-param
> name='to'>&#160;&#160;</xsl:with-param>
> 	</xsl:call-template>
> </xsl:variable>
>
> I then call a template which converts _underscored
> text_ into <U>underscored text</U>.  This works just
> fine.  I also have a similar template which converts
> ~text within tildes~ to <I>text within tildes</I>.
>
> The problem is that I can't do both of them.  When I
> pass the output of the underline template into the
> italicize template, the <U> and </U> are stripped out
> and I am left with just the <I>...</I> tags.
>
> I think this is because my italicize template calls
> substring-before and substring-after, and these string
> functions convert their arguments to strings, which
> effectively strips out whatever markup I have in
> place.
>
Correct. (If you really are a newbie, you're a fast learner). You could of
course process each of the text nodes in the result tree fragment
separately; the problem is that the <I>-markers may be in different text
nodes. The only answer to this is to work from the outside-in: the first
markers you process must be those that aren't contained in any other marker.

I'm inclined to agree with other respondents who have suggested that this is
the time to look for other tools in your kitbag. XSLT is designed for
processing files that use XML markup, it's not very good at handling files
containing non-XML markup!

Mike Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.