Re: [xsl] Preceding comment() match

Subject: Re: [xsl] Preceding comment() match
From: "Karl Stubsjoen" <kstubs@xxxxxxxxx>
Date: Thu, 21 Dec 2006 16:33:50 -0700
Working perfect ; )
Nothing like self-documenting XSL Docs!

Karl..

On 12/21/06, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote:
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