xsl-list
[Top] [All Lists]

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

2002-09-24 06:45:51

Hi,

Text handling like this is always (imho) a little confusing.  The simple
answer is to use xsl:apply-templates as this will hit all the child
text() nodes, not just the first(ala value-of).

As a good-practice rule, you should always use apply-templates over
value-of (where possible) for a number of reasons, with the biggest
probably being that template match=text() gets called.

cheers
andrew 

-----Original Message-----
From: Peter Lavender [mailto:plaven(_at_)bigpond(_dot_)net(_dot_)au]
Sent: 24 September 2002 14:27
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] How do I capture the text "around" a node?


Hi Everyone,

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>

Now I have tried to work out how, but failed miserably and would
appreciate some help, or even better an explaination as to why/how to
do this.

Here is my attempt to do it:

<xsl:template match="book">
      
      <fo:block font-size="12pt" font-family="serif" 
line-height="16pt">
            
<xsl:variable name="txtFirst" select='substring-before( 
/book/text(), "(" )' />
            <xsl:value-of select="$txtFirst" />
            <xsl:value-of select="title" />
            <xsl:text>After this is something:</xsl:text>
            <xsl:value-of select="/child::title/child::text()" />
  
     </fo:block>
        
</xsl:template>

When I do just variable name="txt" select="text()" i only get all text
up to the title tag.  How can I get the text after the title node?



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



---
Incoming mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.391 / Virus Database: 222 - Release Date: 19/09/2002
 


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.391 / Virus Database: 222 - Release Date: 19/09/2002
 

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