This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: How do I capture the text "around" a node?
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 24 Sep 2002 17:01:25 +0100
- Subject: RE: [xsl] How do I capture the text "around" a node?
- Reply-to: xsl-list at lists dot mulberrytech dot com
I'm not sure what result you want.
If you want:
"This book Lord of the rings is often misquoted."
then you can just get it as the string-value of the <book> element.
i.e., with <book> as the context node, it is string(.).
If you want
"This book is often misquoted."
then it's best to use template rules - these are always a good idea when
handling mixed content.
<xsl:variable name="top-level-text">
<xsl:apply-templates select="text()"/>
</xsl:variable>
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of
> Peter Lavender
> Sent: 24 September 2002 14:27
> To: XSL-List@lists.mulberrytech.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
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list