This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: returning single result from apply-templates
- To: xsl-list at mulberrytech dot com
- Subject: RE: returning single result from apply-templates
- From: DPawson at rnib dot org dot uk
- Date: Tue, 10 Oct 2000 08:30:04 +0100
- Reply-To: xsl-list at mulberrytech dot com
>
> > If I do
> >
> > <xsl:apply-template select="foo//bar[1]"/>
> >
> > I get mutltiple results ...
> > because each <bar> is #1 in its sequence, whereas I really only want
> > the first <bar> from the result sequence.
>
> Do select="(foo//bar)[1]"
Which is not the same as select="foo//bar[1]"
but is the same as select="foo/descendant::bar[1]"/>
Whats the plain English version of this please.
Just what do the () do here?
<quote>NOTE: The meaning of a Predicate depends crucially on which axis
applies. For example, preceding::foo[1] returns the first foo element in
reverse document order, because the axis that applies to the [1] predicate
is the preceding axis; by contrast, (preceding::foo)[1] returns the first
foo element in document order, because the axis that applies to the [1]
predicate is the child axis.</quote>
Pudding and proof etc.
<xsl:template match="/">
&nl; (1)<xsl:apply-templates select="foo//bar[1]"/>
&nl; (2)<xsl:apply-templates select="(foo//bar)[1]"/>
&nl;(3)<xsl:apply-templates select="foo/descendant::bar[1]"/>
</xsl:template>
<xsl:template match="bar">
<xsl:value-of select="name() "/>
</xsl:template>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list