RE: returning single result from apply-templates

Subject: RE: returning single result from apply-templates
From: DPawson@xxxxxxxxxxx
Date: Tue, 10 Oct 2000 08:30:04 +0100
> 
> > 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


Current Thread