Re: [xsl] first of type element position

Subject: Re: [xsl] first of type element position
From: "Sébastien Tisserant" <stisserant@xxxxxxxxxxxxxxx>
Date: Tue, 12 Mar 2002 11:42:59 +0100
thanks jeni,

your propositions work.  

but is it possible with indicating the position and the element name in the test
like this:
<xsl:if test=".[self::TOC.SECT][position()!=1]">

i have already use *[self::TOC.SECT][1] (with the same kind of problem) in a template match and it worked well.

thanks again for your always detailed and rich explanations.

Sébastien


>>> Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> 03/12/02 11:18 >>>
Hi Sébastien,

> <xsl:if test="position()!=1"> doesn't work because, i think, the
> first element <TOC.SECT> is in position()=2. and <TI.TOC> in
> position()=1.

You can test whether the TOC.SECT has a preceding sibling TOC.SECT
element:

  <xsl:if test="preceding-sibling::TOC.SECT">
    <!-- not the first TOC.SECT element -->
    ...
  </xsl:if>

Or you could change the way that you apply templates to the elements,
so that the position() test would work. If you did:

<xsl:template match="RP.TOC">
  ...
  <xsl:apply-templates select="TI.TOC" />
  <xsl:apply-templates select="TOC.SECT" />
  ...
</xsl:template>

Then in the template matching the TOC.SECT elements, the set of nodes
to which you were applying templates would only contain TOC.SECT
elements, and the node in position 1 would be the first of those
TOC.SECT elements.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/ 



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


Current Thread