| Subject: Re: [xsl] How do I capture the text "around" a node? From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Tue, 24 Sep 2002 15:50:23 +0100 | 
Hi Peter,
> Acutally, I should have added a bit more:
>
> <?xml version="1.0" ?>
> <book isbn="1234567890">
> Its title (<title>The Lord of the Rings</title>)
> is often misquoted!
> <author>J R R Tolkien</author>
> ...
> </book>
[snip]
> What I'm trying to do is actually capture the text using variables
> and substring-before and substring after, to get rid of the chars
> ().
Right. If you don't really care about retaining the structure (the
<title> and <author> elements) in the <book>, then the simplest thing
is just:
<xsl:template match="book">
  <xsl:value-of select="translate(., '()', '')" />
</xsl:template>
If you do want to keep the structure in some way, the best thing to do
is to use xsl:apply-templates and then use templates that remove ()s
from text nodes. So do:
<xsl:template match="text()">
  <xsl:value-of select="translate(., '()', '')" />
</xsl:template>
If you want to make sure that you're only removing a ( at the end of a
text node that's immediately followed by a title element or at the
beginning of a text node that's immediately preceded by a title
element, then do something like:
<xsl:template match="text()[preceding-sibling::*[1][self::title] and
                            starts-with(., ')')]">
  <xsl:value-of select="substring-after(., ')')" />
</xsl:template>
<xsl:template match="text()[following-sibling::*[1][self::title] and
                            not(substring-after(., '('))]">
 <xsl:value-of select="substring-before(., '(')" />
</xsl:template>
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] How do I capture the text, Peter Lavender | Thread | Re: [xsl] How do I capture the text, Trevor Nash | 
| RE: [xsl] How do I capture the text, Passin,Thomas B. (To | Date | RE: [xsl] images and captions, Andrew Welch | 
| Month |