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./> </table> 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 how 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: <xsl:if test="preceding-sibling::node()[normalize-space][1]/@aggrtype='bit'"> <xsl:value-of select="preceding-sibling::node()[normalize-space][1]/@aggrinfo"/> </xsl:if> What did I do wrong? thanks! J.L. -----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 >> >>preceding-sibling::node()[normalize-space()][self::comment()][1] >> >>What you have, >>preceding-sibling::node()[normalize-space()][1][self::comment()] >> >>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. <root> <!-- test --> <test1>test</test1> <test2>test</test2> <!-- test --> <test3>test</test3> <test4>test</test4> </root> 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 comments. 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. Regards, Joerg -- System Development VIRBUS AG Fon +49(0)341-979-7419 Fax +49(0)341-979-7409 joerg.heinicke@xxxxxxxxx www.virbus.de VIRBUS hat jetzt als erster deutscher Softwarehersteller die Zertifizierung für den 3D Secure-Authentifizierungsstandard "Verified by Visa" erhalten. Details unter http://www.virbus.de/de/press/pressemitteilung/20020828_verified_by_VISA. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] get immediat preceeding n, David Carlisle | Thread | Re: [xsl] get immediat preceeding n, Joerg Heinicke |
Re: [xsl] Add an element to the res, Joerg Heinicke | Date | Re: [xsl] get immediat preceeding n, Joerg Heinicke |
Month |