Re: [xsl] Preceding comment() match

Subject: Re: [xsl] Preceding comment() match
From: "Karl Stubsjoen" <kstubs@xxxxxxxxx>
Date: Thu, 21 Dec 2006 16:55:42 -0700
I probably shouldn't go here...
so, now that I am self-documenting these comments, I'd like to create
line breaks for the web, where line break occur naturally in my
comments, so:

<!--
  these are comments
  with line breaks
  should output to browser with
  these line breaks.
-->

Currently, this:

<xsl:value-of select="preceding-sibling::node()[not(self::text()[not(normalize-space())])][1][self::comment()]"/>

Produces no line breaks.  If I include <br/>(s) in the above comments
and add disable-output-escaping="yes" to my value-of... I get the line
breaks, but who wants to add these "unnatural" html elements to these
comments!

Any hints?



On 12/21/06, Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
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