Re: [xsl] how to set the pattern to get the node

Subject: Re: [xsl] how to set the pattern to get the node
From: Geert Josten <Geert.Josten@xxxxxxxxxxx>
Date: Tue, 30 Nov 2004 06:32:09 +0100
Hi Que Li,

How I can get the node which parent_ID =1 or parent_ID
is not 1 but No other sibling node List_ID equal to
current node parent_ID

I try to use:
   <xsl:template match="List[Parent_ID=1 or
not(../List[List_ID = current()/Parent_ID])] ">

The value of current() changes during the evaluation of a Path in an XPath expression. It is not pointing to the List element for which the math pattern is being tested.


Besides, you might want to rule out the List element under consideration from the test on the siblings..

You could try the following:

<xsl:template match="List">
  <xsl:variable name="self" select="."/> <!-- current() can be shortened to . -->
  <xsl:choose>
    <xsl:when test="Parent_ID = 1">
      <!-- found a valid case -->
    </xsl:when>
    <xsl:when test="not(preceding-sibling::List[List_ID = $self/@Parent_ID]
                        or following-sibling::List[List_ID = $self/@Parent_ID])">
      <!-- found second valid case -->
    </xsl:when>
    <!-- xsl:otherwise? -->
  </xsl:choose>
</xsl:template>

Cheers,
Geert

Current Thread