Re: [xsl] Preceding comment() match

Subject: Re: [xsl] Preceding comment() match
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 21 Dec 2006 17:43:50 -0500
Karl,

Please double check your code. I would expect "every preceding element's first comment tag" to be "preceding-sibling::*/comment()[1]" (note extra step). The expression you provided us, "preceding-sibling::comment()[1]", would select the first preceding (sibling) comment.

If you want the first preceding node, but only if it's a comment, that would be

preceding-sibling::node()[1][self::comment()]

but note that whitespace-only text nodes can impede that.

Working around those would be

preceding-sibling::node()[not(self::text()[not(normalize-space()])]
                         [1][self::comment()]"

... which I know is a monster, but there you have it.

Cheers,
Wendell

At 04:53 PM 12/21/2006, you wrote:
I need to match the first comment() preceding the current context.

So from:

<!--
this is the comments, first preceding
-->
<xsl:template name="example">

</xs:template>


Assuming that this xpath should work: <xsl:value-of select="preceding-sibling::comment()[1]"/>

But instead, I am matching on every preceding elements first comment
tag.  I just need "your" comment tag, and if you don't have one, then
nevermind.

Please help.

Karl..


======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================

Current Thread