RE: [xsl] Conditional extraction of data

Subject: RE: [xsl] Conditional extraction of data
From: Bryan Rasmussen <bry@xxxxxxxxxx>
Date: Mon, 8 Nov 2004 15:53:27 +0100
-- 
Bryan Rasmussen

what I wrote earlier should solve that particular problem, text nodes have a
default template which is like this
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>

this is why you don't actually have to use xsl:value-of to copy text, just
applying templates will copy without doing anything else unless you've
overridden the default template.
example overriding
<xsl:template match="text()"><xsl:text>I'm overriding the default text template
woo-hoo!</xsl:text>
<xsl:value-of select="."/>
</xsl:template>

Quoting "Bradley, Peter" <PBradley@xxxxxxxxxx>:

> Yeah.  This neatly sums up the problems I've been having.  An XPath
> expression always seems to return an entire sub-tree, and it seems to me that
> I just want a single node in this case.  Will xsl-copy give me that?
> 
> Peter
> 
>  -----Original Message-----
> From: 	Geert Josten [mailto:Geert.Josten@xxxxxxxxxxx] 
> Sent:	08 November 2004 14:42
> To:	xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:	Re: [xsl] Conditional extraction of data
> 
> M. David Peterson wrote:
> 
> > ooops!
> > 
> > This portion:
> > 
> > <xsl:value-of select="foo"/> will output: "this is the value of foo"
> > 
> > <xsl:value-of select="foo"/> will output a copy of all the text elements 
> > as well as the elements and there values that are descendants of foo. o
> > 
> > should have read...
> > 
> > <xsl:value-of select="foo"/> will output: "this is the value of foo"
> 
> Not true. xsl:value-of takes the first element from the node-set that results
> from the expression 
> "foo" and converts that to a string. As both sub elements <bar> and <p> are
> _inside_ element <foo>, 
> their textual content is returned as well.
> 
> The output is therefore: "
>     this is the value of foo
>     this is the value of bar.this is the value of a paragraph that is the
> child of bar
> "
> 
> (including new-lines when white-space is preserved)
> 
> > <xsl:copy-of select="foo"/> will output a copy of all the text elements 
> > as well as the elements and there values that are descendants of foo.
> > 
> > Sorry for the confusion!
> > 
> > <M:D/>
> 
> Grtz,
> Geert

Current Thread