RE: [xsl] get immediat preceeding node, if it is a comment

Subject: RE: [xsl] get immediat preceeding node, if it is a comment
From: "Liao, John Teguh (John)" <jliao@xxxxxxxxxx>
Date: Mon, 7 Oct 2002 16:38:34 -0400
Hi list, the newbie needs help again ;)

I have something like this:

<table name='table1' etc. etc.>
  <item name='col1' aggrtype="bit" aggrinfo="bit1,bit2,bit3"/>
  <item name="bit1" etc. etc./>
  <item name="bit2" etc. etc./>
  <item name="bit3" etc. etc./>

When my context node is <item name="bit1" ... /> I want to print the
aggrinfo (actually the number of bit names in aggrinfo, but I think I know
to do that, now) if and only if the node before bit1 has aggrtype="bit".
I figured this has to do with using the post below, but when I tried it
it gave me nothing. Here's my xsl:


What did I do wrong?



-----Original Message-----
From: Joerg Heinicke [mailto:joerg.heinicke@xxxxxx]
Sent: Friday, October 04, 2002 7:57 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] get immediat preceeding node, if it is a comment

Andrew Welch wrote:
>>  preceding-sibling::node()[normalize-space()][1][self::comment()]
>>  This will select the first in a list of nodes that return true for
>>  normalize-space() and self::comment().
>>No, that would be
>>What you have,
>>selects the first non-whitespace-text node if it is a comment.
> Sure.  But aren't they both the same (they select the same node)? The
> only difference would be the size of the lists the predicates create?
> (feel free to point out the correct terminology here)

Definitely no.

   <!--   test     -->
   <!--   test     -->

with context test4:

preceding-sibling::node() gets all other test elements and the comments and 
the whitespace only text nodes.

preceding-sibling::node()[normalize-space()] gets all other test elements 
and the comments.

preceding-sibling::node()[normalize-space()][1] gets test3.

preceding-sibling::node()[normalize-space()][1][self::comment()] gets 
nothing, because test3 isn't a comment.

preceding-sibling::node()[normalize-space()][self::comment()] gets all

preceding-sibling::node()[normalize-space()][self::comment()][1] gets the 
comment infront of test3.

But the original poster asked for immediately preceding comments. So only
preceding-sibling::node()[normalize-space()][1][self::comment()] is correct 
- with the danger of empty elements.




System Development
Fon  +49(0)341-979-7419
Fax  +49(0)341-979-7409

VIRBUS hat jetzt als erster deutscher Softwarehersteller die Zertifizierung 
für den 3D Secure-Authentifizierungsstandard "Verified by Visa" erhalten. 
Details unter

 XSL-List info and archive:

 XSL-List info and archive:

Current Thread