xsl-list
[Top] [All Lists]

Re: How do I capture the text "around" a node?

2002-09-24 07:25:13

Hi Jeni,

I'm beating my head against a wall here, and haven't been able to
work out how to capture the text around a node.

Here is the snippet of xml:

<book isbn="88888">
This book <title>Lord of the rings</title> is often misquoted.
...
</book>

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>


You could use:

  <xsl:apply-templates select="title/following-sibling::text()" />
 

I'm sure I actually tried this.

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 ().

I haven't succeeded so I was tring to just capture the text().

<snip>

Thanks..

But applying the template doesn't allow me to only grab the bits of
the text that I want, namely all the text() with out the chars ().

<xsl:template match="book">
  <xsl:variable name="txtFirst" select='substring-before( ./text(), "(" )' />
  <xsl:variable name="title" select="title"/>
  <xsl:variable name=txtAfter
select='substring-after("title/text()",")" )' />
  <xsl:value-of select="$txtFirst" />
  <xsl:value-of select="title" />
  <xsl:value-of select="$txtAfter" />
</template>


Hope that make more sence..

I tried a zillion combinations of sibling-after, child::preceding etc.

I just can't figure out how to grab that last bit of text: ")

is often misquoted!" with out the ")"

Regards,

Pete.

-- 
                                Due to a lack of imagination, 
                                this signature will remain 
                                under construction indefinitely.

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